Hallo, ich bin relativ neu auf dem gebiet der avr Progrmmierung, hab bis jetzt durch das gute Tutorial alles verstanden. Als ich dann das senden mit dem UART probierte hab ich es aber nich zum laufen bekommen. Baudrate stimmt am Hyperterminal mit dem avr überein. Könnt ihr mir vieleicht sagen wo der Fehler liegt? Code: #include <avr/io.h> #include <stdint.h> #ifndef F_CPU #define F_CPU 1000000 #endif #define UART_UBRR_CALC(BAUD_,FREQ_) ((FREQ_)/((BAUD_)*16L)-1) #define UART_BAUD_RATE 9600 int main(void) { UBRRH = (uint8_t)( UART_UBRR_CALC( UART_BAUD_RATE, F_CPU ) >> 8 ); UBRRL = (uint8_t)UART_UBRR_CALC( UART_BAUD_RATE, F_CPU ); while (!(UCSRA & (1<<UDRE))) {} UDR = 'x'; }
haste in den registern UDR und USR die bits passend gesetzt? sieht ja nicht so aus
Danke für den Tipp. Jetzt sendet er zwar an den PC aber nicht das was er sollte. stadt "x" sendet er nun eine "8". Der Code sieht jetzt so aus: int main(void) { UCSRB |= (1<<TXEN); UCSRC |= (1<<URSEL)|(3<<UCSZ0); UBRRH = (uint8_t)( UART_UBRR_CALC( UART_BAUD_RATE, F_CPU ) >> 8 ); UBRRL = (uint8_t)UART_UBRR_CALC( UART_BAUD_RATE, F_CPU ); while (!(UCSRA & (1<<UDRE))) {} UDR = 'x'; }
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.