Forum: Mikrocontroller und Digitale Elektronik ATMega32 - Timer ändern


von Matthias (Gast)


Lesenswert?

Hallo zusammen,

ich verwende den BASCOM-Compiler und möchte gern eine LED mit 
verschiedenen Frequenzen blinken lassen. Dazu nutze ich den 16Bit-Timer 
TIMER1.

Folgener Code bewirkt aber keine Änderung der Blinkfrequenz:
1
$regfile = "m32def.dat"
2
$crystal = 16000000
3
4
Led1 Alias Portd.5
5
Taste3port Alias Portd.4
6
Taste3 Alias Pind.4
7
8
Config Taste3 = Input
9
Config Led1 = Output
10
Config Timer1 = Timer , Prescale = 256
11
12
Dim Tm As Long
13
14
On Timer1 Timerroutine
15
16
Enable Timer1
17
Start Timer1
18
19
Tm = 59285
20
21
Enable Interrupts
22
23
24
Do
25
   
26
  Debounce Taste3 , 0 , Set_freq , Sub
27
28
Loop
29
30
31
Timerroutine:
32
33
34
If Led1 = 0 Then
35
   Led1 = 1
36
   Timer1 = Tm
37
   Return
38
End If
39
40
If Led1 = 1 Then
41
   Led1 = 0
42
   Timer1 = Tm
43
   Return
44
End If
45
46
Return
47
48
49
Set_freq:
50
51
Tm = 3035
52
53
Return
54
End

Anfangs blinkt die LED mit 10Hz, wie über Variable 'Tm' in TIMER1 
eingestellt.
Bei einem Druck auf 'Taste3' ruft die Hauptschleife die Subroutine 
'Set_freq' auf, und ändert den Wert von 'Tm' auf 3035, was einer Sekunde 
entspricht. Leider ändert sich die Blinkfrequenz nicht.

Welchen Fehler mache ich hier?

Gruß,
Matthias

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.