-
-
Neuer Benutzer
Öfters hier
Hallo, ich habe ebenso Probleme mit dem RC5 Code vom RoboterNetz -> http://www.rn-wissen.de/index.php/RC...%C3%BCr_ATMega . Ich habe ihn erfolgreich compilieren können und übertragen auf einen Atmega8 mit einem TSOP31236 (36 Khz) IR empänger und einer Loewe Fernbediehnung ( Control 150 TV (RC5 Standart)).
Jeddoch reagiert der Kontroller auf keinen einizgen Tastendruck! Das Signal am TSOP ausgang habe ich mit einem D-Oscillsoscope nachgemessen, da sollte eigendltich alles stimmig sein.
Ich lasse in der Mainschleife ein paar Flanken erzeugen, um überhaupt zu gucken ob der uC reagiert, doch leider tut sich an den Ausgängen nichts.
FCPU habe ich auch in der RC5 schon definiert!
SeveLB hat oben geschrieben das ich den Pin PD2 noch als eingang setzten muss, doch im Original Thread steht " der INT port wird nicht als IN gesetzt" jetzt bin ich verwirrt.
Hier mal meine Datei:
/*
* GccApplication2.c
*
* Created: 29.08.2013 19:25:02
* Author: Hendrik
*/
#define F_CPU 16000000UL
#include <util/delay.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#include <stdint.h>
#include "rc5.h" //NEU
void rechtsdrehen(int schritte) {
int s;
for(s=schritte; s>0; s--){
PORTD=0b00000111;
_delay_ms(0.1);
PORTD=0b00000101;
_delay_ms(0.1);
}
PORTD=0b00000000;
return;
}
void linksdrehen(int schritte) {
int s;
for(s=schritte; s>0; s--) {
PORTD=0b00000110;
_delay_ms(0.1);
PORTD=0b00000100;
_delay_ms(0.1);
}
PORTD=0b00000000;
return;
}
int main(void)
{ //Eingangsport Init
//DDRD &= ~(1<<PD2); // eingang fuer TSOP-DATA
//PORTD |= (1<<PD2); // Pull Up
DDRB = 0b00000001;
DDRC = 0b00100000;
//uint8_t code = 0;
//uint8_t addr = 0;
/* der ensprechende INT-Port muss INPUT sein */
/* RC5 initialisieren, alle Adressen zulassen */
rc5_init (RC5_ALL);
/* Interrupts zulassen */
sei();
while(1)
{
/* Gibt's was Neues? */
if (-1 == rc5.flip)
{
/* Nein, dann mach irgendwas (oder nix) */
PORTB = 0b00010000;
_delay_ms(10);
PORTB = 0b00000000;
_delay_ms(10);
PORTB = 0b00010000;
_delay_ms(10);
}
else
{
/* Ja, dann rc5.code merken und evtl. rc5.addr */
/* falls man die braucht und nicht sowieso schon kennt */
/*code = rc5.code;
addr = rc5.addr;*/
uint8_t code = rc5.code;
uint8_t addr = rc5.addr;
//Reaktion auf Tastendruck
PORTB = 0b00000001;
_delay_ms(10);
PORTB = 0b00000000;
_delay_ms(10);
PORTB = 0b00000001;
_delay_ms(10);
/* und auf naechstes Zeichen warten */
rc5.flip = -1;
/* code (evtl. addr) auswerten */
}
}
return 0;
}
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen