سلام!
بعد از تلاشهای فراوان نحوه استفاده از دستور sprintf رو توی atmel studio فهمیدم ! حالا با کدهای زیر که خیلیم خوب کار میکنه متاسفانه یه مشکله بزرگ دارم!
هر تابعیرو که توی while تابع main و یا حتی اول تابع فراخوانی میکنم متاسفانه usart متوقف میشه م دیگه چیزی سند نمیکنه ! متاسفانه نمیدونم این مشکل از چیه حسابی داره آزارم میده ! از دوستان کسی به winavr مسلط هست ؟ کدمو میزارم :
مثلا تابعی مثل تابع زیر با فراخوانی در تابع main موجب توقف کار میشه!
کد اصلیه بنده ستاپ اولیه سنسور mpu6050 با i2c هست که حتی این تابعروهم نمیتونم فراخوانی کنم !
بعد از تلاشهای فراوان نحوه استفاده از دستور sprintf رو توی atmel studio فهمیدم ! حالا با کدهای زیر که خیلیم خوب کار میکنه متاسفانه یه مشکله بزرگ دارم!
هر تابعیرو که توی while تابع main و یا حتی اول تابع فراخوانی میکنم متاسفانه usart متوقف میشه م دیگه چیزی سند نمیکنه ! متاسفانه نمیدونم این مشکل از چیه حسابی داره آزارم میده ! از دوستان کسی به winavr مسلط هست ؟ کدمو میزارم :
کد:
void USART_Init( unsigned int ubrr) { UBRRH = (unsigned char)(ubrr>>8); UBRRL = (unsigned char)ubrr; UCSRB = (1<<RXEN)|(1<<TXEN); UCSRC = (1<<URSEL)|(1<<USBS)|(3<<UCSZ0); } void USART_Transmit( unsigned int data ) { while ( !( UCSRA & (1<<UDRE)) ); UDR = data; } static int uart_putchar(char c, FILE *stream); static FILE mystdout = FDEV_SETUP_STREAM(uart_putchar, NULL,_FDEV_SETUP_WRITE); static int uart_putchar(char c, FILE *stream) { if (c == '\n') uart_putchar('\r', stream); loop_until_bit_is_set(UCSRA, UDRE); UDR = c; return 0; } int main(void) { USART_Init(MYUBRR ); char buff[100]; double arash=121.2; stdout = &mystdout; while(1){ sprintf(buff,"%f",arash); puts(buff); } }
کد اصلیه بنده ستاپ اولیه سنسور mpu6050 با i2c هست که حتی این تابعروهم نمیتونم فراخوانی کنم !
کد:
void nothing(){ while(1){ arash+=1; }
دیدگاه