ATMega32 - Timer ändern

Gast #1765457
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren