Hallo!
Ich möchte gerne mit einem ATMEGA8 die Länge eines Pulses am INT1
messen.
Die Zeit soll zwischen einer fallenden und einer steigenden Flanke
gemessen werden.
Ich habe es so versucht:
1 | 'Timer1 mit 10ms Zeitbasis
|
2 | Config TIMER1 = Timer , Prescale = 8
|
3 | On Timer1 timerirq
|
4 | Enable Timer1
|
5 | Timer1 = 55536
|
6 |
|
7 | 'Externer Interrupt1
|
8 | Config INT1 = Falling
|
9 | On INT1 Int1irq
|
10 | Enable Int1
|
11 |
|
12 | Enable Interrupts
|
13 |
|
14 | Dim Zeit1 as Word
|
15 | Dim Zeit1alt as Word
|
16 | Dim Int1falling as Bit
|
17 |
|
18 |
|
19 | Main:
|
20 | Do
|
21 | <mein code>
|
22 | Loop
|
23 |
|
24 |
|
25 | Timer1irq:
|
26 | TIMER1 = 55536
|
27 | Incr Zeit1
|
28 |
|
29 | If Zeit1 >= 1000 Then
|
30 | Print Zeit1alt
|
31 | End If
|
32 | return
|
33 |
|
34 |
|
35 | Int1irq:
|
36 | If Int1falling = 1 Then
|
37 | Zeit1 = 0
|
38 | Int1falling = 0
|
39 | Elseif Int1falling = 0 Then
|
40 | Zeit1alt = Zeit1
|
41 | Int1falling = 1
|
42 | End if
|
43 | return
|
Leider funktioniert das Ganze nicht so, wie ich es mir vorgestellt habe.
Die Zeiten, die ich am Terminal ausgegeben bekomme stimmen nicht.
Vielleicht kann mir jemand helfen, der soetwas schoneinmal gemacht hat.
Karl