www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik externe Interrupts Mega128


Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

leider habe ich hier ein Problem mit einem externen Interrupt eines 
Mega128.

Ersteres Problem ist was für Register ich setzten muss damit überhaupt 
was passiert wenn ich auf eine fallende Flanke an INT0 (PD0) triggern 
will.

Ich mache bisher:

  EICRA |= (1<<PD0);
  EIMSK |= (1<<INT0);

Gelegentlich kommt es auch zu einem Interrupt aber scheinbar nicht jedes 
mal. Global habe ich interrupts aktiviert, externe Pull-Up Widerstände 
sind vorhanden.

Das zweite Problem ist eher ein kosmetisches. Ich verwende im Moment 
SIGNAL(SIG_INTERRUPT0) weil ich nicht herausfinden konnte welche die 
entsprechende ISR(???) anweisung dafür ist.

Vielen Dank
Thomas

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
OK Problem 2 ist gelöst ;-)

INT0_vect

Autor: wt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
#include <mega128.h>

// External Interrupt 0 service routine
interrupt [EXT_INT0] void ext_int0_isr(void)
{
// Place your code here

}

// Declare your global variables here

void main(void)
{

// External Interrupt(s) initialization
// INT0: On
// INT0 Mode: Falling Edge
// INT1: Off
// INT2: Off
// INT3: Off
// INT4: Off
// INT5: Off
// INT6: Off
// INT7: Off
EICRA=0x02;
EICRB=0x00;
EIMSK=0x01;
EIFR=0x01;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
ETIMSK=0x00;

// Global enable interrupts
#asm("sei")

while (1)
      {
      // Place your code here

      };
}

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke Dir!

Leider habe ich jetzt das Problem dass das Programm gelegentlich in den 
Interrupt springt (wenn eine Flanke kommt, also in Ordnung), manchmal 
führt der Controller aber stattdessen einen Reset aus! Kann das ein 
Softwareproblem sein oder meint ihr es liegt an der Hardware?

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Problem tritt auch auf wenn ich den Teil auskommentiere. Ich beginne 
daher ein neuen Thread.

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.