Einen Drehgeber abfragen

aus ELO 2008

Elektronik-Labor  Labortagebuch  Notizen  Mikrocontroller

1

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.

 

$regfile = "attiny13.dat"
$crystal = 1200000
Baud = 9600
Dim D As Integer
Dim M1 As Byte
Dim M2 As Byte

Config Adc = Single , Prescaler = Auto
Start Adc
Open "comb.1:9600,8,n,1,INVERTED" For Output As #1


Pcmsk = 8
Gimsk = 32
On Pcint0 Int_isr

Enable Interrupts


Do

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 = M1
Return

End

 

Download Drehgeber.zip

 

Bei jeder Änderung an PB3 wird nun die Interruptroutine bei Int_isr aufgerufen. Hier wird in Abhängigkeit vom Zustand an PB3 und PB4 der Zähler D entweter im eins hochgesetzt oder verkleinert. Damit hat man einen zuverlässigen Vorwärts-Rückwärtszähler. Der aktuelle Zählerstand wird bei jeder Änderung an das Terminal gesendet.

 

 

Bei jeder Änderung an PB3 wird nun die Interruptroutine Int_isr aufgerufen. Hier wird in Abhängigkeit vom Zustand an PB3 und PB4 der Zähler D entweder im eins hochgesetzt oder verkleinert. Damit hat man einen zuverlässigen Vorwärts-Rückwärtszähler. Der aktuelle Zählerstand wird bei jeder Änderung an das Terminal gesendet.

 


Elektronik-Labor  Labortagebuch  Notizen  Mikrocontroller