www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Problem mit Externen Interrupt


Autor: Alexander B. (jeroen)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich will ein Signal auswerten. Dazu arbeite ich mit dem Externen 
Interupt. Konfiguation:

GIMSK = (1<<INT1);
MCUCR = (1<<ISC11);

Das funktioniert auch alles nur wenn ich jetzt nach x ms messen, messe 
ich immer eine 1. Ohne den Externen Interrupt geht das.

Wo ist meine Fehler ?

Autor: Daniel Bauer (und3rt4ker)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
µC?
Sprache?
Port?
Pin?
Programm?
Sinn?

Mfg
und3t4ker

Autor: Alexander B. (jeroen)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Programm ist in c geschreiben und der Interupt Pin ist INT1.

Geht es den Grundsätzlich ?

Autor: Spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Und wo ist dein Interruptroutine?

MfG Spess

Autor: Alexander B. (jeroen)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hier ist die Interruptroutine:
ISR(INT1_vect)
{
  GIMSK = 0x00;/*Externer Interrupt deaktivieren*/
  MCUCR = 0x00;
  
  Signal_messen_und_auswerten();
  
  GIMSK = (1<<INT1);/*Externer Interrupt aktivieren*/
  MCUCR = (1<<ISC11);
}

Die Funktion Signal_messen_und_auswerten() misst am INT1 Pin leider nur 
1en.

Mit diesem Code funktion es:
while(1)
{
  if ( INT1_PIN() == 0)
  {
    Signal_messen_und_auswerten();
  }
}

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Alexander B. (jeroen)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok, Verschachtelte Interrupts.
Gibs es Tricks mit denen man das umgehen kann ?



ich hab da auch noch ein anders Problem. ich will das mein hauptprogramm 
solange wartet bis ein Interupt 10mal auftritt.

Ich habs so lösen wollen:
int i=0;

main()
{
...
while(i<10);
interput deaktivieren;
...
}

ISR(..)
{
i++;
}

aber es geht einfach nicht, die while(i<10); wird nie abgebrochen ? 
Liegt es daran das die Schleife einfach weg optimiert wird ?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Standardantwort (kommt mindestens 10 mal am Tag)
volatile int i=0;

Autor: Alexander B. (jeroen)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
dann kommt wengistens schnell ne antwort.

ist aber sehr kommisch, das man goabale variablen extra angeben muss.

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.