Hallo, hat jemand von euch schon einmal DMX-in ohne Verwendung des UARTs realisisert ??? Oder kann mir Lösungsansätze nennen? Danke !!!
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...
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
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.
Was spricht gegen das USART? Hat Deine MCU nicht genügend davon oder willst Du nur testen, ob Du´s auch ohne hinbekommst?!
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 :-)
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.
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...
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
@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
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
@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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.