Blamaster
29.02.2008, 12:44
Hi,
ich hatte vor einiger Zeit schonmal wegen einem Timer Problem gepostet. Nun konnte der Fehler schonmal weiter eingegrenzt werden.
Dieser Code geht. Avr auf dem display erscheint eine 0 die sich dann halt im sekundentakt erhöht.
$regfile = "m16def.dat"
$crystal = 16000000
$hwstack = 32
$swstack = 20
$framesize = 40
$baud = 9600
Config Portb.3 = Input
Config Lcdpin = Pin , Db4 = Porta.3 , Db5 = Porta.2 , Db6 = Porta.1 , Db7 = Porta.0 , E = Porta.4 , Rs = Porta.5
Config Lcd = 24 * 2
Initlcd
Cursor Off
Dim Minuten As Byte
Dim Sekunden As Byte
Sekunden = 0
Config Timer1 = Timer , Prescale = 256
Const Timervorgabe = 3036
On Timer1 Timer_irq
Timer1 = Timervorgabe
Enable Interrupts
Do
Gosub Automodus
Loop
Automodus:
Enable Timer1
Do
Locate 2 , 1
Lcd Sekunden
If Sekunden = 5 Then
Locate 1 , 1
Lcd "5 sek"
End If
Loop
End
Timer_irq:
Timer1 = Timervorgabe
Incr Sekunden
If Sekunden = 60 Then
Incr Minuten
Sekunden = 0
End If
Return
Sobald ich nun aber einen Taster mit einbaue, der den zählvorgang startet fängt er bei 1 an zu zählen anstelle von 0.
$regfile = "m16def.dat"
$crystal = 16000000
$hwstack = 32
$swstack = 20
$framesize = 40
$baud = 9600
Config Portb.3 = Input
Config Lcdpin = Pin , Db4 = Porta.3 , Db5 = Porta.2 , Db6 = Porta.1 , Db7 = Porta.0 , E = Porta.4 , Rs = Porta.5
Config Lcd = 24 * 2
Initlcd
Cursor Off
Dim Minuten As Byte
Dim Sekunden As Byte
Sekunden = 0
Config Timer1 = Timer , Prescale = 256
Const Timervorgabe = 3036
On Timer1 Timer_irq
Timer1 = Timervorgabe
Enable Interrupts
Do
If Pinb.3 = 1 Then
Gosub Automodus
End if
Loop
Automodus:
Enable Timer1
Do
Locate 2 , 1
Lcd Sekunden
If Sekunden = 5 Then
Locate 1 , 1
Lcd "5 sek"
End If
Loop
End
Timer_irq:
Timer1 = Timervorgabe
Incr Sekunden
If Sekunden = 60 Then
Incr Minuten
Sekunden = 0
End If
Return
Jemand eine Idee wodran das liegen kann ?
mfg Blamaster
ich hatte vor einiger Zeit schonmal wegen einem Timer Problem gepostet. Nun konnte der Fehler schonmal weiter eingegrenzt werden.
Dieser Code geht. Avr auf dem display erscheint eine 0 die sich dann halt im sekundentakt erhöht.
$regfile = "m16def.dat"
$crystal = 16000000
$hwstack = 32
$swstack = 20
$framesize = 40
$baud = 9600
Config Portb.3 = Input
Config Lcdpin = Pin , Db4 = Porta.3 , Db5 = Porta.2 , Db6 = Porta.1 , Db7 = Porta.0 , E = Porta.4 , Rs = Porta.5
Config Lcd = 24 * 2
Initlcd
Cursor Off
Dim Minuten As Byte
Dim Sekunden As Byte
Sekunden = 0
Config Timer1 = Timer , Prescale = 256
Const Timervorgabe = 3036
On Timer1 Timer_irq
Timer1 = Timervorgabe
Enable Interrupts
Do
Gosub Automodus
Loop
Automodus:
Enable Timer1
Do
Locate 2 , 1
Lcd Sekunden
If Sekunden = 5 Then
Locate 1 , 1
Lcd "5 sek"
End If
Loop
End
Timer_irq:
Timer1 = Timervorgabe
Incr Sekunden
If Sekunden = 60 Then
Incr Minuten
Sekunden = 0
End If
Return
Sobald ich nun aber einen Taster mit einbaue, der den zählvorgang startet fängt er bei 1 an zu zählen anstelle von 0.
$regfile = "m16def.dat"
$crystal = 16000000
$hwstack = 32
$swstack = 20
$framesize = 40
$baud = 9600
Config Portb.3 = Input
Config Lcdpin = Pin , Db4 = Porta.3 , Db5 = Porta.2 , Db6 = Porta.1 , Db7 = Porta.0 , E = Porta.4 , Rs = Porta.5
Config Lcd = 24 * 2
Initlcd
Cursor Off
Dim Minuten As Byte
Dim Sekunden As Byte
Sekunden = 0
Config Timer1 = Timer , Prescale = 256
Const Timervorgabe = 3036
On Timer1 Timer_irq
Timer1 = Timervorgabe
Enable Interrupts
Do
If Pinb.3 = 1 Then
Gosub Automodus
End if
Loop
Automodus:
Enable Timer1
Do
Locate 2 , 1
Lcd Sekunden
If Sekunden = 5 Then
Locate 1 , 1
Lcd "5 sek"
End If
Loop
End
Timer_irq:
Timer1 = Timervorgabe
Incr Sekunden
If Sekunden = 60 Then
Incr Minuten
Sekunden = 0
End If
Return
Jemand eine Idee wodran das liegen kann ?
mfg Blamaster