ASURO Library  2.80
Makrodefinitionen | Funktionen | Variablen
rc5.c-Dateireferenz
#include <avr/io.h>
#include "asuro.h"
#include "rc5.h"
Include-Abhängigkeitsdiagramm für rc5.c:

gehe zum Quellcode dieser Datei

Makrodefinitionen

#define IR_SAMPLES_PER_BIT   8
 
#define IR_SAMPLES_PER_BIT_EARLY   6
 
#define IR_SAMPLES_PER_BIT_LATE   10
 
#define IR_SAMPLES_PER_BIT_MIN   3
 
#define IR_PAUSE_SAMPLES   250
 
#define IR_PORT   PORTD
 
#define IR_DDR   DDRD
 
#define IR_PINR   PIND
 
#define IR_PIN   PD0
 

Funktionen

void IsrRC5 (void)
 RC5 interrupt service routine
called by timer overflow isr ever 27,7 micro seconds.
 
uint16_t ReadRC5 (void)
 Read last received RC5 Data.
 
void InitRC5 (void)
 Initialize the RC5 Receiver.
 

Variablen

volatile uint16_t RC5data = 0
 
volatile uint8_t enableRC5 = 0
 

Makro-Dokumentation

#define IR_DDR   DDRD

DDR of Port D

Definiert in Zeile 61 der Datei rc5.c.

#define IR_PAUSE_SAMPLES   250

Startbit ist erst nach 200 Samples ohne

Definiert in Zeile 53 der Datei rc5.c.

#define IR_PIN   PD0

Pin 0

Definiert in Zeile 63 der Datei rc5.c.

#define IR_PINR   PIND

Port D input

Definiert in Zeile 62 der Datei rc5.c.

#define IR_PORT   PORTD

Port D

Definiert in Zeile 60 der Datei rc5.c.

#define IR_SAMPLES_PER_BIT   8

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

/version V001 - 20.12.2005 - Benjamin Benz (bbe@h.nosp@m.eise.nosp@m..de)
Version fuer den c't-Bot /version V002 - 11.02.2007 - m.a.r.v.i.n
portiert fuer den ASURO /version V003 - 22.01.2008 - m.a.r.v.i.n
Ovr2IntFunc Variable als Zeiger auf die Funktion IsrRC5
Wird von der Timer Overflow Interrupt Funtkion aus angesprungen. 8 Samples per Bit

Definiert in Zeile 49 der Datei rc5.c.

#define IR_SAMPLES_PER_BIT_EARLY   6

Flanke fruehestens nach 7 Samples

Definiert in Zeile 50 der Datei rc5.c.

#define IR_SAMPLES_PER_BIT_LATE   10

Flanke spaetestens nach 9 Samples

Definiert in Zeile 51 der Datei rc5.c.

#define IR_SAMPLES_PER_BIT_MIN   3

Flanke vor 3 Samples -> paket verwerfen

Definiert in Zeile 52 der Datei rc5.c.

Dokumentation der Funktionen

void InitRC5 ( void  )

Initialize the RC5 Receiver.

Init IR-System

Definiert in Zeile 185 der Datei rc5.c.

{
IR_DDR &= ~IR_PIN; // Pin auf Input
IR_PORT |= IR_PIN; // Pullup an
enableRC5 = 1;
}
void IsrRC5 ( void  )

RC5 interrupt service routine
called by timer overflow isr ever 27,7 micro seconds.

Interrupt Serviceroutine wird alle 27.7us aufgerufen

Definiert in Zeile 79 der Datei rc5.c.

{
// sample lesen
uint8_t sample = 1;
if (enableRC5 && !(count36kHz % 8))
{
if ((IR_PINR & (1<<IR_PIN)) != 0)
{
sample = 0;
}
// bittimer erhoehen (bleibt bei 255 stehen)
if (RC5bittimer<255)
{
RC5bittimer++;
}
// flankenerkennung
if ( RC5lastsample != sample)
{
if (RC5bittimer<=IR_SAMPLES_PER_BIT_MIN)
{
// flanke kommt zu frueh: paket verwerfen
RC5bitcount=0;
}
else
{
// Startbit
if (RC5bitcount==0)
{
if ( (sample==1) && (RC5bittimer>IR_PAUSE_SAMPLES) )
{
// Startbit speichern
RC5data_tmp = 1;
RC5bitcount++;
}
else
{
// error
RC5data_tmp = 0;
}
// bittimer-reset
RC5bittimer = 0;
// Bits 2..14: nur Flanken innerhalb des Bits beruecksichtigen
}
else
{
if (RC5bittimer >= IR_SAMPLES_PER_BIT_EARLY)
{
if (RC5bittimer<=IR_SAMPLES_PER_BIT_LATE)
{
// Bit speichern
RC5data_tmp = (RC5data_tmp<<1) | sample;
RC5bitcount++;
}
else
{
// zu spaet: paket verwerfen
RC5bitcount = 0;
}
// bittimer-reset
RC5bittimer = 0;
}
}
}
}
else
{
// keine flanke innerhalb bitzeit?
if (RC5bittimer > IR_SAMPLES_PER_BIT_LATE)
{
// 14 bits gelesen?
if (RC5bitcount==14)
{
RC5data = RC5data_tmp;
}
// paket verwerfen
RC5bitcount = 0;
}
}
// sample im samplepuffer ablegen
RC5lastsample = sample;
}
}
uint16_t ReadRC5 ( void  )

Read last received RC5 Data.

IR-Daten lesen

Rückgabe
wert von ir_data, loescht anschliessend ir_data

Definiert in Zeile 175 der Datei rc5.c.

{
uint16_t retvalue = RC5data;
RC5data = 0;
return retvalue;
}

Variablen-Dokumentation

volatile uint8_t enableRC5 = 0

schaltet die RC5 Abfrage ein/aus

Definiert in Zeile 73 der Datei rc5.c.

volatile uint16_t RC5data = 0

letztes komplett gelesenes RC5-paket

Definiert in Zeile 72 der Datei rc5.c.