Forum: Mikrocontroller und Digitale Elektronik DMX in ohne UART - wie machbar?


von moöchte es versuchen... (Gast)


Lesenswert?

Hallo,

hat jemand von euch schon einmal DMX-in ohne Verwendung des UARTs
realisisert ??? Oder kann mir Lösungsansätze nennen? Danke !!!

von Rahul (Gast)


Lesenswert?

Das kann man dann wohl höchstens per Soft-UART machen. Was bei 250kbit
nicht gerade unanstrengend ist.
Oder willst du es ohne Controller machen?
Das würde mit einem Monoflop (Start-Byte-Erkennung), Taktgeber(n),
Zählern, Schiebregistern und noch ein paar Logik-Bausteinen gehen...

von Hendrik H. (henne)


Lesenswert?

Ohne mcu ist es wahrscheinlich eine echte Herausforderung...

Mit Softusart ist es theoretisch per Polling oder mit einer Timer-ISR
möglich. Dazu existiert eine AN von Atmel.

Wie schon gesagt, benötigst Du bei 250kBaud eine geniale Effizienz des
Codes, diese Routine benötigt höchste Priorität und der Auslastung ist
wahrscheinlich auch jenseits von gut und böse. Dann hast Du auch kein
Oversampling (beim Hardwere-USART vorhanden), was evtl. die Geschichte
auch noch anfällig macht.

Kurz: Ich kenne keine ernstzunehmende DMX-Schaltung ohne U(S)ART.

Mach also die PC-Anbindung per Software (9.6kBaud sind genügsamer) oder
nimm eine MCU mit 2USARTs.

Eine Hardwarelösung findest Du bei mir auf:
www.hoelscher-hi.de/hendrik/light/ressources.htm

Mehr kann ich dazu nicht schreiben.
Grüße, Hendrik

von möchte es versuchen... (Gast)


Lesenswert?

hallo,

danke euch für die Antworten. Also ich habe es vor in Assembler zu
coden, mit 16MHz Takt. Die 250Kbit sollten also effizient machbar
sein... Es gibt auch keine anderen ISR die stören könnten, ich hab da
volle Freiheit.

von TravelRec. (Gast)


Lesenswert?

Was spricht gegen das USART? Hat Deine MCU nicht genügend davon oder
willst Du nur testen, ob Du´s auch ohne hinbekommst?!

von möchte es versuchen... (Gast)


Lesenswert?

Hi,

nein habe wirklich nicht genug USART - und mehr als einen DMX-in...Das
ist der Punkt. Aber ich habe mal ein paar Timingberechnungen
angestellt, bei 16MHz Clock habe ich bei 250kbit/s 64 Takte Zeit mich
mit den einzelnen Bits zu beschäftigen. Also wenn das nich zu schaffen
ist :-)

von mmerten (Gast)


Lesenswert?

So langsam wird`s merkwürdig ;)
> Es gibt auch keine anderen ISR die stören könnten, ich hab da
volle Freiheit.
> nein habe wirklich nicht genug USART - und mehr als einen DMX-in

Ein DMX RX mit Software UART für ne simple 1 Kanal Anwendung mag ja
noch brauchbar funktionieren, aber alles andere ohne Hardware UART
dürfte doch sehr gewagt sein, zumal ja die empfangenen Daten auch noch
verarbeitet werden wollen. Gibt ja mittlerweile auch AVR mit 2 bzw. 4
seriellen Schnittstellen, damit ist dann auch Bearbeitung von mehr als
einem DMX Universe möglich.

von TravelRec. (Gast)


Lesenswert?

Ganz andere Idee: ´nen kleinen Tiny 2313 pro DMX-in spendieren,
dadrinnen schon das Pre-Processing machen und die wirklich relevanten
Daten dann über Portpins an einen Masterprozessor (Mega16 oder größer)
weitertransferieren, der dann die Hauptarbeit macht. Wird in jedem
Falle einfacher sein, als alle Kommunikation und Verarbeitung in
Software zu gießen, einen einzigen Prozessor am Limit zu fahren und
später dann doch nicht mit der Zeit auszukommen...

von Peter D. (peda)


Lesenswert?


von Dani R. (reiser)


Lesenswert?

Hallo!

Ist zwar schon ein altes Thema aber trotzdem schreib ich meinen Beitrag 
mal dazu. :)
Es müsste möglich sein.

Es gibt von roboternetz.de einen netten Artikel in der Wiki zum 
Software-UART mit AVR-GCC:
http://www.roboternetz.de/wissen/index.php/Software-UART_mit_avr-gcc

Werde es auch selbst mal versuchen. Wäre sicher interressant DMX mal auf 
nen kleinen ATtiny25 oder ATtiny24 zu packen :)


MfG,
Dani

von Falk B. (falk)


Lesenswert?

@Dani Reiser (reiser)

>Werde es auch selbst mal versuchen. Wäre sicher interressant DMX mal auf
>nen kleinen ATtiny25 oder ATtiny24 zu packen :)

Wirklich? Nimm einen Tiny2313 und alles ist gut. Aber warum einfach wenn 
es auch umständlich geht.

MFG
Falk

von Peter D. (peda)


Lesenswert?

Dani Reiser wrote:
> Werde es auch selbst mal versuchen. Wäre sicher interressant DMX mal auf
> nen kleinen ATtiny25 oder ATtiny24 zu packen :)

Sollte kein großes Problem sein.
Dann kannst Du gleich den internen Komparator als RS485-Pegelwandler 
benutzen.

Eventuell den Interrupthandler in Assembler schreiben, da zumindest der 
AVR-GCC viele unnötige PUSH/POP macht.


Peter

von Falk B. (falk)


Lesenswert?

@Peter Dannegger (peda)

>Sollte kein großes Problem sein.

Ist es auch nicht.

Beitrag "DMX512 Empfänger mit Relaisansteuerung für 20 Kanäle"

>Dann kannst Du gleich den internen Komparator als RS485-Pegelwandler
>benutzen.

Uhhhh, SOLCHEN Murks würde ich nun mal sicher nicht machen wollen. Denn 
ein MAX485 & Co kann schon EINIGES mehr als ein 0815 CMOS Eingang. 
Stichworte ESD und Gleichtaktspannung.

>Eventuell den Interrupthandler in Assembler schreiben, da zumindest der
>AVR-GCC viele unnötige PUSH/POP macht.

Naja, kann man machen, wenn man sich mal die Mühe gemacht hat, den 
Zugriff auf C-Variablen in ASM zu verstehen. Ist aber nciht sooo 
kritisch, der Tiny hat bei 8 MHz noch reichlich Reserven. Erst Recht bei 
20 MHz.

MFG
Falk

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
Noch kein Account? Hier anmelden.