Hoi Allen,
Ik ben voor een casemod bezig met een USB HID, dit kleine apparaatje moet ervoor zorgen dat ik de knoppen, displays, LEDjes en IR ontvanger die in de kast van m'n versterker zitten kan gebruiken op m'n computer. Tot nu toe heb ik alles werkend, op een ding na: de IR ontvanger.
Ik zal hieronder m'n probleem en bevindingen beschrijven. Even een kleine voetnoot: dit is mijn eerste elektronica project en tevens mijn eerste uC programmeer project. Ik heb wel behoorlijk wat ervaring met andere programmeertalen en systemen.
De basis van het apparaatje is een atmega328p microprocessor van Atmel. Via een MAX232 level shifter stuur ik een RS232 signaal naar een VFD display en via een MCP23016 port expander heb ik alle knoppen op het frontpanel van de versterker kast (Harman Kardon AVR255) verbonden. Het laatste opstakel is de infrarood ontvanger.
De IR module die ik gebruik is een Vishay TSOP2238. Op aanraden van Frank Zhau (de maker van de USnooBie: http://frank.circleofcurrent.com/usnoobie/) heb ik de data pin van de IR ontvanger aangesloten op de ICP poort van de atmega328p. Tevens heb ik een LEDje aangesloten op de data pin om het signaal te 'zien'. So far so good, wanneer ik een signaal verstuur vanaf een willekeurige afstandsbediening krijg ik netjes een knipperend LEDje. 'Spook' signalen die ik eerst had, toen ik de pull-up weerstand vergeten was, zijn er niet meer.
Het probleem wat ik heb is dat ik niet goed weet hoe ik moet beginnen met het programmeren van de ontvanger. Ik heb wel al uitgevonden dat ik gebruik moet maken van een 16bit timer en interrupts. Het uiteindelijke doel is dat ik een willekeurige afstandsbediening kan pakken en wanneer ik dan op een knop druk moet het binaire signaal naar de computer verstuurd worden via een HID report. Vervolgens kan ik op de computer in m'n in c# geschreven tooltje aangeven dat ik een functie wil programmeren. De computer ontvangt de binaire code en slaat dit op in een register. De volgende keer dat de computer diezelfde binaire code ontvangt moet er een actie uitgevoerd worden. Wat die actie is maakt in dit verhaal nog niet uit, maar kan varieren van een applicatie starten tot het besturen van Media Portal.
Ik hoop dat iemand hier ervaring heeft met het programmeren van de atmega328 of atmega168 in avr-gcc, niet in assembly omdat dit niet samen gaat met de al geschreven code.
in ieder geval alvast bedankt voor het meedenken!
p.s.
Ik ben op de hoogte van de al bestaande IR ontvanger topics maar omdat dit een meer specifiek item is, ben ik van mening dat het wel een eigen draadje verdient :-)
Ik ben voor een casemod bezig met een USB HID, dit kleine apparaatje moet ervoor zorgen dat ik de knoppen, displays, LEDjes en IR ontvanger die in de kast van m'n versterker zitten kan gebruiken op m'n computer. Tot nu toe heb ik alles werkend, op een ding na: de IR ontvanger.
Ik zal hieronder m'n probleem en bevindingen beschrijven. Even een kleine voetnoot: dit is mijn eerste elektronica project en tevens mijn eerste uC programmeer project. Ik heb wel behoorlijk wat ervaring met andere programmeertalen en systemen.
De basis van het apparaatje is een atmega328p microprocessor van Atmel. Via een MAX232 level shifter stuur ik een RS232 signaal naar een VFD display en via een MCP23016 port expander heb ik alle knoppen op het frontpanel van de versterker kast (Harman Kardon AVR255) verbonden. Het laatste opstakel is de infrarood ontvanger.
De IR module die ik gebruik is een Vishay TSOP2238. Op aanraden van Frank Zhau (de maker van de USnooBie: http://frank.circleofcurrent.com/usnoobie/) heb ik de data pin van de IR ontvanger aangesloten op de ICP poort van de atmega328p. Tevens heb ik een LEDje aangesloten op de data pin om het signaal te 'zien'. So far so good, wanneer ik een signaal verstuur vanaf een willekeurige afstandsbediening krijg ik netjes een knipperend LEDje. 'Spook' signalen die ik eerst had, toen ik de pull-up weerstand vergeten was, zijn er niet meer.
Het probleem wat ik heb is dat ik niet goed weet hoe ik moet beginnen met het programmeren van de ontvanger. Ik heb wel al uitgevonden dat ik gebruik moet maken van een 16bit timer en interrupts. Het uiteindelijke doel is dat ik een willekeurige afstandsbediening kan pakken en wanneer ik dan op een knop druk moet het binaire signaal naar de computer verstuurd worden via een HID report. Vervolgens kan ik op de computer in m'n in c# geschreven tooltje aangeven dat ik een functie wil programmeren. De computer ontvangt de binaire code en slaat dit op in een register. De volgende keer dat de computer diezelfde binaire code ontvangt moet er een actie uitgevoerd worden. Wat die actie is maakt in dit verhaal nog niet uit, maar kan varieren van een applicatie starten tot het besturen van Media Portal.
Ik hoop dat iemand hier ervaring heeft met het programmeren van de atmega328 of atmega168 in avr-gcc, niet in assembly omdat dit niet samen gaat met de al geschreven code.
in ieder geval alvast bedankt voor het meedenken!
p.s.
Ik ben op de hoogte van de al bestaande IR ontvanger topics maar omdat dit een meer specifiek item is, ben ik van mening dat het wel een eigen draadje verdient :-)