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.

Code:
$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.

Code:
$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