Sida 2 av 2
					
				Re: NEXA mottagare
				Postat: 21 oktober 2009, 22:44:14
				av danielr112
				Jag som kör med MikroC  
 
Härligt att få titta på. Blir nog att inhandla sådant itll helgen iallfall. Fasen de kliar i fingrarna.
 
			 
			
					
				Re: NEXA mottagare
				Postat: 21 oktober 2009, 23:19:32
				av lond
				Det var roligt att ni tyckte om min kod, även om det är skriven i fel språk 
Det som är viktigast att justera i koden är värdera som bestämmer tiderna för att trigga pulserna från mottagaren beroende vilken frekvens man har på kristallen. Jag har använt en 16MHz kristall med drivare bara för att jag har sådana liggande 

 .
Jag har finjusterat värdera genom att koppla dom 4 lysdioderna, mottagarpinnen och TXD till en logik analysator, så att jag kan se precis vad som händer 

 .
Kopplar man ihop RTS och CTS så skickar µP ut den mottagna informationen direkt på TXD.
Logik analysatorn är nog faktiskt mitt bästa inköp pga den har underlättat så mycket pga den visar allt så visuellt vad som händer när man håller på och testar.
// Marcus
 
			 
			
					
				Re: NEXA mottagare
				Postat: 23 februari 2010, 19:09:32
				av helldin
				Hur lång är varje bit samt tiden mellan hög å låg?
			 
			
					
				Re: NEXA mottagare
				Postat: 1 april 2010, 21:21:35
				av danielr112
				Hur har det gått med denna? Jag behöver bygga mig en logger så ja kan se allt jag styr med mina "nexa" sändare hemma.. 

 
			 
			
					
				Re: NEXA mottagare
				Postat: 1 april 2010, 21:48:41
				av lond
				Jag har 2st byggda, en som sitter i en ombyggd IKEA-lampa med RGB-led i och en som fungerar som en logger/experiment-plattform.
Funderar på att göra en ny variant med µP med inbyggd 8MHz kristall.
// Marcus
			 
			
					
				Re: NEXA mottagare
				Postat: 7 april 2010, 13:37:01
				av E85
				Här är en kodsnutt jag skrev till AVR för att agera mottagare. Kan krävas lite eget funderande eftersom jag inte har kommenterat och kommer inte ihåg vilken frekvens jag körde den i...  
 
Som ni ser har jag hårdkodat koderna från min fjärr (0x00510551 osv). Beskrivningen hur koderna ser ut binärt finns att hitta på nätet nånstans... eller så spelar man in de helt enkelt med lite ändring i koden.
Kod: Markera allt
volatile unsigned char rfdatahigh;
volatile unsigned char rfdatacnt;
volatile unsigned long int rfdata;
ISR(TIM0_COMPA_vect)
{
	static unsigned int counter;
	if (counter < 65535) counter++;
	if (rfdatahigh && counter > 400)
	{
		rfdata = rfdata << 1;
		rfdata += (PINB & _BV(PB2)) ? 1 : 0;
		rfdatahigh = 0;
		if ((rfdata & 0x00FFFFFF) == 0x00510551)
		{
			button1_pressed();
			counter = 0;
		}
		else if ((rfdata & 0x00FFFFFF) == 0x00511151)
		{
			button2_pressed();
			counter = 0;
		}
		else if ((rfdata & 0x00FFFFFF) == 0x00510554)
		{
			button3_pressed();
			counter = 0;
		}
		else if ((rfdata & 0x00FFFFFF) == 0x00511154)
		{
			button4_pressed();
			counter = 0;
		}
	}
}
ISR(PCINT1_vect)
{
	rfdatahigh = 1;
	TCNT0 = 0;
}
int main(void)
{
	DDRB = 0x00;
	PORTB = 0x03;
	DDRA = 0x0F;
	//Setup Timer 0
	TCCR0A = 0x02;
	TCCR0B = 0x02;
	OCR0A = 0x4A;
	TCNT0 = 0;
	TIMSK0 = _BV(OCIE0A);
	//Setup interrupt on pin change
	GIMSK |= _BV(PCIE1);
	PCMSK1 = 0x04;
	sei(); //Enable interrupts
	while(1) {
	//Gör nåt kul
	}
}