Sida 2 av 2

Re: NEXA mottagare

Postat: 21 oktober 2009, 22:44:14
av danielr112
Jag som kör med MikroC :D

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.. :D

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... :vissla:
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
	}
}