Hallo,
ich habe einen TSOP34838 an PB0 an einem ATmega8L hängen.
Jetzt möchte ich gerne RC5-Signale von einer Fernbedienung auswerten.
Folgende Anpassungen habe ich vorgenommen:
main.h
1 | #define xRC5_IN PINB
|
2 | #define xRC5 PB0
|
3 | #define XTAL 1000000 // Interner Oszillator, 1MHz
|
Der Code läuft soweit, als dass ich
auf dem Terminal empfange. Allerdings kommt daraufhin beim Drücken der
Fernbedienungstasten keine weitere Ausgabe. Der OUT-Pin des TSOP34838
reagiert allerdings auf die Fernbedienung; ich habe das mit dem
Oszilloskop untersucht.
Daraufhin habe ich folgende Debug-Erweiterung in den Code eingepflegt:
main.c
1 | for(;;){ // main loop
|
2 | cli();
|
3 | i = rc5_data; // read two bytes from interrupt !
|
4 | rc5_data = 0;
|
5 | sei();
|
6 | if( i ){
|
7 | DDRB = i; // LED output
|
8 | putchar(( i >> 11 & 1) + '0'); // Toggle Bit
|
9 | putchar(' ');
|
10 | itoa( i >> 6 & 0x1F, s, 10); // Device address
|
11 | puts( s );
|
12 | putchar(' ');
|
13 | itoa((i & 0x3F) | (~i >> 7 & 0x40), s, 10); // Key Code
|
14 | puts( s );
|
15 | puts( "\n\r" );
|
16 | }
|
17 |
|
18 | // -------------- BEGIN: DEBUG -----------------
|
19 | if (!(xRC5_IN & (1 << xRC5)))
|
20 | {
|
21 | puts("a");
|
22 | }
|
23 | // -------------- END: DEBUG -------------------
|
24 | }
|
Jetzt erscheinen auf dem Terminal beim Drücken einer Taste auf der
Fernbedienung lauter "a". Der Mikrocontroller kann also Signale
empfangen. Warum kann er aber nicht den RC5-Code dekodieren und per UART
raussenden?