Hallo,
habe vor kurzer Zeit angefangen Controller mit C zu programmieren. Ich arbeite gerade das Tutorial (http://www.mikrocontroller.net/artic...R-GCC-Tutorial) durch und bin bei UART angekommen.
Mein Testboard hat einen Mega32 mit 16mhz Quarz. Und natürlich die übliche Beschaltung für den UART. Ich weiß, dass die Schaltung funktioniert, da ich früher einen Bascom Code drauf laufen hatte, der ebenfalls eine UART Ausgabe hatte.
Mit folgendem Programm versuche ich ein Zeichen auszugeben:
Leider gibt das so kein Zeichen aus, nur wenn ich Spannung anlege erhalte ich kurz Buchstabensalat im Terminal. Woran könnte das liegen, was mache ich falsch?Code:#include <avr/io.h> #include <inttypes.h> #ifndef F_CPU #define F_CPU 1600000L // Systemtakt in Hz, das L am Ende ist wichtig, NICHT UL verwenden! #endif #define BAUD 9600L // Baudrate, das L am Ende ist wichtig, NICHT UL verwenden! // Berechnungen #define UBRR_VAL ((F_CPU+BAUD*8)/(BAUD*16)-1) // clever runden #define BAUD_REAL (F_CPU/(16*(UBRR_VAL+1))) // Reale Baudrate int main(void) { while(1) { UCSRB |= 1<<(TXEN); // UART TX einschalten UCSRC |= 1<<(URSEL)|(3<<UCSZ0); // Asynchron 8N1 UBRRH = UBRR_VAL >> 8; UBRRL = UBRR_VAL & 0xFF; DDRA = 0xff; // Test LEDs PORTA = 0xff; while (!(UCSRA & (1<<UDRE))) /* warten bis Senden moeglich */ { } UDR = 'x'; } return 0; }








Zitieren
Lesezeichen