Ich möchte einen DMX-Empfänger mit einem XMega realisieren. Ich benutze dafür das Atmel Xplained A1 Eval-Board, auf dem ein ATXmega128-A1 läuft. Die DMX-Daten werden mit dem SN75176 von RS-232 zu TTL "konvertiert". Da der SN75176 5V braucht, kann ich den nicht über den µC versorgen, das mache ich extern. Der Ausgang des ICs geht an den PIN2 von PORTC - der Eingangsport von USARTC0. Allerdings empfange ich nur Bytes mit eher zufälligem Inhalt. DMX enthält 2 Stopp-Bits. Das kann man zwar nicht einstellen, wird aber laut Datenblatt vom µC ignoriert. Mit einem älteren ATMega klappt alles wunderbar. Programm ist angehängt, wäre toll, wenn mir jemand helfen könnte. Danke!
also: 1. DMX/RS485 != RS232 (ist sonst etwas verwirrend) 2. Wie stabil ist deine Versorgung ? 3. Läuft dein Xmega auch wirklich mit 32 MHz ? 4. Wie stabil sind die ? 5. Wie ist das Gefälle in den Logikpegeln 5V->3,3V realisiert ?
Versorgung kommt von einem STK500 mit stabilen 4,93V. Ein Oszilloskop hab ich leider gerade nicht da, um den Takt zu überprüfen. Bei der letzten Frage bin ich mir eben nicht sicher. Brauche ich da zwingend einen anderen IC oder einen Widerstand? Bei LVTTL ist V_IH doch größer gleich 2V oder?
Ich habe eine eigentlich sehr wichtige Sache ganz vergessen. Und zwar empfange ich nie alle 512 Kanäle, obwohl alle gesendet werden. Wenn ich beim Frame-Error das Programm anhalte, ist der ChannelCounter nicht bei 512, sondern immer viel weiter davor (z.B. schon bei 6 oder auch bei 300).
Der Empfänger setzt seinen Ausgang auf 5V wenn er High sagen will. Der Avr hat interne Body-Dioden die versuchen das auf 3,3 V zu begrenzen. Das wird vmtl. dein prob sein. Da fließt viel Strom und destabilisiert das ganze. Bau da mal einen Spannugnsteiler aus zwei Widerständen (oder als Test einfach nur ein Poti das man richtig dreht) ein. Du wirst sehen da wird gleich einiges viel schöner ^^
die Port-Pins vom Xmega sind NICHT 5V-kompatibel! Der maximale High-Pegel ist die Betriebsspannung des Xmega. Beim Xplained Board also das Maximum von 3,3V. ich würde statt des Dinos SN75176 einen RS485-Receiver mit 3,3V Versorgung nehmen, das vermeidet das Problem im Ansatz. Außerdem sind die modernen Receiver viel stromsparender.
Meiner Erfahrung nach ist der XMega 128xx völlig ungeeignet (vor allem mit dem internen Quarz betrieben) die 250 KBaud exakt zu erzeugen. Die Uarts sind auch völlig ungeeigent, einen sauberen Break zu erzeugen. Diese lassen sich, einmal gestartet, weder auf eine ander Baudrate umschalten, noch anhalten (ohne HW Reset). Dazu noch die 5V Unverträglichtkeit....Adios baba Atmel! Ich bin aufs Discovery umgestiegen und schon laufen gleichzeitig 4 DMX Kanäle ohne Probleme. Auch im Empfangsmodus. SG
Danke euch! Ich werde mich wieder melden, wenn ich die entsprechenden Teile besorgt habe.
Choose schrieb: > Meiner Erfahrung nach ist der XMega 128xx völlig ungeeignet (vor allem > mit dem internen Quarz betrieben) die 250 KBaud exakt zu erzeugen. Die > Uarts sind auch völlig ungeeigent, einen sauberen Break zu erzeugen. Es gibt KEINEN internen Quarz! Der Xmega A1 hat einen internen RC-Oszillator, der laut Datenblatt mit einer Genauigkeit von +/- 1,5% über den vollen Temperatur und Betriebsspannungsbereich läuft. Dazu muß man aber die in der Signature-Row gespeicherten "Oscillator Calibration Bytes" nach dem Prozessorstart laden. Der interne 32,768kHz Oszillator ist auf +/- 0,5% spezifiziert, dieser kann als Referenz für die "run time calibration" dienen und den 32MHz Oszillator auf seine Genauigkeit stabilisieren. Ebenso ein extern angeschlossener 32kHz Quarz (der evtl für die RTC-Funktion eh vorhanden sein könnte) Auf dem Xplained-Board ist er drauf. Schau mal im Datenblatt und im A1-Manual unter "oscillator calibration" nach. Unkalibriert reicht die Genauigkeit des internen Oszillators nicht als Baudrate Generator. Wenigstens die Werkskalibrierung muß aus der Signature-Row geladen werden.
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.