PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Pin Change Interrupt am Mega168



Razer
17.05.2006, 17:10
Hallo an alle!!

Für eine Menüsteuerung möchte ich die Pin Change Interrupts am Mega168 verwenden. Jedoch verstehe ich die die genaue Verwendung leider nicht :(

Das Entprellen mach ich über die Hardware.

Wenn ein Logikpegelwechsel an einem Pin Change Interrupt erfolgt, gibt es für jeden Interrupt einen eigenen Interrupt. Für jeden Pin gibt es dann auch eine dazugehörige Interruproutint, oder???

Wie, und wo muss ich die Pins deklarieren, damit die Interrupts freigegeben werden? Und wie heißen die Interruptvektoren?

Danke im Voraus

Gruß Robert

Frank
17.05.2006, 17:23
Es gibt 3 verschiedene Interrupts. Jeder gilt führ mehrere PIN´s. Der richtige Pin muss dann über ein Register ermittelt werden.
Ein Beispiel dazu gibts hier:
https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=120208

Empfehlenswert ist es auch noch die Registerbelegung und Interrupt Vektoren im Datenblatt des M168 anzuschaun, dadurch wird gleich einiges klarer.

Gruß Frank

Razer
17.05.2006, 17:52
Hallo Frank

Im Datenblatt hab ich mal geschaut. Für jeden Pin gbe es keine eigen Interruptvektoren, oder?

Nur für die Pin Change Interruptports, oder? (PCINT0, PCINT1, PCINT2).

Wenn ein Interrupt am Pin Change Pin 9 audtritt, wird die Interruptroutine mit dem Vektor PCINT1 aufgerufen. Stimmt das so??

Gruß Robert

Frank
17.05.2006, 18:00
Ja sag ich ja. Jeder der Interrupts ist aber für mehrere PCINT Interrupts. In den Registern PCMSK0,PCMSK1 und PCMSK2 kannst du alle INTERRUPTS durch 1 Bits aktivieren oder ausschalten. Du siehst auch bei diesen Registern welche alle zusammen einen Interrupt auslösen.

Welcher Pin letzlich den Interrupt ausgelöst hat musst du meiner Erinnerung nach durch Abfrage des Ports selbst in der IRQ Routine ermitteln.

Pin9 ist PCINT6. PCINT6 gehört zum PCMSK0 Register also wird der Interrupt PCINT0 aufgerufen.

aber du meinst glaube PCINT9:

PCINT9 dagegen gehört zum PCMSK1 Register also wird der Interrupt PCINT1 aufgerufen.

Ist ne feine Sache mit den vielen Interrupts beim Mega168
Gruß Frank

Razer
17.05.2006, 18:16
Ok Danke Frank :)