Citazione:
Originalmente inviato da elicottero78 ancora grazie,ora ci provo |
Giusto per farti una cultura:
Chapter 9: Instruction Set - Book: PIC Microcontrollers
qui puoi trovare i tempi di esecuzione delle singole istruzioni.
tieni presente che ammesso che picgenius ottimizzi il codice un ciclo for è così costituito:
assegnazione del valore iniziale alla variabile usata per il loop 1usec
esecuzione del loop (variabile dipende dal codice che ci metti)
incremento della variabile (1us)
test con skip della prossima istruzione (1us)
jump ad inizio loop (2us)
quindi ogni ciclo di un loop vuoto scritto in assembly prende almeno 4us (non 2 come ti avevo detto, visto che mi ero dimenticato il jump) +1 per l'inizializzazione iniziale
anche il più stupido loop
for i=0 to 0
end for
prende 1us (assegnazione) + 1us (incremento) + 2us (test con skip della prossima istruzione visto che il PC viene modificato dato che il loop termina subito)
Se si vuole estrema precisione nei loop questi tempi vanno tenuti in considerazione.
Se ben implementata la
delay_precision_us è molto più precisa di quanto tu non possa fare con un loop.
Altrimenti per generare impulsi precisi vanno usati gli interrupt e timer interni, ma non so se con picgenius si possa fare.