Hallo!
Ich hatte vor, eine LED im Sekudnentakt blinken zu lassen, allerdings
macht mir der Timer einen Strich durch die Rechnung.
Als erstes berechnete ich die Taktrate:
Oszillatorfrequenz/Prescaler = 10^6Hz/64 = 15625Hz
Daraus leitete ich ab, dass der Timer in einer Sekunde 15625 Schritte
zählt. Um auf eine Sekunde zu kommen, ziehe ich die maximalen
Zählschritte von der Taktrate ab:
65535-15625=49910
Daraus schrieb ich folgendes Programm:
1 | 'Versuch
|
2 | 'Timer-Übung
|
3 |
|
4 | $regfile = "Attiny26.dat"
|
5 | $crystal = 1000000
|
6 |
|
7 |
|
8 | Config Porta.5 = Output
|
9 | Config Porta.6 = Output
|
10 | Led1 Alias Porta.5
|
11 | Led2 Alias Porta.6
|
12 |
|
13 | Config Timer1 = Timer , Prescale = 1024
|
14 | Enable Timer1
|
15 | On Timer1 Ueberlauf
|
16 | Enable Interrupts
|
17 | Timer1 = 49910
|
18 |
|
19 |
|
20 |
|
21 | Do
|
22 |
|
23 |
|
24 | Led2 = 0
|
25 | Waitms 100
|
26 |
|
27 | Led2 = 1
|
28 | Waitms 100
|
29 |
|
30 | Loop
|
31 |
|
32 |
|
33 |
|
34 | Ueberlauf:
|
35 |
|
36 | Timer1 = 49910
|
37 | Toggle Led1
|
38 |
|
39 | Return
|
40 |
|
41 | End
|
Leider bekomme ich beim kompilieren nur Fehlermeldungen, da "Value
doesen't fit into BYTE[49910]".
Kann mir jemand sagen, warum das so ist?
Vielen Dank für eure Antworten!
Thomas