Hallo
ich möchte den RC5 Code ebenfalls verwenden.
Jedoch nutze ich einen Mega32 mit 16MHz und einem TSOP1838 mit 38kHz.
Was muss ich alles an dem Code anpassen damit überhaupt etwas empfangen
wird.
in der main.h steht
1 | #include <avr/io.h>
|
2 | #include <avr/interrupt.h>
|
3 | #define uchar unsigned char
|
4 | #define uint unsigned int
|
5 |
|
6 | #define xRC5_IN PINB
|
7 | #define xRC5 PB0 // IR input low active
|
8 |
|
9 |
|
10 | extern volatile unsigned int rc5_data; // store result
|
in der main.h
1 | #ifndef F_CPU
|
2 | #define F_CPU 16000000 // processor clock frequency
|
3 | #endif
|
4 |
|
5 | void init(void)
|
6 | {
|
7 | TCCR0 = (1<<CS01); //Prescaler 8
|
8 | TIMSK= (1<<TOIE0);
|
9 | TCNT0 = 129;
|
10 |
|
11 |
|
12 | DDRA= (1<<PA0)|(1<<PA3)|(1<<PA7); // LED's
|
13 | PORTB=(1<<PB0); // RC5
|
14 | }
|
und zuletzt meine Änderungen in der rc5.c
1 | #include "main.h"
|
2 |
|
3 | #define RC5TIME 1.778e-3 // 1.778msec
|
4 | #define PULSE_MIN (uchar)(F_CPU / 1016 * RC5TIME * 0.4 + 0.5)
|
5 | #define PULSE_1_2 (uchar)(F_CPU / 1016 * RC5TIME * 0.8 + 0.5)
|
6 | #define PULSE_MAX (uchar)(F_CPU / 1016 * RC5TIME * 1.2 + 0.5)
|
ebenso wurden die für den Mega32 relevanten Registernamen angepasst.
Das Problem ist folgendes:
Ich habe mit einem Oszi gemessen ob der TSOP1838 ein Signal empfängt.
Ich erhalte bei jedem Tastendruck einen Puls.-> Empfang sollte
funktionieren
Anschließend habe ich versucht, wenn was empfangen wurde die rc5_data an
ein LCD auzugeben.
Allerdings kommt da nix an. -> ich gehe davon aus, das im Interupt nix
passiert.
Würde mich über Hilfe freuen.
Gruß Harald