Stap 2: Software Design
Programmeren van de 12F609 scheidt de mannen van de jongens. Terwijl de hardware kan super eenvoudig, is de software niet. Ik heb weken (OK, misschien twee) gieten over dit spul. De onderstaande code is enkel voor deze toepassing zeer geoptimaliseerd. Er is vrijwel geen RAM of ROM overgebleven te sparen. In feite, ik liep uit RAM vele vele malen en moest ether drop functionaliteit of kijk voor meer optimalisaties.
De 12F609 beschikt niet over een UART. Dus, nieuwe opdrachten ontvangen met behoud van de PWM-kanalen werd mijn nachtmerrie. Het PWM-kanalen moeten worden gehandhaafd, zelfs terwijl een nieuw karakter wordt ontvangen. Het menselijk oog is net zo goed bij het zien van de kleinste blip die afkomstig zijn van een LED.
Ontvangst van een nieuw karakter met behulp van software is geen big deal. Echter, ontvangen tekens tijdens het bijwerken van de PWM outputs. De truc is om de LED uitgangskanalen bijwerken tijdens het wachten voor de volgende bits op de comm-link. In feite, was het is multitasking, en krijgt het alle werken een grote ruzie. Onmogelijk zonder een LSA (logica staat analyzer). Ik gebruikte één uitgang pins als een debug-pin. Ik zou de pin van bepaalde gebeurtenissen in-/ uitschakelen en kijk daarvoor op mijn LSA. Met behulp van deze truc, kon ik kijken elke bit die wordt ontvangen door mijn code.
OK, OK, al genoeg. Hieronder vindt u de bronbestanden waarvan alle magie doen. Ik ben de publicatie van hen in de hoop dat anderen kunnen leren van mijn inspanningen. Er is echt een goede code in.
In plaats van alle software in detail beschrijven, moeten de opmerkingen in de code de meeste dingen uitleggen. Vergeet niet, bij twijfel "Gebruik van de kracht - de bron bekijken." Ik voegde een bos meer reacties aan de code in een poging om het beter leesbaar te maken. Ik hoop dat u het ermee eens zult zijn dat het is, inderdaad, leesbaar.
=========================================
Update: Mei 16, 2012
Hieronder vindt u een Zip gehechtheid heeft 32 hex bestanden binnen. Elke hex bestand is hetzelfde, behalve voor de hardcoded knooppuntnummer. Dus, naar knooppunt flash gebruik #1 bestand "1.hex" voor het programmeren van de micro.
Mensen die geen toegang tot de CCS C Compiler zou dit moeten helpen.