Öppen källkod mikrochip LED / PWM Driver projektet (2 / 3 steg)
Steg 2: Software Design
Programmering av 12F609 som skiljer männen från pojkarna. Även om hårdvaran är superenkel, är programvaran inte. Jag tillbringade veckor (OK, kanske två) hälla över det här. Koden nedan har optimerats högt bara för det här programmet. Det finns praktiskt taget ingen RAM eller ROM överblivna att avvara. I själva verket jag sprang ut RAM många många gånger och var tvungen att eter droppa funktionellitet eller leta efter fler optimeringar.
12F609 har inte en UART. Så, ta emot nya kommandon bibehållen PWM kanaler blev min mardröm. PWM-kanaler måste bibehållas även när en ny karaktär tas emot. Det mänskliga ögat är bara så bra på att se minsta blip som kommer från en LED.
Ta emot en ny karaktär med programvara är ingen stor sak. Men, ta emot tecken när du uppdaterar PWM-utgångar. Tricket är att uppdatera LED utgång kanaler medan du väntar på nästa bit på länken comm. I praktiken var det är multitasking, och att få det alla arbetande en större krångel. Helt enkelt omöjligt utan en LSA (logik staten analyzer). Jag använde en utgångsstiftet som en debug pin. Jag skulle växla stiftet på vissa händelser och titta på det på min LSA. Använda detta trick, kunde jag titta på varje bit tas emot av min kod.
OK, OK, nog redan. Nedan hittar du de källfiler som gör magiskt. Jag publicerar dem i hopp om att andra kan lära sig från mina ansträngningar. Det verkligen finns några bra kod där.
Istället för att beskriva alla program i detalj, borde kommentarerna i koden förklara de flesta saker. Kom ihåg, när i tvivel "Använda force - Visa källan." Jag la ett gäng fler kommentarer till koden i ett försök att göra det mer lättläst. Jag hoppas du håller med att det är faktiskt läsbar.
=========================================
Uppdatering: 16 maj 2012
Nedan är en Zip-fil som har 32 hex filer inom. Varje hex filen är den samma utom den hårdkodade nodnummer. Så Flash-nod använder #1 filen "1.hex" för att programmera mikro.
Detta bör hjälpa folk som inte har tillgång till CCS C Compiler.