Infrarot Library für Fernbedienungen nach dem NEC Protokoll
BSD Lizensierte Empfangs-Bibiliothek für ATMega48 / AVR-GCC

Da ich leider im Internet keinen Code mit entsprechender Lizensierung finden konnte habe ich mir kurzerhand meine eigene Funktionsbibiliothek geschrieben. Die Implementierung benötigt einen Interrupt sowie einen 8-Bit Timer. Im Interrupt wird mit einer Statemachine gearbeitet um das Signal zu decodieren.
Es wird komplett ausgewertet und auf Fehler überprüft. Außerdem kann ausgelesen werden, ob der Benutzer die Taste gedrückt hält.


Benutzung der Bibiliothek

Die entsprechenden Timer- und Interrupteinstellungen werden mit folgendem Aufruf initialisiert:
 // Initialize IR lib
       ir_init();

Nun liegt das zuletzt empfangene Paket in einer struct ir_struct bereit,
welche in der globalen Variable ir abrufbar ist. Diese beinhaltet Adresse, Kommando sowie ein Status Flag. Das Bit IR_RECIEVED des Flags wird gesetzt wenn ein gültiges Paket empfangen wurde und muss im Hauptprogramm nach erfolgter Verarbeitung zurückgesetzt werden. Solange die Taste gehalten wird, ist das Bit IR_KEYHOLD gesetzt.

Die Verarbeitung könnte etwa so aussehen:
 // Check if new code is received
 if(ir.status & (1<<IR_RECEIVED))
  {
   if(ir.address==42) // Remote address ok?
    {
     switch(ir.command)
      {
       case 64:
        // Do something useful
        break;
        // [...]
      }      
    }
   // Reset state
   ir.status &= ~(1<<IR_RECEIVED);
  }

Sollte kein Empfang mehr gewünscht sein, so können die Interrupts durch einen Aufruf von
 // Stop IR lib
 ir_stop();
wieder angehalten werden.

Seite zurück Seite 1 von 2 Seite vor

(c) 2001 - 2018 by www.MALTEPÖGGEL.de  
Impressum
Deutsche Version
English version