Hey, vllt. sieht einer von euch meinen Fehler:) Möchte am UART1 eines ATMEGA2560 einen DMX Transmitter betreiben. Siehe angehängten Code.Ganz einfach gestrickt,kein Interrupt. Mit dem Scope konnte ich feststellen,das das Signal sauber aus dem UART kommt,auch am RS485 Treiber alles bestens,bis auf die Tatsache,das das Reset frame was ja 88us im DMX Protokoll sein sollte,nur die Hälfte lang ist,d.h 44us,so,als ob er meine Baudrateumschaltung nicht mitbekommt.Hat einer von euch eine Idee woran das liegt?
Schau dir mal den erzeugten Assembler code vom avr-gcc an... das ding hat da nen blöden bug und ignoriert das 1te setzen des registers....zumindest hatte das selbe problem mit dem senden eines DMX Frames... Als einfache Lösung kannst du die USART deaktivieren und den Pin kurz "per Hand" auf setzen...
Du darfst an dieser Stelle nicht das UDRE1 Bit benutzen um festzustellen, ob du die Baudrate schon umstellen kannst, sondern musst auf das TXC Bit zurueckgreifen. Hintergrund: das UDR Register ist doppelt gepuffert. UDRE wird dir schon gemeldet, wenn du in den Buffer schreiben kannst (der also bereits das naechste Zeichen aufnehmen kann). Das bedeutet aber nicht, das das momentan gerade rausgetaktete Zeichen schon komplett aus der UART draussen ist.
:
Bearbeitet durch User
Hallo Karl Heinz, danke für den Hinweis,habe mir grad nochmal das Blockschaltbild angesehen. Hast vollkommen Recht. Vielen Dank!!
Stefan W. schrieb: > Hallo Karl Heinz, > danke für den Hinweis,habe mir grad nochmal das Blockschaltbild > angesehen. > Hast vollkommen Recht. > > Vielen Dank!! Im Datenblatt, Abschnitt 22.4 ist es beschrieben
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.