Na een tijd van geen updates weer een stapje verder met m'n hardware ambilight achtig bordje Chameleon. Doel is composiet of s-video om te zetten in kleuren LED/CCFL effecten voor achter de TV.
Een wel grappige demo is deze die 8x8 (64) pixels uit het beeld haalt op 25 frames per seconde en deze een aantal keer per seconde (~5) naar de PC stuurt. Als je als composiet bron een digitale camera neemt kun je zo het bordje de kleuren laten volgen die je camera ziet.
klik voor filmpje
Links zie je het programma dat de output van Chameleon weergeeft, rechts is gewoon paint met wat leuke vlakken. De kleuren zijn overigens in het echt veel beter.
Uit 8 beeldlijnen van het beeld worden elk 8 24-bits YCbCr samples genomen door een CPLD. Wanneer deze buffer vol zit (na 1 beeldlijn) wordt een interrupt lijntje hoog gemaakt en leest de AVR de buffer uit. Wanneer alle beeldlijnen gelezen zijn stuurt de AVR dit via de FTDI chip en USB naar de PC gestuurd (maar een stuk of 5 keer per seconde ivm de snelheid, de AVR leest wel 25x per seconde).
Weer even een show-off van de Rigol De interrupt lijn ziet er zo uit:
Het lijken negatieve pulsen maar het interrupt is op de positieve flank, de puls is gewoon heel lang positief.
Elke even (of oneven?) frame wordt alleen verzonden zodat er tussendoor steeds even rust is (voor het algoritme). Tussen twee series zit dus 40ms (25Hz). Per frame krijg je 9 pulsen. De eerste is ter synchronisatie, de overige 8 geven aan dat er 8 nieuwe pixels te wachten staan.
Voor het volgende prototype heb ik toch besloten een FPGA te gaan gebruiken in plaats van een CPLD om meer ruimte in het logica gedeelte te hebben. Mijn eerste plan was de CPLD gewoon wat pixels (liefst gemiddelden) uit het beeld te laten trekken en een AVR hier een simpel algoritme op te laten uitvoeren maar dit is toch allemaal wat zwaarder dan ik had voorgesteld (live and learn). Nadeel is dat er weer een extra voedingslijn en een config rom bij moet, en zodoende de boel weer duurder wordt.