| Weitere Artikel aus dem Elo-Magazin |
Einen Drehgeber abfragen
von B. Kainka
Literatur: Lernpaket Mikrocontroller
Ein Drehgeber enthält zwei Kontakte oder Magnetschalter, die bei einer Achsendrehung abwechselnd umschalten. Man verwendet sie als Bedienelemente oder zur Positionserkennung in Motoren.
Der Drehgeber soll über zwei Ports ausgewertet werden um einen Motor zu überwachen. Der ATtiny13 kennt den Port Change Interrupt (PCINT0 ...) an allen Ports. Jeder Pin kann also einen Interrupt auslösen. Bascom kennt die Anweisung ON PCINT0. Allerdings klappt die Einrichtung des Interrupts noch nicht ganz. Hier muss man etwas nachhelfen und die Register PCMSK und GIMSK selbst beschreiben. In PCMSK setzt man eine Maske für die gewünschten Ports. In diesem Fall sollte nur PB3 einen Interrupt auslösen, daher wird 8 zugewiesen. In GIMSK muss das Bit 5 gesetzt werden, um den Port Change Interrupt freizugeben.
=
"attiny13.dat"$crystal
=
1200000Baud
=
9600Dim
D
As
IntegerConfig
Adc
=
Single
,
Prescaler
=
AutoStart
AdcOpen
"comb.1:9600,8,n,1,INVERTED"
For
Output
As
#1Pcmsk
=
8Gimsk
=
32On
Pcint0
Int_isrEnable
InterruptsDo
Loop
Int_isr:
'0,2,3,1
If
Pinb.3
=
0
Then
If
Pinb.4
=
0
Then
D
=
D
+
1
If
Pinb.4
=
1
Then
D
=
D
-
1
End
If
If
Pinb.3
=
1
Then
If
Pinb.4
=
1
Then
D
=
D
+
1
If
Pinb.4
=
0
Then
D
=
D
-
1
End
If
Print
#1
,
D
M2
=
M1Return
End
Download Drehgeber.zip
| Ganzen Artikel lesen... | ![]() |













