Hallo, ich versuchte gerade die Uart Bibliothek von Peter Fleury zu verwenden. Homepage: http://jump.to/fleury unter AVR-Software (UART Library) Wollte nur die empfangenen Zeichen am LCD ausgeben, funktioniert aber überhaupt nicht. Meine LCD Routinen funktionieren zuverlässig, wurden schon oft verwendet. Stimmt die Initialisierung nicht? Code #include "uart.h" // Serielle Schnittstelle #define xtalcpu 18432000L #define baudrate 57600 // Uart initialisieren uart_init(baudrate); while(1) { // Hauptschleife setze_cursor(0,2); // cursor in 2 Zeile setzen Uart_zeichen = uart_getc(); // zeichen und status speichern while ( !(Uart_zeichen & 0xFF00) ) { zeichen = Uart_zeichen & 0xFF; lcd_daten(zeichen); // zeichen auf LCD ausgeben _delay_ms(50);_delay_ms(50);_delay_ms(50);_delay_ms(50); Uart_zeichen = uart_getc(); } } Was mache ich falsch? Bitte um hilfreiche Beiträge Werner P.S wie kann ich die Baudrate auf 115200 stellen ? ist ja nur ein unsigned int in der uart_init?
Werner wrote: Was kann man sich unter > Wollte nur die empfangenen Zeichen am LCD ausgeben, funktioniert aber > überhaupt nicht. vorstellen? Dir ist schon klar, dass du fast alle empangenen Zeichen an Position 0, 2 ausgeben wirst? Ich würde das Testprogramm so schreiben
1 | // sicherheitshalber ein U um die 57600 definiert zu einem unsigned
|
2 | // zu machen
|
3 | #define baudrate 57600U
|
4 | |
5 | ...
|
6 | |
7 | // Uart initialisieren
|
8 | uart_init(baudrate); |
9 | |
10 | setze_cursor(0,2); // cursor in 2 Zeile setzen |
11 | |
12 | while(1) { // Hauptschleife |
13 | |
14 | unsigned int Uart_zeichen = uart_getc(); // zeichen und status speichern |
15 | |
16 | if( (Uart_zeichen & 0xFF00) == 0 ) { |
17 | zeichen = Uart_zeichen & 0xFF; |
18 | lcd_daten( zeichen ); // zeichen auf LCD ausgeben |
19 | }
|
20 | }
|
21 | |
22 | }
|
Ansonsten: Schon mal die Checkliste hier durchgegangen: http://www.mikrocontroller.net/articles/AVR_Checkliste#UART.2FUSART > > P.S wie kann ich die Baudrate auf 115200 stellen ? ist ja nur ein > unsigned int in der uart_init? Das wirds dann wohl nicht spielen.
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.