PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : RC5 Funktionen + lib 2.7 rc3



harry3
14.08.2007, 20:31
Hallo!

Habe mich mit Fernsteuerungsinputs mal versucht.

Aber ich habe keine Chance mit den Standard RC5 Funktionen was zum Laufen zu bekommen. Eigentlich müsste man es dank lib ja in wenigen Zeilen schaffen, aber ich bekomme immer 0 als Rückgabewert. Mmmhh!?

Ich dachte schon dass meine Fernbedienung keine Rc5 Fernbedienung ist, laut Signalverlauf ist es aber eine.

Ich hab mir dann eine eigene, Primitivst - RC5 Funktion gebaut, welche mir die richtigen Werte zurückliefert(meistens zumindest- schließlich ist die Funktion alles andere als optimiert) .



#include "asuro.h"

#include "include\\hs_taster.h"


#define MAX 11
int main(void)
{

unsigned char daten[MAX]={0},n=0;

Init();

DDRD &= (1<<PD0);
PORTD|=(1<<PD0);

while(PIND & (1 << PD0));
Sleep(208);

for(n=0;n<MAX;n++)
{
if((PIND & (1<<PD0))==0)
daten[n]=1;
Sleep(64);
}


Msleep(5000);

for(n=0;n<MAX;n++)
{
SerPrint("\r\n");
PrintInt(daten[n]);
}



while(1);
return 0;
}





Wenns also meine Mini Funktion kann, dann sollte es die ausgereifte Funktion schon lange können - anscheinend verwende ich sie irgendwie falsch: Ich starte die RC5 Erkennung mit der Rc5 - Init Funktion, und danach verbleibe ich in einer while() Schleife bis der Rückgabewert der Rc5 - Auslesefunktion nicht mehr 0 ist. Bei mir bleibt er aber immer 0, egal was ich mache!

m.a.r.v.i.n
14.08.2007, 21:23
Hallo Harri,

da ist wohl noch ein kleiner Fehler in der Asuro Lib 2.7 RC3. Damit die IsrRC5 Funktion im Timer Interrupt auch angesprungen wird, muß RC5_AVAILABLE im Makefile des Projektes definiert sein. Im Beispiel Projekt RC5Test ist das #define RC5_AVAILABLE im Sourcefile test.c leider wirkungslos.

Im Anhang befindet sich ein korrigiertes Makefile. Probier es mal damit.

harry3
14.08.2007, 22:06
Hallo Harri,

da ist wohl noch ein kleiner Fehler in der Asuro Lib 2.7 RC3. Damit die IsrRC5 Funktion im Timer Interrupt auch angesprungen wird, muß RC5_AVAILABLE im Makefile des Projektes definiert sein. Im Beispiel Projekt RC5Test ist das #define RC5_AVAILABLE im Sourcefile test.c leider wirkungslos.

Im Anhang befindet sich ein korrigiertes Makefile. Probier es mal damit.

Danke für die AW, ich werd's morgen testen.

Allerdings habe ich dank des Fehlers mich selbst mit der Sache beschäftigen "müssen" und hab inzwischen eine Funktion(zwar immer noch optimierbar, aber schon ganz brauchbar, schließlich hat sie bis jetzt immer das richtige Ergebnis geliefert) gefunden, wie ich fehlerfrei die RC5 Codes lesen kann.




#include "asuro.h"

#define MAX 6


int main(void)
{

unsigned char n=0,erg=0;

Init();

DDRD &= ~(1<<PD0);
PORTD|=(1<<PD0);

while(1)
{
while(PIND & (1 << PD0));
Sleep(250);
Sleep(250);
Sleep(14);

for(n=0;n<MAX;n++)
{
if(PIND & (1 << PD0))
erg |= 1<<(MAX-n-1);

Sleep(64);
}

StatusLED(RED);
Msleep(1500);
SerPrint("\r\n");
PrintInt(erg);
StatusLED(GREEN);
erg=0;

}

return 0;
}