Forum: Mikrocontroller und Digitale Elektronik DMX-Statusanzeige


von Theo (Gast)


Lesenswert?

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

von Sven P. (Gast)


Lesenswert?

Theo schrieb:
> Im Anhang

Nach der Voschau gehen die Anhänge flöten :-)

von Theo (Gast)


Angehängte Dateien:

Lesenswert?

da hast Du wohl Recht...

Sorry

von Matthias Larisch (Gast)


Lesenswert?

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

von Theo (Gast)


Lesenswert?

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ß

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.