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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.