Hallo an alle
Ich versuche seit 2 Tagen den Timer 1 des Attiny45 im Overflow Modus zu
initialisierern :( Doch es funktioniert einfach nicht. Den Timer0 hab
sofort zum Laufen bekommen
Hier der Code:
1
.org OVF1addr
2
rjmp test
3
...
4
5
ldi temp, 0x06 ;Presacler = 32
6
out TCCR1, temp
7
8
ldi temp, 0x04 ;Enable Timer1 Overflow Interrupt
9
out TIMSK, temp
10
11
sei ;Enable Interrupts
Hat jeand eine Ahnung was da los ist?
Danke im Voraus
mfg Robert
Robert Schilling wrote:
> Hier der Code:
Wo denn ?
Ich sehe nur irgendwelche Fragmente.
> Hat jeand eine Ahnung was da los ist?
Was geht denn nicht ?
Simulierst Du (kann Dein Simulator überhaupt T1) ?
Oder debuggst Du ?
Oder Real Life ?
Real Life ist immer das, was wirklich zählt.
Peter
ldi highLow, RISING ;highLow initialisieren. 1. Flanke ist eine HIGH
46
47
sei ;Enable Interrupts
48
49
loop: rjmp loop ;Haupschleife
50
51
EXT_INT:
52
cpi highLow, RISING ;Der Puls ist eine Steigede Flanke
53
brne FALLING_EDGE ;Wenn eine Fallende Flanke, spring zur Routine
54
ldi temp, 0x00
55
out TCNT1, temp ;Counter resetten
56
ldi highLow, FALLING ;Nächster Puls ist eine Fallende Flanke
57
reti
58
59
FALLING_EDGE:
60
ldi puls, TCNT1
61
ldi highLow, RISING ;Nächser Puls ist eine Steigende Flanke
62
reti
63
64
test: reti
> Was geht denn nicht ?
TCNT1 wird nicht erhöht und bleibt auf 0.
> Simulierst Du (kann Dein Simulator überhaupt T1) ?> Oder debuggst Du ?> Oder Real Life ?
Ich simuliere mit dem Simulator von AVR Studio.
mfg Robert
Ich glaub der Simulator hat einen Bug beim dem Tiny und dem Timer. Suche
mal hier im Forum. P.S. Ich habe dabei auch schon einige Stunden
verloren.
Im Prozessre geht der timer aber.
Beitrag "Timer 1 vom Tiny25 leuft nicht an"
> ldi puls, TCNT1
"ldi" lädt einen konstanten Wert in ein Rechenregister. Das ist aber
sicher nicht das, was hier gemacht werden soll. Du willst ja vermutlich
nicht die Adresse von TCNT1 in puls stehen haben, oder irre ich mich?
Ich denke, an dieser Stelle (und auch an ein paar anderen Stellen) ist
der Befehl "in" Dein Freund...