Gast
#275552
Hallo,
ich habe ein kleines Problem mit dem Timer1
ich will das er bei 0 Startet und dann hoch zählt bis zum dem im Timer1
gespeicherten Wert. Dazwischen soll er den Compare1A erreichen und einen
Interrupt auslösen.
Also Timer1 = 0 /timer1=Compare1A > Compare1_ISR / Timer läuft weiter
/ Timer1 Compare à Timer1 ISR à Timer1 = 0 beginnt von vorne.
Das Port setzten und Löschen im ISR ist nur zum testen da soll später
was anderes passieren deswegen ist auch kein PWM möglich da ich die
beiden ISR dann noch brauche.
Der Timer sollte dann bei Timer1 IRQ automatisch auf 0 gesetzt werden.
Set Tccr1b.3
Ist bestimmt eine Kleinigkeit was ich vergessen oder falsch verstanden
habe.
Kann mir jemand auf die Sprünge helfen.
Danke
Nicklas
$regfile = "m32def.dat"
$crystal = 16000000
$baud = 19200
Config Portb.3 = Output
Config Portd.6 = Output
Config Portd.7 = Output
Config Portb.0 = Input 'Taster
vom Incrementgeber
Config Portb.1 = Input
'Incrementgeber
Config Portb.2 = Input
'Incrementgeber
Dim A As Word
A = 15000
Set Timsk.2
Set Timsk.3
'Set Timsk.4
Set Tccr1b.3
On Int2 Increment_isr
Enable Int2
Config Int2 = Rising
Enable Interrupts
Cursor Off
Compare1a = A
On Compare1a Compare1:
'On Compare1b Compare2:
On Timer1 _timer1:
Timer1 = 65000
Set Tccr1b.0
Do
Cls
Locate 1 , 1
Lcd A
Locate 2 , 1
Lcd B
Compare1a = A
Waitms 100
Loop
Compare1:
Portb.3 = 1
Return
_timer1:
Portb.3 = 0
Return
Increment_isr:
If Pinb.2 = 1 Then
If Pinb.1 = 0 Then
A = A + 100
End If
If Pinb.1 = 1 Then
A = A - 100
End If
End If
Return