Hallo Leute, ich habe da ein Problem. ich möchte die Serielle schnittstelle für eine gewisse Zeitabschalten. Ich sende derzeit vom Mikrocontroller Daten zum PC dies mache ich in dem ich immer wenn das UDR Register leer ist etwas neues reinschreibe.Hierfür gibt es einen passenden Intterupt: jetzt bin ich hingegangen und habe diesen und dann anshcliessend den kompletten sendeinterrupt gespeert: So: UCSR1B &= ~( 1 << UDRIE1 ); UCSR1B &= ~(1<<TXEN1); Nachdem ich nun aber den Interrupt wieder einschalte mit: UCSR1B |= (1<<TXEN1); UCSR1B |= ( 1 << UDRIE1 ); bekomme ich durchgehend nullen und zwischendrin meine daten übertragen. Woran liegt das und wer kann das Problem lösen. Danke im Vorraus euer Hans
der TXC-Interrupt wird ja ausgelöst, wenn entsprechend das TXC-flag in UCSR1A gesetzt ist. gelöscht wird das entweder durch den Aufruf des Interruot oder durch das schreiben von EINS an die entsprechende Stelle...UCSR1A |= (1<<TXC); Warum dein Interrupt immer nullen sendet wird wohl an der Interruptfunktion an sich liegen!? mfg TheMiB
Hmm an der Funktion die etwas in den Buffer hineinschreibt meinst du ?. Das kann ich mir eigentlich nicht vorstellen werde es aber sofort mal testen :). Danke für den ersten Tipp. Gruß Hans
Hans Klemer wrote:
1 | > UCSR1B &= ~(1<<TXEN1); |
Das ist Quatsch mit Soße. Damit wird der Pin wieder ein IO-Pin und der ist nach nem Reset auf 0. Wenn Du nichts senden willst, schreib eben nichts ins Senderegister und gut is. Peter
Hi danke, das Problem ist dann aber das immer ein paar bytes verloren gehen warum auch immer. Hast du da eine Idee ?
Hans Klemer wrote: > Hi danke, das Problem ist dann aber das immer ein paar bytes verloren > gehen Wenn Bytes verloren gehen, werden sie entweder nicht gesendet oder der Empfänger ist nicht bereit (Pufferüberlauf). Peter
Das dachte ich auch aber warum sollten Sie nicht gesendet werden wenn ich den Buffer EmptyInterrupt abschalte. An der Empfangsseite kann es nicht liegen
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.