Stap 4: conclusie
Ik hoop dat u deze code nuttig voor uw volgende project die maakt gebruik van een roterende encoder of die het heeft u geïnspireerd om een roterende encoder beschouwen als een input voor uw volgende project.
Samenvatting van de doelstellingen
Ik heb geprobeerd om te schrijven wat code die zorgt voor een goed evenwicht van:
- Overdraagbaarheid (poort manipulatie code is het compromis als verplaatsen naar andere chips)
- Snelheid (poort manipulatie echt helpt)
- Lage gecompileerd codegrootte (poort manipulatie en bitmath helpt)
- Betrouwbaar registreert langzaam en snel handmatige rotatie
- Verminderd zinloze interrupt routine serviceoproepen (met behulp van stijgende interrupt en interrupts tijdelijk uit te schakelen)
Aanvullende opmerkingen en ideeën voor verbetering
Deze code is niet perfect met alle middelen en je zou willen andere pinnen kunt wijzigen. Ik testte deze code met de schets die de meeste vertraging werd veroorzaakt en minst betrouwbare lezingen met de andere benaderingen die besproken - ik zeker nog niet vergeleken met timers om te zien wiens code produceert minder zinloze interrupt service routines, neemt de minste tijd uit te voeren of filters uit het hoogste percentage contact bounces. Misschien zou iemand willen doen een benchmarktest tegen de andere benaderingen die er.