Hi Ja, ich schon wieder :-) Ich hab ein Problem mit der gaanz einfachen UART-Routine aus dem Tutorial. uart_initialisieren(19200); loop_until_bit_is_set(UCSRA,UDRE); //Bereit zum Senden? UDR='-'; //Sende loop_until_bit_is_set(UCSRA,UDRE); //Bereit zum Senden? UDR='+'; //Sende uart_senden("Ready to goyes"); Das minus kommt an, das plus kommt an, der Text nicht. Daher mal mein uart_senden Routine: void uart_senden2(unsigned char zeichen) { loop_until_bit_is_set(UCSRA,UDRE); //Bereit zum Senden? UDR=zeichen; //Sende } void uart_senden(char *zeichen) { while (*zeichen) { uart_senden2(*zeichen); zeichen++; } } Das ist quasi genau das, was im Tutorial steht und auch das gleiche, was ich mit dem - und + manuell ohne Probleme ausführe. Ich versteh nicht mehr, woran kann das liegen? Ciao Tobias
Wow, ich habs gefunden... Das muss man aber auch wissen!?!? Ich bin dafür, das wird im Tutorial aufgenommen! Vielleicht kann ja auch noch einer erklären, warum das so ist? Auf jeden Fall kommt nix an, bevor ich nicht einmal \r\n an den PC gesendet habe... Ciao Tobias
Das hängt davon ab, wer am anderen Ende der Leitung lauscht. Das Problem ist nicht das senden, sondern was das Programm am anderen Ende der Leitung macht. Ein Terminalprogramm sollte eigentlich schon Zeichen ausgeben wie sie reinkommen. Wenn am anderen Ende allerdings ein C Programm hängt, dass auf die Daten von der Seriellen wartet: Es ist durchaus üblich, dass die C-Runtime auf einem PC einen Zwischenbuffer benutzt um dort erst mal die Zeichen zu sammeln und erst bei Eintreffen eines Carriage Return die Zeichen an das eigentliche Programm weitergibt.
Hi Es handelt sich um das Windows Hyper Terminal aus XP SP2. Komischerweise gibt es Zeichen einzeln aus, aber Strings erst, wenn VORHER ein Carriage Return gesendet wurde. Danach bringt auch nix, dann funktioniert erst der nächste String. Obwohl Strings ja auch nur aneinandergereihte einzelne Zeichen sind. Wirklich sehr verwunderlich. Ciao Tobias
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.