Hallo

Ich hab jetzt schon zig mal versucht einen Code zu schreiben um meinem ATMega128 mit 16Mhz den Empfang von RC5 Code beizubringen.
Es gibt zwar einige Versionen auch im Internet, jedoch bringe ich diese auch nicht wirklich zum laufen.
Früher wollte ich mal, dass der Empfang von RC5 einfach so nebensächlich abläuft, aber da ich das ja anscheinend nicht hin bekomme begnüge ich mich jetzt mal damit, dass er nur mal korrekt empfangen wird

Aber vielleicht ist hier ja so ein Genie, dass mir das jetzt endlich mal beibringen kann [-o<

Ich programmiere in CodeVision - ist zwar nicht AVRGCC, aber auch C

hier mal der code:
Code:
#include <mega128.h>
#include <stdlib.h>

#include "uart.h";
#include "command.h";
  
unsigned long rc5_data = 0;
unsigned char rc5_laenge = 14;
unsigned int durchlauf = 0;
unsigned int laenge = 0;
unsigned char text[20];

interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
 	if(++durchlauf == 16)
 	{      
 		if(++laenge != rc5_laenge)
 		{
 			durchlauf = 0;
			rc5_data << 1;
 		
 			if(PIND.0 == 0)
 			{
 	  			rc5_data |= 1;
 			}
 		}
 		else
 		{
 			itoa(rc5_data,text);
 			Send_Str(text);
 			TCCR0 = 0x00;
 		}
 	}
}

void main(void)
{
	PORTB=0x00;
	DDRB=0xFF;

	PORTD=0x00;
	DDRD=0x00;	
	
	ASSR=0x00;
	TCCR0=0x00;
	TCNT0=0x00;
	OCR0=0x00;

	TIMSK=0x01;
	ETIMSK=0x00;

	#asm("sei")
   
	init_uart();
	
	while (1)
   {
   	if(PIND.0 == 0)
   	{
   		TCCR0=0x02;
   	}
   };
}
das Ausgeben des Ergebnisses auf UART ist nebensächlich - ich möchte nur gern den RC5 Code korrekt empfangen können.

Der TSOP hängt an PORT D Pin 0

Wenn möglich die Lösung auch für den CodeVision Compiler.


Hoffentlich kann mir jemand helfen. Danke im Vorraus.

churchi