Stap 9: Laat de programmering beginnen
Voordat ik zelfs over de behuizing gedacht had was ik de ring programmeren. Maar sinds ik begon te werken op het omhulsel ik de programmeer kant had verlaten tot het einde, dat is de reden waarom ik moest een programmering socket omvatten. Kunt u zich voorstellen als er een bug in mijn code was en ik had geen manier om het te repareren!
Hier is waar een ander probleem bleek zelf. Een gebroken LED!! Ik had geschreven een kleine testprogramma dat zien een patroon op de LEDs laten zou wanneer de macht werd toegepast, dit patroon zou cyclus al kleuren om me te vertellen dat alles was werkt zoals bedoeld. Maar ik was alleen het testen van elke tweede LED op de buitenste ring. Zodra ik had geprogrammeerd om het gebruik van de binnenste ring ik ontdekte dat alleen de eerste helft werkten, zou niet de tweede helft alles wat weergeven. Vreemd genoeg, als de LEDs werden aangedreven van 3.6volts in plaats van 5, gegevens zou doorgeven door deze LED, maar het toonde om het even wat niet nog. De kleuren die vrijkomen uit de LED's is echter veel beter op 5v. dus ik besloot om mijn verliezen en gewoon gebruik maken van 60 LEDs van mijn ring.
Dit is eigenlijk een zegen in vermomming, omdat ik had alleen gedaan een snelle berekening in de achterkant van mijn hoofd terwijl selectie de hersenen van deze klok. De gekozen MCU de MSP430G2553 heeft slechts de 512bytes RAM-geheugen. Ja, bytes. Ik had een buffer voor het opslaan van alle waarden van de LED geprogrammeerd, zij zou dan worden verzonden in een snelle uitbarsting aan alle de LEDs, deze buffer is 360 bytes lang van onze kostbare hulpbron, thats een beetje meer dan 70% van de RAM gegaan daar.
Aangezien het blijkt, één van de koelste eigenschappen van deze klok is een Capacitieve touch sensor regeling die ik ingebed in de rand van de PCB, eerlijk gezegd wist ik zelfs dat als het werken zou, ik heb nooit gemaakt capacitieve sensoren die manier voor. Maar zij werken en werken goed. TI, de vervaardiging van de MSP430 microcontroller lijn, maken een API voor het lezen van capacitieve sensoren, de aanraakgevoelige software library. Het is fantastisch, maar vanwege al het werk dat het heeft te maken, het maakt gebruik van een heleboel RAM. De 12 elementen die ik nodig had om te meten gebruiken 48 bytes voor het opslaan van de huidige waarden van de maatregel en de waarde van een basislijn. dan het aanroepen van de functie verbruikt ruimte op de stack, ik sommige bibliotheek calls opgespoord, en vond ongeveer 30-40 bytes werd gebruikt.
Als u onbekend met computer geheugen layout bent en u geïnteresseerd in het bent, stel ik u die opzoeken. Put bot wanneer de STACK treedt de HEAP staat bekend als een stackoverloop. Het gebeurde mij, mij gehouden getting vreemde onvoorspelbare resultaten, omdat twee delen van mijn code waren de toegang tot de dezelfde locatie in het geheugen, overschrijven elkaars informatie. Zonder te bufferen van de middelste ring had ik meer dan genoeg RAM-geheugen vrijgemaakt voor mijn code.