kawamaha
13.02.2010, 14:48
hallo,
ich nehme meistens counter als timer her. wenns genauer gehen muß nen timer als takt und counter zum vervielfachen. im folgenden beispiel blinkt sekbyte im sekundentakt (nicht genau, aber das spielt hier keine rolle) und minbyte soll alle 9 sek blinken.
meine problem: manchmal blinkt minbyte alle 9 sek, manchmal alle 10 sek.
irgendwie denk ich, liegt es daran dass ich bei xxxbyte=0 gleichzeitig ein anderes byte runterzählen lasse und das xxxbyte wieder auf den anfangswert setze.
läuft jetzt die schleife nochmal durch und xxxbyte ist immer noch 0, dann wird eben das andere byte nochmal runtergezählt.
so ganz hab ich das leider noch nicht kapiert, wann ein befehl gelesen wird und wann er ausgeführt wird.
oder liegts an was anderem :? :? :?
$regfile = "attiny26.dat"
$crystal = 1000000
Ddrb = &B00011100 'Bit 0, 1 auf Eingang
Portb = &B00000011
Config Timer0 = Timer , Prescale = 1024 'Timer0 als timer definieren, teiler 1024 '
Const Preset = 5 'zählt von 1 bis 255
On Timer0 Marke
Timer0 = 230
Enable Timer0
Enable Interrupts
Dim Sekbyte As Byte
Dim Minbyte As Byte
Sekbyte = 0
Minbyte = 9
Do
If Sekbyte < 5 Then
Portb.4 = 1
Else
Portb.4 = 0
End If
If Sekbyte = 20 Then
Decr Minbyte
End If
If Sekbyte = 20 Then
Sekbyte = 0
End If
If Minbyte = 9 Then
Portb.3 = 1
Else
Portb.3 = 0
End If
If Minbyte = 0 Then
Minbyte = 9
End If
Loop
Marke:
Timer0 = 230
If Pinb.0 = 0 Then
Incr Sekbyte
End If
Return
ich nehme meistens counter als timer her. wenns genauer gehen muß nen timer als takt und counter zum vervielfachen. im folgenden beispiel blinkt sekbyte im sekundentakt (nicht genau, aber das spielt hier keine rolle) und minbyte soll alle 9 sek blinken.
meine problem: manchmal blinkt minbyte alle 9 sek, manchmal alle 10 sek.
irgendwie denk ich, liegt es daran dass ich bei xxxbyte=0 gleichzeitig ein anderes byte runterzählen lasse und das xxxbyte wieder auf den anfangswert setze.
läuft jetzt die schleife nochmal durch und xxxbyte ist immer noch 0, dann wird eben das andere byte nochmal runtergezählt.
so ganz hab ich das leider noch nicht kapiert, wann ein befehl gelesen wird und wann er ausgeführt wird.
oder liegts an was anderem :? :? :?
$regfile = "attiny26.dat"
$crystal = 1000000
Ddrb = &B00011100 'Bit 0, 1 auf Eingang
Portb = &B00000011
Config Timer0 = Timer , Prescale = 1024 'Timer0 als timer definieren, teiler 1024 '
Const Preset = 5 'zählt von 1 bis 255
On Timer0 Marke
Timer0 = 230
Enable Timer0
Enable Interrupts
Dim Sekbyte As Byte
Dim Minbyte As Byte
Sekbyte = 0
Minbyte = 9
Do
If Sekbyte < 5 Then
Portb.4 = 1
Else
Portb.4 = 0
End If
If Sekbyte = 20 Then
Decr Minbyte
End If
If Sekbyte = 20 Then
Sekbyte = 0
End If
If Minbyte = 9 Then
Portb.3 = 1
Else
Portb.3 = 0
End If
If Minbyte = 0 Then
Minbyte = 9
End If
Loop
Marke:
Timer0 = 230
If Pinb.0 = 0 Then
Incr Sekbyte
End If
Return