rc5.h-Dateireferenz

#include <inttypes.h>

gehe zum Quellcode dieser Datei

Makrodefinitionen

#define RC5_TOGGLE   0x0800
#define RC5_ADDRESS   0x07C0
#define RC5_COMMAND   0x103F
#define RC5_MASK   (RC5_COMMAND)

Funktionen

void InitRC5 (void)
uint16_t ReadRC5 (void)
void IsrRC5 (void)

Variablen

volatile uint16_t RC5data
volatile uint8_t enableRC5


Makro-Dokumentation

#define RC5_ADDRESS   0x07C0

Der Adressbereich

Definiert in Zeile 36 der Datei rc5.h.

#define RC5_COMMAND   0x103F

Der Kommandobereich

Definiert in Zeile 37 der Datei rc5.h.

#define RC5_MASK   (RC5_COMMAND)

Definiert in Zeile 39 der Datei rc5.h.

#define RC5_TOGGLE   0x0800

/file rc5.h /brief Definitionen fuer die Dekodierung von RC5-Fernbedienungs-Codes /author Benjamin Benz (bbe@heise.de), m.a.r.v.i.n

/version V001 - 20.12.2005 - Benjamin Benz (bbe@heise.de) Version fuer den c't-Bot V002 - 11.02.2007 - m.a.r.v.i.n portiert fuer den ASURO Das RC5-Toggle-Bit

Definiert in Zeile 35 der Datei rc5.h.


Dokumentation der Funktionen

void InitRC5 ( void   ) 

Init IR-System

Definiert in Zeile 180 der Datei rc5.c.

00181 {
00182   IR_DDR  &= ~IR_PIN;   // Pin auf Input
00183   IR_PORT |= IR_PIN;    // Pullup an
00184   enableRC5 = 1;
00185 }

void IsrRC5 ( void   ) 

Interrupt Serviceroutine wird alle 222.2us aufgerufen

Definiert in Zeile 75 der Datei rc5.c.

00076 {
00077   // sample lesen
00078   uint8_t sample = 1;
00079 
00080   if ((IR_PINR & (1<<IR_PIN)) != 0)
00081   {
00082     sample = 0;
00083   }
00084 
00085   // bittimer erhoehen (bleibt bei 255 stehen)
00086   if (RC5bittimer<255)
00087   {
00088     RC5bittimer++;
00089   }
00090 
00091   // flankenerkennung
00092   if ( RC5lastsample != sample)
00093   {
00094     if (RC5bittimer<=IR_SAMPLES_PER_BIT_MIN)
00095     {
00096       // flanke kommt zu frueh: paket verwerfen
00097       RC5bitcount=0;
00098     }
00099     else
00100     {
00101       // Startbit
00102       if (RC5bitcount==0)
00103       {
00104         if ( (sample==1) && (RC5bittimer>IR_PAUSE_SAMPLES) )
00105         {
00106           // Startbit speichern
00107           RC5data_tmp = 1;
00108           RC5bitcount++;
00109         }
00110         else
00111         {
00112           // error
00113           RC5data_tmp = 0;
00114         }
00115 
00116         // bittimer-reset
00117         RC5bittimer = 0;
00118 
00119         // Bits 2..14: nur Flanken innerhalb des Bits beruecksichtigen
00120       }
00121       else
00122       {
00123         if (RC5bittimer >= IR_SAMPLES_PER_BIT_EARLY)
00124         {
00125           if (RC5bittimer<=IR_SAMPLES_PER_BIT_LATE)
00126           {
00127             // Bit speichern
00128             RC5data_tmp = (RC5data_tmp<<1) | sample;
00129             RC5bitcount++;
00130           }
00131           else
00132           {
00133             // zu spaet: paket verwerfen
00134             RC5bitcount = 0;
00135           }
00136 
00137           // bittimer-reset
00138           RC5bittimer = 0;
00139         }
00140       }
00141     }
00142 
00143   }
00144   else
00145   {
00146     // keine flanke innerhalb bitzeit?
00147     if (RC5bittimer > IR_SAMPLES_PER_BIT_LATE)
00148     {
00149       // 14 bits gelesen?
00150       if (RC5bitcount==14)
00151       {
00152         RC5data = RC5data_tmp;
00153       }
00154       // paket verwerfen
00155       RC5bitcount = 0;
00156     }
00157   }
00158 
00159   // sample im samplepuffer ablegen
00160   RC5lastsample = sample;
00161 
00162 
00163 }

uint16_t ReadRC5 ( void   ) 

IR-Daten lesen

Rückgabe:
wert von ir_data, loescht anschliessend ir_data

Definiert in Zeile 170 der Datei rc5.c.

00171 {
00172   uint16_t retvalue = RC5data;
00173   RC5data = 0;
00174   return retvalue;
00175 }


Variablen-Dokumentation

volatile uint8_t enableRC5

schaltet die RC5 Abfrage ein/aus

Definiert in Zeile 69 der Datei rc5.c.

volatile uint16_t RC5data

letztes komplett gelesenes RC5-paket

Definiert in Zeile 68 der Datei rc5.c.


Erzeugt am Sun Nov 18 18:24:53 2007 für ASURO Library von  doxygen 1.5.1-p1