DMX-Statusanzeige

Gast #1280268
Hallo zusammen,

ich habe eine wahrscheinlich - hoffentlich - für die meisten von Euch 
simple Frage, quäle mich aber schon Stunden damit ab:

Und zwar habe ich einen DMX-Splitter entworfen in dem ein kleiner µC 
implementiert ist (ATtiny2313), der nichts weiter machen soll, als 
"nachzuschauen", ob Signal anliegt oder nicht.

Wenn Signal anliegt, Grüne LED, wenn nicht, rote LED.

Im Anhang seht Ihr meinen Code (mittlerweile mit Endlosschleife => Ich 
weiß ja nicht, was ich reinschreiben soll...). Einiges dürfte so manchem 
bekannt vorkommen (danke Hendrik...).

Meine Herangehensweise war die, dass ich versucht habe innerhalb des 
Interrupts eine Variable zu setzen/verändern, diese dann im 
Hauptprogramm auszuwerten. Oder das Ganze über Flags (FE).

Mein Problem:
Wenn ich den Splitter mit Spannung versorge und kein Signal anliegt, 
leuchtet(e) tatsächlich die rote LED, wenn ich dann Signal aufschaltete 
blieb die rote an und zusätzlich leuchtete die grüne. Nach Abstecken des 
Signals änderte sich nix.

Wie gesagt. Nun ist der Code ohne Variable im Interrupt und nur 
Endlosschleife im Hauptprogramm.

Was mache ich falsch?

Beste Grüße
Gast #1280290
Du gibst nichts aus, vll liegts daran?^^

Ansonsten: Nen Timer Parallel laufen lassen, Overflow auf 1-2 Sekunden 
einstellen und immer wenn du nen DMX Break empfängst im UART Interrupt 
einfach den Timer auf 0 setzen und das TOV Flag clearen.

In der Mainloop deine LEDs entsprechend dem Timer Overflow Flag setzen:
Grüne LED = TOV Flag, rote LED = not TOVFLAG.

Hat halt ein entsprechendes Delay: Nach dem Anschalten leuchtet IMMER 
die grüne LED, bis der Timer den ersten Overflow macht.

Abhilfe: Vorweg den Timer einmal überlaufen lassen...

Außerdem wirds erst rot, wenn das Kabel kurze Zeit nicht steckt.

Du musst dir halt erstmal ein Kriterium ausdenken, woran du erkennen 
willst, was Signal ist. Du kannst auch einfach ne LED durch den RS485 
Ruhepegel schalten lassen, also vor dem TTL Wandler.

Viele Grüße,

Matthias
Gast #1280295
Hallo Matthias,

vielen Dank für Deinen Tip.

Besteht die Möglichkeit für Dich, dass Du mir ein Codebeispiel 
schreibst? Ich hab noch nie mit Timer-Interrupts gearbeitet.

Wäre Dir sehr verbunden.

Gruß

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.