mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik DMX senden ohne Timer möglich?


Autor: Rene (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: HendrikHoelscher (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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...

Autor: HendrikHoelscher (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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...)

Autor: Rene (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: HendrikHoelscher (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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 ;-)

Autor: Rene (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: HendrikHoelscher (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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)...

Autor: HendrikHoelscher (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ach ja: mit Timer ;-)

Autor: René (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: HendrikHoelscher (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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...)

Autor: Rene (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.