Modifications

Programmation embarquée

979 octets ajoutés, 21 mars 2014 à 16:09
désynchronisation
ouf !
====patience et longueur de temps====
J'ai remis l'horloge à son timing d'origine.
 
Mais diable ! comme il est difficile de faire patienter cette horloge qui tourne à l'allure vertigineuse de 20 millions de cycles par secondes !!!
 
j'ai finalement trouvé une solution plus ou moins élégante, en utilisant deux registres couplés (sous forme de words) qui au lieu de plafonner à 255, atteignent 65535 : ça fait déjà plus de cycles.
 
<code lang=asm>delai:
mov r16,temp
outer_loop:; duration ~
 
ldi r26, 0; set r26 to zero
ldi r27, 0; set r27 to zero
delay_loop:;~262143*65535+3= 17179541508 cycles
adiw r26, 1; add 1 to r26 and r27
ldi r28, 0; set r28 to zero
ldi r29, 0; set r29 to zero
delay_loop1:;~4*65535+3= 262143 cycles
adiw r28, 1; add 1 to r28 and r29; 2 cycles
brne delay_loop1; if no overflow loop; 1 or 2 cycles
brne delay_loop; if no overflow loop
dec r16; dcrement R16
brne outer_loop; if no overflow loop
ret</code>
[[Catégorie:FabAcademy]]
0
6 691
modifications