Visualizza messaggio singolo
Vecchio 11 ottobre 11, 13:11   #6 (permalink)  Top
romoloman
Adv Moderator
 
L'avatar di romoloman
 
Data registr.: 15-08-2007
Residenza: sto a Massa ma sono molto Positivo
Messaggi: 12.071
Citazione:
Originalmente inviato da elicottero78 Visualizza messaggio
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.
__________________
Vivere in qeusto mondo e molto belo belo e vale la pena starci ma a volte in questa UNICA vita che ci apartiene posono succedere cose brute brute alora mi chiedo perche siete incazziati domani pole esere anche lultimo
Grazie "TRANQUILLO"
FAI 15766
romoloman non è collegato   Rispondi citando