www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik DMX-Statusanzeige


Autor: Theo (Gast)
Datum:

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

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Theo schrieb:
> Im Anhang

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

Autor: Theo (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
da hast Du wohl Recht...

Sorry

Autor: Matthias Larisch (Gast)
Datum:

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

Autor: Theo (Gast)
Datum:

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

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.