www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Externer Interrupt löst nicht aus


Autor: Dominik S. (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,
habe ein Problem mit dem INT0...

Ich habe einen ATMega32 und progge in C. Es soll detektiert werden,
wenn sich an PD2 (INT0) was ändert, also immer wenn dort ein 
Level-Change passiert soll ein Interrupt ausgelöst werden...

Habe Bit I (SREG) über sei(); gesetzt und das Register MCUCR 
|=(1<<ISC00);
eingestellt.
In der ISR(SIG_INTERRUPT0) soll dann überprüft werden, ob
der PIND2 auf High(Pullup ist aktiviert) oder auf Low liegt(MMCCard ist 
drin)

Leider wird die ISR nie aufgerufen....
Ausgabe auf UART geht, es steht dort entweder EMPTY oder CARD found, 
jenachdem ob die Karte beim Einschalten drin ist oder nicht. Aber
Interrupt wird nie ausgegebn, weil die ISR nicht durchlaufen wird....


Programm ist im Anhang, hantiere da nun leider schon den ganzen Tag dran 
herum, finde den Fehler aber nicht selbstständig, daher hoffe ich auf 
eure Hilfe !

Autor: swr (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nicht nur sei() sondern auch den Pin0 Int. freigeben.

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du musst den Interrupt auch lokal freigeben! Schau Dir mal das Register 
GICR an. Da gibt es ein Bit, dem Du Deine Aufmerksamkeit schenken 
solltest.

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
...abgesehen davon solltest Du möglichst auch die neuen Vektornamen 
verwenden:
ISR(INT0_vect)
{}

> #include "avr/iom32.h"
Und das hat da gar nichts zu suchen! Es wird GRUNDSÄTZLICH nur die io.h 
eingebunden. Die Auswahl des Controllertyps geschieht im Makefile und 
sonst nirgends.

EDIT:
Hast Du da irgendwelche selbstgebastelten Header drin? eigentlich sollte 
es
#include<avr/interrupt.h>
heißen.

Autor: Dominik S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
den Vektornamen habe ich aus der iom32.h
das einbinden der iom32.h habe ich meine ich aus dem tutorial....

also muss ich noch
GICR |= (1<<INT0);

mit einbringen dann sollte es gehen, right ? :)

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dominik S. wrote:
> den Vektornamen habe ich aus der iom32.h
Die Vektornamen mit "SIG" am Anfang sind die alten. Die neuen 
Vektornamen bestehen aus den im Datenblatt angegebenen Namen mit der 
Erweiterung "_vect". Wenn möglich, in zukünftigen Projekten nur die 
neuen verwenden (zumal man nicht in die Headerdatei schauen muss, um den 
Namen rauszufinden).

> das einbinden der iom32.h habe ich meine ich aus dem tutorial....
Wo im Tut steht das?

> also muss ich noch
> GICR |= (1<<INT0);
>
> mit einbringen dann sollte es gehen, right ? :)
Sollte...

EDIT:
In C gilt:
#include<filename>
fügt eine Datei mit dem Namen "filename", die im 
Standard-include-Verzeichnis steht ein.
#include"filename"
hingegen fügt eine Datei "filename", die im Arbeitsverzeichnis steht, 
ein.

Möglicherweise haben Dich die Assembler-Beispiele verwirrt. Da ist die 
Syntax ein bisschen anders.

Die ioXXXX.h-Dateien werden allerdings nie direkt eingebunden, sondern 
immer automatisch über die io.h (müsste eigentlich sogar eine 
Compiler-Warnung geben, wenn man es trotzdem macht).

Autor: Christoph Mmmmmmm (Firma: privat) (mauralix)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.