Externer Interrupt

Gast #2353961
Hallo

ich arbeite mit einem Atmega164 P und benötige eine ISR die die 
ausgelöst wird, wenn sich der an einem bestimmten Eingangs-Pin 
anliegende Pegel ändert, dieser Pin aber nicht INT0 oder INT1 ist.
Kann mir da jemand bei der Initialisierung weiterhelfen.(In welchen 
Regiestern ich welche Bits setzen muss) Danke
Gast
An den Pins PC0, PC1 und PC2 hängt jewils ein Taster welche gegen Masse 
geschaltet ist. Also soll das Interrupt ausgelöst werden wenn eil LOW am 
Pin anliegt
Gast
Hatte  es gerade mal mit einem Pin Change Interrupt versucht bin mir 
aber nicht ganz sicher ob ich etwas bei der Initilaisierung vergessen 
habe.

Hier mein Code

#include <avr/io.h>
#include <avr/interrupt.h>

ISR(PCINT0_vect){
  DDRC  |= (1<<3);
  PORTC |= (1<<3);
}



int main(void)
{
  DDRC   &= ~(1<<0);
  PCMSK3 |=  (1<<PCINT0);
  PCICR  |=  (1<<PCIE0);  // Interrupt wird freigegeben

  sei();
    while(1)
   {}
}

Was habe ich vergessen oder falsch gemacht?
Vielen Dank schon mal im Voraus!
Mark schrieb:
> Was habe ich vergessen oder falsch gemacht?

1.
PCINT0_vect ist der Interruptvektor für die Pins PCINT0 bis PCINT7 
(entspricht PA0 bis PA7). Du hast Deine Taster aber an den Pins PCINT16 
bis PCINT18 (entspricht PC0 bis PC2). Der zugehörige Interruptvektor ist 
PCINT2_vect.

2.
Das Register PCMSK3 ist für die Maskierung der Pins PCINT24 bis PCINT31 
(entspricht PD0 bis PD7) zuständig. Für die von Dir verwendeten Pins ist 
das Register PCMSK2 vorgesehen. In diesem Registster solltest Du die 
richtigen Bits setzten.

Bezüglich der Sinnhaftigkeit Deiner Lösung verweise ich auf den Post von 
Peter Dannegger.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 15 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.