Stap 5: verbeteringen
Dat brengt mij bij mijn volgende punt: deze code-sucks. Je kunt nauwelijks verwerking andere dan signalering aan de servo, die belachelijk is, omdat de overgrote meerderheid van die tijd wordt besteed in de functie van een vertraging opgesloten. Ook is het moeilijk te voorspellen hoe veel overhead van andere delen van de code die de timing kon gooien hebt af; die constant van evenredigheid mag niet moeten een experiment, het correct werkend te krijgen.Wat deze code zou gebruiken in plaats van de vertragingen is de foto's gebouwd in timers. Code voor dit zou er ongeveer zo uitzien:
OpenTimer0 (TIMER_INT_OFF &
T0_SOURCE_INT & T0_16BIT &
T0_PS_1_2); Ik denk dat dit maakt een timer die een vlag elke 21.8 ms werpt
terwijl (1) {}
terwijl (!. INTCONbits.TMR0IF) {/ / wachten op timer instellen van de vlag
nuttige dingen doen
}
INTCONbits.TMR0IF=0; vlag van de timer reset
pulse verzenden servo
}
Ik weet dat ik zei dat er moest worden een puls elke 10 tot 20 ms, maar 21.8 ms is vrij dicht en hobby servo's zijn over het algemeen zeer vergevingsgezind.