Bezunehmen möchte ich auf einen anderen Thread - ist zwar schon ein paar Tage alt, aber es passt nahtlos: Für
den Einsatz diverser IR-FB‘s baue ich gerade an einem (relativ) universellen Decoder. Von diesen „Technik-Leichen“ habe ich einige (20?) rumliegen...
Ziel ist es, mit ein paar Bytes Anpassung weitere Protokolle hinzuzufügen und das Ganze auch für einfache 433MHz Module einzusetzen.
Wenn es halbwegs als Alpha-Version fertig ist stelle ich es hier ein.Verwendet wird ein Timer (läuft durch) und ein Pin Change Interrupt, an dem der TSOP hängt. Implementiert habe ich den ersten Teil als State Machine, weil der IR-Sensor massig Störungeneinsammelt - vor allem von Leuchtstoffröhren (alte Tischleuchte).Gedimmte LED-Streifen (ca. 2kHz) stören dagegen wenig.
Der ganze Kram soll in eine Datei gepackt werden, mit mäßigemSpeicherkonsum (ca. 50Byte RAM und <2kB ROM) auskommen und den
Programmablauf in der Main Loop wenig stören - die ISR braucht bei 8MHzunter 15 Mikrosekunden.
Muss noch viel optimiert und entwanzt werden.
Wollte das Ganze für die indirekte Beleuchtung mit Dimmer einsetzen, die meisten unserer FB‘s können mehrere Geräte ansprechen (DVD, BR,
Videorecorder, ...).
Das zugeschnittene Code-Schnippseln ist mir zu umständlich geworden...
Hier ein Zwischenstand - Mitgeschnitten an der seriellen Ausgabe (zum Debuggen), dabei ist die Ausgabe der 1. Zeile so zu Lesen:
P2 = Protokoll Nr.2 (NEC)
77 = Messwert 1. Bitphase (Licht)
59 = Messwert 2. Bitphase (Dunkel)
53 = untere Messtoleranz für den letzten Messwert
67 = obere Messtoleranz für den letzten Messwert
32 = Anzahl Bits
010111... ist das dekodierte Signal ohne Deutung
Die Idee ist, dass übliche Formate (IR-Sender, 433 MHz Funk) erkannt werden - also Signale mit Synchronimpuls, Manchester codierte, Bitstrom.
Dazu werden Angaben als Liste im EPROM hinterlegt, inkl. Anzahl zu erkennender Bits und Messtoleranzen.
Mit der "kleinen Lösung" kann ich dann unabhängig von den im Netz kursierenden (und meist in C geschriebenen) Lösungen die vorhandenen Tiny's und uralten AT90S-Typen verbauen (hab' noch viele ).
den Einsatz diverser IR-FB‘s baue ich gerade an einem (relativ) universellen Decoder. Von diesen „Technik-Leichen“ habe ich einige (20?) rumliegen...
Ziel ist es, mit ein paar Bytes Anpassung weitere Protokolle hinzuzufügen und das Ganze auch für einfache 433MHz Module einzusetzen.
Wenn es halbwegs als Alpha-Version fertig ist stelle ich es hier ein.Verwendet wird ein Timer (läuft durch) und ein Pin Change Interrupt, an dem der TSOP hängt. Implementiert habe ich den ersten Teil als State Machine, weil der IR-Sensor massig Störungeneinsammelt - vor allem von Leuchtstoffröhren (alte Tischleuchte).Gedimmte LED-Streifen (ca. 2kHz) stören dagegen wenig.
Der ganze Kram soll in eine Datei gepackt werden, mit mäßigemSpeicherkonsum (ca. 50Byte RAM und <2kB ROM) auskommen und den
Programmablauf in der Main Loop wenig stören - die ISR braucht bei 8MHzunter 15 Mikrosekunden.
Muss noch viel optimiert und entwanzt werden.
Wollte das Ganze für die indirekte Beleuchtung mit Dimmer einsetzen, die meisten unserer FB‘s können mehrere Geräte ansprechen (DVD, BR,
Videorecorder, ...).
Das zugeschnittene Code-Schnippseln ist mir zu umständlich geworden...
Hier ein Zwischenstand - Mitgeschnitten an der seriellen Ausgabe (zum Debuggen), dabei ist die Ausgabe der 1. Zeile so zu Lesen:
P2 = Protokoll Nr.2 (NEC)
77 = Messwert 1. Bitphase (Licht)
59 = Messwert 2. Bitphase (Dunkel)
53 = untere Messtoleranz für den letzten Messwert
67 = obere Messtoleranz für den letzten Messwert
32 = Anzahl Bits
010111... ist das dekodierte Signal ohne Deutung
Die Idee ist, dass übliche Formate (IR-Sender, 433 MHz Funk) erkannt werden - also Signale mit Synchronimpuls, Manchester codierte, Bitstrom.
Dazu werden Angaben als Liste im EPROM hinterlegt, inkl. Anzahl zu erkennender Bits und Messtoleranzen.
Mit der "kleinen Lösung" kann ich dann unabhängig von den im Netz kursierenden (und meist in C geschriebenen) Lösungen die vorhandenen Tiny's und uralten AT90S-Typen verbauen (hab' noch viele ).
Aus datenschutzrechtlichen Gründen befindet sich die Kontaktdaten auf der Rückseite dieses Beitrages.