Hallo, Sorry für die Frage aber es muß sein. Gibt es eine Möglichkeit DMX zu senden ohne einen Timer zur verfügung zu haben. Ich haben nur noch die Uart zur verfügung mehr leider nicht. Controller ist der ATMega 8515 mit 8MHz Takt. Habe im Web verschiedene Sachen gefunden aber die Gingen alle mit Timer0 und der Uart. Gibt es da Lösungsansätze? Eigentlich möchte ich nur DMX senden wenn sich kanalwerte ändern die im RAM liegen. Ich weiß auch nicht was ich jetzt momentan sende da kein Oszi zur verfügung habe. Kann man im AVR studio simulieren was aus der Uart rauskommt?
Du MUSST DMX in einer Schleife senden!! Ich ärger mich tierisch über Transmitter die nur bei Änderungen senden: Bei langen Ketten und Einstreuungen kommt häufig statt der Änderung nur noch Mist an. Strobos, Nebelmaschinen, etc. erkennen noDMX und senden plötzlich Ausfallszenen oder schalten ab - das ist einfach nur ärgerlich. Statt einem Timer kannst Du natürlich immer Schleifen nehmen. Bei 80µs geht Dir aber ordentlich Rechenzeit ab. Deine Lösung wäre: T0 mit fester Zeit arbeiten lassen und die einzelnen Routinen, die seinen Tick brauchen mit einem softPrescaler versorgen (Zählregister/SRAMzelle) Falls es um meinen Transceiver geht (mega8515): mein Wizard setzt auch auf diese T0-Aufteilung. Sollte ich vielleicht noch hübscher bauen... Alternative wäre ein scheduler - für Dich aber wahrscheinlich noch etwas krass...
Du siehst am TxD-Pin, ob was passiert. Zeit wird im Prozessor angezeigt. Ansonsten wäre Hapsim vielleicht eine Möglichkeit (noch nicht dafür getestet...)
Hallo, danke für die Antwort. Eigentlich geht es darum zwischen einzelnen geräten daten zu übertragen. Das muß nicht per DMX passieren. Es soll eine syncrone Master Slave funktion sein. Über Dipper soll codiert werden wer Master und wer slave ist. Dh ein gerät soll senden und die anderen Empfangen. Sone Art Syncroner Demo Mode. Das müsste doch mit der Uart gehen oder? Der master Wert im RAM 0x06A =100 übertrage an Slave diesen wert und mach das selbe wie der Master. Naja schwer zu beschreiben. Wie gesagt ist ist nur zu Demozwecken gedacht.
Wenn alle geräte wissen, was sie machen sollen und Du nur selektieren willst, solltest Du wirklich kein DMX nehmen. RS485 ist hingegen eine gute Wahl für die Aufgabe. Wieso sendest Du nicht einfach die jeweilige ID mit parity drei Mal hintereinander: Falls ein PE aufgetreten ist, hast Du so noch die beiden anderen Bytes. Dann entfällt natürlich ein Timer - obwohl ich hier vielleicht einen Timeout einbauen würde: Wenn x ms nix auf dem USART passiert ist, ist das nächste Byte automatisch das Erste eines Tripels. (Und schon hast Du wieder einen definierten Zustand, falls Dir der Bytecounter abschmiert ;-)
Hallo, DMX Hat den Vorteil das ich nicht alle Slave Geräte umschalten muß sondern Sie Im Mormalen DMX Empfangsmode lassen kann Dh wenn kein Steuergerät vorhanden ist dann brauch ich nur einen Dipper an einem Gerät umzulegen und schon ist es der Master und alle anderen machen was der master sagt. Für einfache anwendungen einfach nur einfach.
Wie sollen die Slaves zwischen DMX und SlaveMode unterscheiden? So wie Du es planst, musst Du wohl doch ggf. ein korrektes DMX-Signal generieren (auch kanal- und nicht szenenbasiert)...
Hallo, Die Slave Geräte müssen ja nicht unterscheiden DMX ist eben DMX. Ich wollte ein bisschen konfort einbauen. Der Timerinterrupt wird regelmäßig aufgerufen und darf eben nicht zwischendurch unterbrochen werden wie es in der Software von Hendrik passiert. geht das nicht auch ohne Unterbrechung? Bei mir ist der Vorteiler auch gleich 1 und bei Hendrik 4. Dh. der Interrupt wird 4x so oft ausgeführt. Das könnte man bber mit einem Zähler ändern so glaube ich. Aber wie verhindere ich das der DMX Reset unterbrochen wird? Würde das nicht auch über einen Zähler gehen?
Natürlich geht das: Stichworte: Zählregister, Flags (mit dem Register teilst du Dir die Frequenz zurecht und mit einem Flag sagst Du, ob die Routine überhaupt angesprungen werden soll.) Wenn den Kopf mal wieder frei habe, werde ich den Wizard mal auch so umbauen, dass T0 einen gut handlebaren Systemtakt vorgibt, auf den dann der andere Kram (s.o.) zugreifen kann... Ich wusste gar nicht, dass es damit Probleme gibt. Trotzdem hast Du nen Denkfehler: DMX sendet x Kanalwerte. Dein Slavekonzept wählt aber vorhandene Szenen aus. Wenn das kompatibel sein soll, muss der Master alle Szenen haben und die Kanäle als DMX-Stream an die Slaves ausgeben. (Vielleicht kanns wer anders besser erklären...)
Hallo, ich krieg das einfach nicht hin das das Teil DMX sendet. Es sendet irgendwas aber was wiß ich nicht so genau da kein Oszi vorhanden ist. Welche Geräte würden sich dafür eignen eine PC Variante oder ein Richtiges. Ich weiß auch nicht ob ich die Uart richtig eigestellt habe. Könntet Ihr mal nachsehen? ldi TEMP,0x01 ;Load UART Bautrate Register with 0x01 out UBRRL,TEMP sbi UCSRB,RXCIE ;Enable RX Interrupt sbi UCSRB,UCSZ2 ;Enable 9-Bit Mode sbi UCSRB,RXEN ;Enable RX-UART ldi temp, 0x00 out UBRRH, temp ldi temp, (1<<URSEL)|(3<<UCSZ0)|(1<<USBS) out UCSRC, temp sbi UCSRB,UDRIE sbi UCSRB,TXEN Wie gesagt DMX Senden und empfangen Danke euch
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.