Hallo, meine ersten Gehversuche mit einem ATTINY 2313 und seinem UART sind bis auf ein Problem erfolgreich. Beim Senden eines ASCII Strings aus dem Programmspeicher an den PC werden die letzten beiden Zeichen falsch gesendet. String zu Senden: .db 27,"Test der RS232-Schnittstelle",13,0,0 im Terminal empfangen: <27>Test der RS232-SchnittstellÙÃ Terminalprogramm: HTerm 0.6.5 beta Quarz: 14,31818 MHz UBRR: 185 (4800 Baud) 8 Datenbits 1 Stopbit Parität keine Unabhängig von der Länge des Strings werden die letzten Zeichen falsch übertragen. Fuses sind richtig gesetzt, AVR läuft mit der richtigen Freuqenz. Bei anderen Baudraten zeigt sich das selbe Ergebnis. Übertragung funktioniert bis 28.8KBaud! Was ist hier falsch? Ein Auszug aus dem Code ist im Anhang. Grüße, Sebastian
was ist bei dir t0? soweit ich weiß kann der lpm befehl sachen nur nach r0 laden?! µLuxx
µluxx .. wrote: > was ist bei dir t0? > soweit ich weiß kann der lpm befehl sachen nur nach r0 laden?! Nö. Es gibt zwar eine Variante, bei der lpm ohne Parameter aufgerufen wird, und dabei ist das Ziel r0, aber der Tiny2313 kann auch die Varianten mit Parametern. Und da ist die Syntax korrekt.
Hi, Sebastian, was passiert in Deinem Programm, nachdem es das letzte Zeichen in UDR geschrieben hat? Es darf nichts passieren, was die Übertragung stört, denn in dem Moment ist ein Zeichen noch unterwegs, und das andere ist gerade zum Absenden vorbereitet. Beispiel RS-485, halbduplex: Da frage ich erst das Transmit Complete (oder so ähnlich) ab, bevor ich wieder auf Empfang schalte. ciao Wolfgang horn
Nach dem letzten Zeichen (Auswertung der 0) springt das Programm per ret zurück in eine 5 Sek Schleife, die eine LED blinken lässt, von da aus das Senden gestartet wird. Das mit dem lpm und Parametern weiß ich auch erst seit heute als ich mir im Datenblatt die Instructionset des 2313 durchgelesen hatte. :) Hatte den code blind kopiert und mich gewundert, daß es trotzdem funktioniert.
Ich habe den Fehler gefunden! Der Tip "Was passiert danach" hat geholfen! Nach dem Rücksprung lief das Programm ins Lehre bzw. in die folgende Senderoutine. Also Augen auf beim wilden Hüpfen... Danke für den Tip Wolfgang!
Sebastian Enz wrote: > Ich habe den Fehler gefunden! > Der Tip "Was passiert danach" hat geholfen! Nach dem Rücksprung lief das > Programm ins Lehre bzw. in die folgende Senderoutine. > Also Augen auf beim wilden Hüpfen... Und demnächst vielleicht sofort den kompletten Code schicken und nicht nur so einen Schnipsel! Ich weiß echt nicht, warum das immer wieder gesagt werden muss...
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.