- 3D-Druck Einstieg und Tipps         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 15 von 15

Thema: ATtiny25 Timer0 läuft nicht

  1. #11
    Neuer Benutzer Öfters hier
    Registriert seit
    01.02.2008
    Beiträge
    12
    Anzeige

    LiFePo4 Akku selber bauen - Video
    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

  2. #12
    Neuer Benutzer Öfters hier
    Registriert seit
    01.02.2008
    Beiträge
    12
    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?

  3. #13
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    52
    Beiträge
    2.236
    Frage: Wie bekomme ich in R16 den Inhalt des Registers, dessen Adresse in R0 steht?
    Hmmm welche Adresse steht den in R0 ?
    Gemappte SRAM Adresse ?

    Hmmm,was mir spontan einfällt ist sowas:

    Code:
            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
    Es ist zwar blöd über einen Zeiger zu gehen, was besseres fällt mir im Moment aber nicht ein

    Im Simulator klappt es aber

    Gruß Sebastian
    Software is like s e x: its better when its free.
    Linus Torvald

  4. #14
    Neuer Benutzer Öfters hier
    Registriert seit
    01.02.2008
    Beiträge
    12
    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

  5. #15
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    52
    Beiträge
    2.236
    Hallo Klaus,
    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.
    Hmm, da bin ich mit bei 'Timer Teil I' eingestiegen also ohne Interrupt, sondern den TOV* pollen ist das zu knapp ?

    Ich muß darüber nachdenken, danke

    Gruß Sebastian
    Software is like s e x: its better when its free.
    Linus Torvald

Seite 2 von 2 ErsteErste 12

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test