Stap 3: Softwareontwerp
Het feit dat er acht anoden in de SSD en acht bits in een byte was ook duidelijk om te negeren, zodat het gehele ontwerp is geïnformeerd door deze vereniging. Met behulp van een interrupt was nodig om de Arduino te doen iets anders tussen SSD vernieuwd. Dit betekent dat alle beslissingen Selecteer pin in de Interrupt Service Routine timerfunctie voorkomen. ISRs moeten zo efficiënt mogelijk om te houden met een minimale hoeveelheid tijd om uit te voeren. Als de ISR-uitvoeringstermijn niet aanzienlijk korter is dan de timerperiode is, weinig vooruitgang zal worden geboekt voor het uitvoeren van de verklaringen in de loop-functie. Ziet u opmerkingen in de functie van de ISR over het vermijden van tijdrovende springt (bijvoorbeeld "als"-instructies) waar mogelijk. Realiseren dat slechts één SSD wordt onderhouden tijdens elke interrupt en actief vanaf het einde van de ISR tot de volgende timer teek is.
Onderdeel van het hardwareontwerp werd gemaakt met de programmering in het achterhoofd. Bijvoorbeeld, is er geen hardware-reden om te kiezen van één Selecteer regel in het voordeel van een ander om te verbinden met een bepaalde SSD's gemeenschappelijke kathode. Het is echter een vereenvoudiging dat de eerste vier select lijnen, de gemeenschappelijke kathodes van SSD en de eerste drie segmenten positioneel-onderling afhankelijke relaties hebben.
De resulterende ISR is klein en snel genoeg zonder toevlucht te nemen tot het gebruik van de poort-registers. De programmering zou zijn geweest veel meer ingewikkeld en inefficiënt als dat nodig was voor het ontwerp van een willekeurige bedrading. Dus wanneer het denken over uw projecten, aandacht besteden aan de symbiose tussen hardware en software en zoek naar de juiste afwegingen.
Charlieplexing is een geweldige techniek om in uw zak met trucs.