Hallo,
Ik ben mezelf aan het verdiepen in het programeren van AVR's. Ik heb als oefenproject gekozen om een ir signaal te kunnen ontvangen en herkennen.
Onze kat heeft een bandje waaraan een ir zendertje hangt en daar mee kan hij het kattenluik openen. Deze code wil ik kunnen herkennen.
Alle hardware is aanwezig, ik gebruik een Athmel stk500 ontwikkelboard en heb een ir ontvanger die ik aan PORTD kan hangen.
Mijn vraag: hoe kan ik, in grote lijnen, het binnenkomende signaal het best verwerken (programmeren).

in welke taal en hoe is de opzet van het signaal? dus is er een start/stop bit hoe lang is het signaal van je ir ontvanger(aantal bits)lengte van een high signaal?

[Bericht gewijzigd door timmie op ]

Taal: winAVR ofwel c.
Signaal bestaat uit een trein van 5 pulsen die resp:
0.7, 0.5, 0.5, 0.5, 0.5 mS lang zijn.
De IR ontvanger versterkt alleen het signaal, doet niets aan de-codering.

[Bericht gewijzigd door maxxam op ]

als ik je goed begrijp heb je een startbit en dan 4 bits aan signaal.

ik kan je trouwens geen code geven ben geen uitblinker in C maar kan je mssn wel op weg helpen.

Neen, alleen een korte trein van 5 pulsjes.

Eerste puls is 0,7 ms hoog
dan 0,4 ms laag
tweede puls 0,5 ms hoog
dan 0,1 ms laag
derde puls 0,5 ms hoog
dan 0,1 ms laag
vierde puls 0,5 ms hoog
dan 0,1 ms laag
vijfde puls 0,5 ms hoog
dan verder laag..

[Bericht gewijzigd door maxxam op ]

Op 23 september 2006 22:53:32 schreef maxxam:
Signaal bestaat uit een trein van 5 pulsen die resp:
0.7, 0.5, 0.5, 0.5, 0.5 mS lang zijn.

Dat is niet volledig, hoe lang is de puls hoog en welke tijd zit er tussen de pulsen?

In principe is het gewoon bij de eerste puls een timer starten. Bij elke flank (opgaand/neergaand) registreer je de verstreken tijd. En uiteindelijk bepaald je of de pulsen binnen de door jou gestelde specificatie vallen.

sorry maxxam maar ik snap je plaatje effe niet
kun je wat uitleg geven

ik denk dat marco hier een sterk punt maakt en ik denk ook dat dat de makkelijkste methode is.

Marcel,

Ik denk dat je voorstel inderdaad goed kan werken. Ik had een veel ingewikkeldere methode met interrupts e.d. in gedachte.
Ik ga het proberen, ik laat weten of het lukt.

thanks.

ehh, de meeste AVR's kennen wel de capture interupt pin (ICP dacht ik?). Zit je zeker goed wat betreft timing. Je moet maar eens goed lezen in de datasheet van de door jouw gekozen atmel. De ATMEGA's hebben dit iig.

Dan kun je er nl vrijwel zeker vanuit gaan dat de door jouw opgeslagen tijd beter klopt dan met pollen. interrupts is niet zo'n gek idee dus.