-
-
Danke erst mal für den Feedback.
Im ersten Beitrag ist ja der klassische Weg, den ich so nicht wollte. Ich Suche nach einer Möglichkeit wie:
.dseg
index: .byte
.cseg
loop:
...
ldd temp1,Z+index
...
Die Adresse von index steht in Y
...
ld temp2,Y
inc temp2
st Y,temp2
...
rjmp loop
...
Wenn das Displacment fest im Opcode eingebaut ist, hat sich der Fall für mich erledigt und ich muß den Umweg über Registeraddition zur Adresse machen. Da ich alle Adreßregister verplant habe, muß ich mich mit einer Doppelnutzung begnügen, wo ich dann kurz zwischensichern muß.
Die Zeit spielt keine allzu große Rolle. In einem 5ms-Abstand bei 8MHz hat man reichlich Takte zur Verfügung. Die Hauptarbeit wird über PWM gemacht und den Timer habe ich nur zum Aufwachen genommen. Dann springt das Programm wieder in die Bearbeitungsroutine damit die Leistung der Led's wieder einen Tick mehr nach oben oder unten geregelt wird und danach pennt er weiter. Hätte auch den Wachhund nehmen können, aber bei dem weiß ich im Fehlerfall unter Umständen nicht so genau woher der Sprung zu Reset kommen könnte, vom Watch Dog oder Programmfehler. Darum nehme ich ihn nicht so gern.
Jan, danke für den Tip mit dem Opcode. Auf die Idee bin ich noch garnicht gekommen, mir diesen mal genauer anzusehen. Ich habe mich bisher immer nur für die Schreibweise der Befehle und die Parameter interessiert.
mfg Roger
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen