Moin Leute, habe ein Problem ein Zeichen zu empfangen. Ich sende mit dem Hypertermial ein zeichen indem ich es in die Plattform über die Tastatur eingebe aber mein Programm geht nicht über die Abfrage ob ein Zeichen verfügbar ist hinaus. Kann mir jemand bei diesem Problem weiter helfen? hier der Code: void inti_uart(){ UBRR0H = UBRRH_VALUE >> 8; UBRR0L = UBRRL_VALUE & 0xFF; UCSR0B |= (1<<RXEN0); // Sendestatus UCSR0C = (0<<UMSEL00)| //EinstellungAsynchronmodus (0<<UMSEL01)| (0<<UCSZ02) | (1<<UCSZ01) | (1<<UCSZ00) ; } int main(void){ DDRD &= ~(1<<0); DDRC = (1<<3)|(1<<4); PORTC = (1<<3)|(1<<4); PORTD &= ~(1<<0); char led_on=0; inti_uart(); while (!(UCSR0A & (1<<RXC0))) // wartet bis Zeichen verfügbar ist ; PORTC ^= (1<<3); led_on = UDR0; if (led_on == 0) {PORTC ^= (1<<4); } while(1) { } } P.S. Das senden habe ich in einen anderen Programm mit den gleichen Einstellungen getestet und es klappt. Also die Verbindung sich Terminal und Controller ist in Ordnung.
> if (led_on == 0)
du wirst dir schwer tun, ein Zeichen mit dem ASCII Wert 0 über
Hyperterminal zu versenden. :-)
if (led_on == '0')
Danke aber bis dahin kommt das Programm garnicht, denn die Prüfled nach der Abfrage geht nicht an. Woran kann es liegen?
Dann wird er wohl hier in der Schleife hängen while (!(UCSR0A & (1<<RXC0))) // wartet bis Zeichen verfügbar ist ; Hast du im Hperterminal das Handshake ausgeschaltet bzw. mit einer LED am Tx Pin des µC kontrolliert, ob etwas ankommt?
ich habe gerade mal nachgemessen also wenn ich sende habe ich kein high am TX Pin aber was mache ich da falsch? Beim HTerminal habe ich das lokale Echo eingestellt damit ich sehe was ich sende
Kevin schrieb: > ich habe gerade mal nachgemessen also wenn ich sende habe ich kein high > am TX Mein Fehler. Natürlich am Rx Pin vom Prozessor. Dort endet ja die Strecke die vom PC zum µC führt.
habe es einfach mal mit einem anderen Terminalprogramm versucht und da hat gleich alles funktioniert. danke für deine Hilfe
Schätze mal du bist über das hier
> Hast du im Hperterminal das Handshake ausgeschaltet
gestolpert.
Im Hyperterminal ist standardmässig als Flusskontrolle (also als
Handshake) "Hardware" eingestellt. D.h. wenn du dem PC den CLS Eingang
an der seriellen nicht bedienst, sendet der nix. Flusskontrolle auf
"keines" umstellen sollte den Spuk beseitigen.
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.