xdr4g0n
11.09.2006, 11:51
Hallo,
Ich rätsel schon ein weilchen rum, wie ich rausbekomm wie weit meine verzögerungsschleifen zählen müssen damit ich ungefähr eine sekunde wartezeit erreiche. Ich hab einen atmel mega32 mit 16mhz quartz also entsrechen einer sekunde 16 Millionen schritte, klar.
Ich hier ist mein code bis jetzt.
.include "m32def.inc"
reset:
ldi r16,255
ldi r17,00
out ddrc,r16
start:
;ldi r21,0
;ggausen:
ldi r18,0
ganzausen:
ldi r19,0
ausen:
ldi r20,0
innen:
out portc,r16
inc r20
cpi r20,76
brlo innen
inc r19
cpi r19,76
brlo ausen
inc r18
cpi r18,76
brlo ganzausen
;inc r21
;cpi r21,4
;brlo ggausen
;ldi r21,0
;ggausen2:
ldi r18,0
ganzausen2:
ldi r19,0
ausen2:
ldi r20,0
innen2:
out portc,r17
inc r20
cpi r20,76
brlo innen2
inc r19
cpi r19,76
brlo ausen2
inc r18
cpi r18,76
brlo ganzausen2
;inc r21
Mein Lösungsansatz zur Rechnung ist ganz klar falsch, ich poste ihn trotzdem, vielleicht ists ja nur ein kleiner fehler.
16000000 = 4*3*3*n^3
weil:
16 Mio Takte pro sekunde
4 Schritte in der inneren schleife, je 3 in den äuseren
n ist die Anzahl mit welcher die schleifen wiederholt werden, und davon gibt es ja 3.
16 Mio werden durch 36 geteilt, aus dem Ergebnis zieh ich die 3. Wurzel und hab dann n = ca.76.
Der wert ist deutlich zu niedrig.
Ich hoffe ich hab meine Erklärungen oder wenigstens die Frage verständlich formuliert. Für mein problem gibt es bestimmt eine Standartlösung.
Ich rätsel schon ein weilchen rum, wie ich rausbekomm wie weit meine verzögerungsschleifen zählen müssen damit ich ungefähr eine sekunde wartezeit erreiche. Ich hab einen atmel mega32 mit 16mhz quartz also entsrechen einer sekunde 16 Millionen schritte, klar.
Ich hier ist mein code bis jetzt.
.include "m32def.inc"
reset:
ldi r16,255
ldi r17,00
out ddrc,r16
start:
;ldi r21,0
;ggausen:
ldi r18,0
ganzausen:
ldi r19,0
ausen:
ldi r20,0
innen:
out portc,r16
inc r20
cpi r20,76
brlo innen
inc r19
cpi r19,76
brlo ausen
inc r18
cpi r18,76
brlo ganzausen
;inc r21
;cpi r21,4
;brlo ggausen
;ldi r21,0
;ggausen2:
ldi r18,0
ganzausen2:
ldi r19,0
ausen2:
ldi r20,0
innen2:
out portc,r17
inc r20
cpi r20,76
brlo innen2
inc r19
cpi r19,76
brlo ausen2
inc r18
cpi r18,76
brlo ganzausen2
;inc r21
Mein Lösungsansatz zur Rechnung ist ganz klar falsch, ich poste ihn trotzdem, vielleicht ists ja nur ein kleiner fehler.
16000000 = 4*3*3*n^3
weil:
16 Mio Takte pro sekunde
4 Schritte in der inneren schleife, je 3 in den äuseren
n ist die Anzahl mit welcher die schleifen wiederholt werden, und davon gibt es ja 3.
16 Mio werden durch 36 geteilt, aus dem Ergebnis zieh ich die 3. Wurzel und hab dann n = ca.76.
Der wert ist deutlich zu niedrig.
Ich hoffe ich hab meine Erklärungen oder wenigstens die Frage verständlich formuliert. Für mein problem gibt es bestimmt eine Standartlösung.