Die letzte Frage hätte ich mir sparen können:
ich halte die Adresse in zwei Registern R1=ZL, R2=ZH und den Offset in R3 dann die Adresse in ZL/holen und Offset zu ZL hinzuaddieren, mit lpm abholen...
kennt jemand eine Lösung für die erste Frage?
Hallo, es läuft alles ganz gut mit den Timern und den Interrupts, die Nutzung des Vergleichsregisters schafft eine Feinabstimmung der Zeit, die man im normalen Timerüberlauf Interrupt damit erreicht, dass man in der IR Routine den Timerinhalt neu setzt. So bekomme ich bei Teilerfaktor 1024 und 3x 162 (162 in TCNT0) ziemlich genaue 2 Hertz, die ich haben wollte.
Ich habe ein weiteres Problem mit der indirekten Adressierung, vielleicht müsste ich dazu ein neues Thema aufmachen?
Frage: Wie bekomme ich in R16 den Inhalt des Registers, dessen Adresse in R0 steht?
oder im Flash stehen 10 Daten z.B an hex10, die in beliebiger Wahl über das Register ZL/ZH ausgelesen werden sollen, mal das vierte mal das siebente usw. (nicht mit ADIW, da dies das ZL verändert)
herzlich Klaus
Die letzte Frage hätte ich mir sparen können:
ich halte die Adresse in zwei Registern R1=ZL, R2=ZH und den Offset in R3 dann die Adresse in ZL/holen und Offset zu ZL hinzuaddieren, mit lpm abholen...
kennt jemand eine Lösung für die erste Frage?
Hmmm welche Adresse steht den in R0 ?Frage: Wie bekomme ich in R16 den Inhalt des Registers, dessen Adresse in R0 steht?
Gemappte SRAM Adresse ?
Hmmm,was mir spontan einfällt ist sowas:
Es ist zwar blöd über einen Zeiger zu gehen, was besseres fällt mir im Moment aber nicht einCode:ldi r16,16 mov r0,r16 ;in r0 landet die Adresse von Register r17 ldi XL,0 ;X Zeiger auf SRAM 0 -> r0 ldi XH,0 ;dito ldi r17,0x80 ;Schreibe irgendwas in Zielregister add XL,r0 ;addiere den inhalt von r0(Adresse von r17) ld r16,X ; in r16 steht jetzt 0x80
Im Simulator klappt es aber
Gruß Sebastian
Linus TorvaldSoftware is like s e x: its better when its free.
Vielen Dank, das ist noch mehr als über das ZRegister mit Offset. dann bin ich mit meiner Lösung über das Flash oder Sram zufrieden.
Hier noch ein Feedback zu deiner HP: Beim Thema interupt hätte es mir geholfen, erst etwas über das grundlegenede Interruptverfahren zu erfahren, laso erst den entspechen Interrupt im z.B. Timerregister feigeben und dann sei. Damit gibt es mehrere Möglichkeiten IRs freizugeben. Auch mit welchen Flags Ergebnisse gepollt werden können.
Wenn mans erstmal geschnallt hat ist es einfach und logisch
herzlich Klaus
Hallo Klaus,
Hmm, da bin ich mit bei 'Timer Teil I' eingestiegen also ohne Interrupt, sondern den TOV* pollen ist das zu knapp ?Beim Thema interupt hätte es mir geholfen, erst etwas über das grundlegenede Interruptverfahren zu erfahren, laso erst den entspechen Interrupt im z.B. Timerregister feigeben und dann sei. Damit gibt es mehrere Möglichkeiten IRs freizugeben. Auch mit welchen Flags Ergebnisse gepollt werden können.
Ich muß darüber nachdenken, danke
Gruß Sebastian
Linus TorvaldSoftware is like s e x: its better when its free.
Lesezeichen