TCNT0 lesen atmega8

Gast #3028394
Lesenswert?
• ▲
▼
Hallo,

ich habe folgendes Problem:
zur Übung schreibe ich gerade an einem mini Programm, dass mit dem 
Timer0 eine Zeit misst, solange der Interrupt-Pin PIND2 auf high 
geschalten ist und diese anschließend ins Register r18 lädt.
Wenn man das ganze jetzt im Simulator testet, wird komischerweise immer 
die Zahl 0x32 in das Register r18 geladen, egal wie lange der Timer 
läuft.
Kann mir bitte jemand helfen? Wo liegt der Fehler ?


 .include "m8def.inc"

.def temp = r16

.org 0x000
         rjmp main            ; Reset Handler
.org INT0addr
         rjmp timerstarten


main:

         ldi temp, LOW(RAMEND)
         out SPL, temp
         ldi temp, HIGH(RAMEND)
         out SPH, temp

         ldi temp, 0x00
         out DDRD, temp

         ldi temp, 0xFF
         out DDRB, temp

         ldi temp,  (0<<ISC01)
         out MCUCR, temp
         ldi temp,  (1<<ISC00)
         out MCUCR, temp
         ldi temp, (1<<INT0)
         out GICR, temp

         sei                   ; Interrupts allgemein aktivieren

loop:    rjmp loop             ; eine leere Endlosschleife

timerstarten:
         ldi     temp, (1<<CS00)       ; CS00 setzen: Teiler 1
         out     TCCR0, temp
         inc r17
         cpi r17,2
         brsh timerstoppen
         rjmp weiter
timerstoppen:

         ldi r17, 0x00
         ldi     temp, (0<<CS00)
         out TCCR0, temp
         ldi r18, TCNT0       ; <-- Hier sollte der Wert des Timers in 
r18                                                geladen werden

         out TCNT0, r17


weiter:
         reti
Gast #3030254
Lesenswert?
• ▲
▼
Hi

>danke :) es funktioniert , aber wann nimmt man ldi wann in und wann out

Wenn die IO-Adresse <=0x3F dann in oder out. Wenn größer, dann lds oder 
sts. In lädt ein Register mit dem Inhalt eines IO-Register. Lds mit dem 
Inhalt einer RAM-Adresse oder eines IO-Registers aus dem erweiterten 
IO-Bereich.

Out speichert den Inhalt eines Registers in ein IO-Register. Sts lädt 
eine RAM-Adresse oder ein IO-Register im erweiterten Bereich mit dem 
Inhalt eines Registers.

Ldi hat damit nichts zu tun. Damit wird ein Register mit einer Konstante 
geladen.

MfG Spess

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren