PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Anfänger hat Probleme mit Timer in der Simulation



maikatze
14.01.2008, 13:18
Hallo,

ich versuche ( als blutiger Anfänger) in folgendem Program den Timer0 in der Simulation auszulesen. Das gelingt mir aber nicht, der Wert bleibt immer 00.
Wo liegt der fehler?
$regfile = "ATtiny13.DAT"
$crystal = 1000000
Config Portb.4 = Output
Config Portb.0 = Input
Config Portb.7 = Output
$hwstack = 22

Config Timer0 = Counter , Prescale = 1
Enable Timer0


Dim Timergestarted As Boolean
Dim Zaehler As Integer


Led Alias Portb.4
Puls Alias Portb.0
Ausgang Alias Portb.7


Timergestarted = 0
Zaehler = 0

Stop Timer0
Timer0 = 0

Do
If Puls = 1 Then
If Timergestarted = 0 Then
Led = 1
Start Timer0
Timergestarted = 1
End If
End If

If Puls = 0 Then
If Timergestarted = 1 Then
Led = 0
Stop Timer0
Zaehler = Timer0
Timergestarted = 0
End If
End If

Andy91
14.01.2008, 16:51
Bevor du in die do-loop-schleife gehst stoppst du den timer und setzt sogar auf null, heißt der ist GAR nicht mehr definiert. Du müsstest ihn NOCH einmal definieren......

for_ro
14.01.2008, 17:10
Hallo,
das mit dem Start und Stop Timer0 ist so schon ok, aber wenn das Ganze von dem Input Pin B.0 abhängen soll, dann musst du den mit

Puls Alias Pinb.0

angeben, sonst fragst du nur den Pullup Widerstand ab.
Eizelne Pins soll man laut Manual immer mit

Config Pinb.4=Output
Config Pinb.0=Input

angeben, funktioniert im Moment aber auch so.
Im Simulator auch daran denken, das Häkchen bei "Sim Timers" zu setzen.

Gruß

Rolf

Sauerbruch
15.01.2008, 15:29
Vor allem liegt´s aber hier dran:


Config Timer0 = Counter

Damit arbeitet der Timer als Zähler, d.h. er zählt nicht im Systemtakt, sondern wird von einem externen Clock-Signal gesteuert (das beim Tiny13 an PinB.2 angelegt werden müsste).

Mit


Config Timer0 = Timer, Prescale=1

sollte Timer0 auch ordentlich hochzählen.

maikatze
21.01.2008, 18:43
Besten Dank,
habe den timer zum laufen bekommen.