ok, es klappt jetzt. es geht jetzt mit der ddition, die mehrere befehle
benötigt.
stimmt. ich habe nur interrupts als befehle laufen. wärend der
restlichen zeit passiert nix. es wird wärend der restlichen zeit immer
nur eine schleife durchlaufen.
ich benutze als auslösewert für den timer ck8 .
ich habe die stelle so mit NOP-befehlen verschoben, daß sichergestellt
ist, daß wärend der addierung keine veränderung des timer-wertes
auftritt.
so war es jedenfalls in der simulation.
jetzt ist die frage:
kann es denn jetzt trotzdem passieren, daß in einem zustand, den ich
nicht simuliert habe, trotzdem der interrupt so unglücklich aufgerufen
wird, daß plötzlich der wert sich wärend der addition verändert?
also ich habe mir darauf die frage so beantwortet, nachdem ich eure
antworten gelesen habe:
ich muß überlegen, welche taktlänge zwischen der minimalen und der
maximalen taktlänge der benutzten befehle liegen kann.
und diese anzahl an taktzyklen kann sich der erhöhungszeitpunkt maximal
verschieben.
d.h, wenn ich auch wärend der restlichen zeit, wo keine interrupts
sind, den controller etwas arbeiten lasse, muß ich gucken, wieviele
takte mein größter befehl lang ist. davon ziehe ich eins ab.
dann mache ich das wieder so, daß in der simulation der timer-wert
gerade eben umgesprungen ist, bevor die addition gestartet wird.
zu dieser version addiere ich aber noch die anzahl der NOPs hinzu, die
zwischen der minimalen und maximalen befehlslänge der verwendeten
befehle liegen. d.h., wenn alles geht, und ich einen maximal 4-takt
langen befehl habe, füge ich noch 3 zusätzliche NOPs ein.
frage jetzt:
ist das richtig so oder sind noch wo denkfehler drin oder habe ich noch
was nicht berücksichtigt?
aber wenn ich, wärend keine interrupts ausgeführt werden, nur die
loop-schleife laufen habe, ist doch sicher garantiert, daß er immer
nach der selben stelle in den interrupt springt oder kann bei einer
loop-schleife auch dieser fehler-effekt auftreten, daß er nicht immer
nach der selben zeit von takten in den interrupt springt?