Hi! Hab da so ein Problem. Ich würde gerne ein Zeichen vom Terminal (PC) senden und dieses dann auf einem LCD am atmega8 ausgeben. Nur leider funktioniert das nicht. Habe schon Zeichen vom yC zum Terminal gesendet, das funktioniert gut. Die Display Ausgabe habe ich auch getestet, diese funktioniert auch. Hier mein Quellcode: #include <stdlib.h> #include <avr/io.h> // Einbindung der allgemeinen "io.h" Header-Datei #include <avr/wdt.h> #include "lcd.h" long i=0 ; double a=0; double x=0; char zzz[30]; unsigned char c; /* Zusaetzlich zur Baudrateneinstellung und der weiteren Initialisierung: */ void Usart_EnableRX(void) { UCSRB |= ( 1 << RXEN ); } /* Zeichen empfangen */ unsigned char uart_getc(void) { while (!(UCSRA & (1<<RXC))) // warten bis Zeichen verfuegbar ; return UDR; // Zeichen aus UDR an Aufrufer zurueckgeben } void initUart() { UBRRL = 11; UCSRB = 8; } void putChar (char data) { while (!(UCSRA &32)); UDR=data; } void print (char buffer[]) { for (int f=0; buffer [f] != 0; f++) putChar (buffer[f]); } void main( void ) // Die Funktion "main" wird aufgerufen, { // es wird kein Wert mitgegeben (void) // es wird kein Wert zurückgegeben ("void" vor main) initUart(); lcd_init(); lcd_on(); lcd_clear(); while ( 1 ) // Endlosschleife, { Usart_EnableRX(); c=uart_getc(); lcd_write_s(c); } } Vielleicht fällt euch ja der Fehler auf ... Bin um jeden Tipp dankbar. mfg Luk
Hallo Luk, Du hast leider einige Angaben nicht gemacht. Es wäre z.B. wichtig zu wissen mit welchem Takt Dein µC läuft. Auch ob Du einen externen Quarz oder den internen Takt verwendest. Beim internen Takt kann es beim UART zu Problemen kommen, da er recht ungenau ist. Man kann ihn zwar kalibrieren, ich würde bei UART aber immer zu einem externen Quarz raten. Kontrolliere mal ob Deine Baudrate passt (Seite 159 ff ). Und ich, bzw. der µC, vermissen die Angaben über Datenbits, Parität und Stopbit. Seite 139: /* Set frame format: 8data, 2stop bit */ UCSRC = (1<<URSEL)|(1<<USBS)|(3<<UCSZ0); (Ich verwende z.B. für 8DatenBits,KeineParität,1StopBit UCSRC=0x86) Schau mal ob Dir das weiter hilft. Gruß Florian
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.