INTERRUPT 0 MEGA 2561

Gast #2521840
Hallo

Ich habe hier mal einen Code geschrieben für den INT0

void init_int0(void)
{

EICRA=0x00;
EIMSK=(1<<INT0);
}

EICRA=0; //alle INTERRUPT bei low(von heigh zu low);
EIMSK=INT0; Interrupt für int0

Leider bootet der mega mit dieser einstellung immer neu.

Ist die Initialisierung richtig???

Danke
Gast #2521850
Hallo

Ja.

ISR(INT0_vect)
{
  tCAN message;
  cli();

  set_LED(1);
  spi_init();

  if (can_get_message(&message))
    {
      can_message_values(&message);
    }
    else
    {
    }


  clear_LED(1);



sei();
}


der Fehler muß bei EIMSK=(1<<INT0);
liegen.

Der MCP CAN Controller hat einen Interrupt ausgang (wenn Daten im Buffer 
dann zieht er den ausgang auf low)
Der Mega 2561 ist an INT0 (Port D0) mit dem MCP INT Ausgang verbunden.
Ich hatte vorher in der main die abfrage des Pins nur sind mir etliche 
CAN Frames dadurch verschwunden (Prozessor zu langsam) daher will ich es 
mit Int0 probieren er soll auslösen wenn Pegel von 1 auf 0.

Danke
Gast #2521860
Hi

>der Fehler muß bei EIMSK=(1<<INT0);
>liegen.

Nein, das passt schon.

Allerdings ist hier der Kommentar (und wahrscheinlich auch deine 
Vorstellung) falsch:

>EICRA=0; //alle INTERRUPT bei low(von heigh zu low);

ISCn1:ISCn0= 00 erzeugt Interrupts solange Low Level anliegt.

MfG spess
Gast #2521864
Hallo

Ja ich habe das register geändert:

EICRA=(1<<ISC01);//Falling edge
EIMSK=(1<<INT0);

Der Mega bootet jetzt nicht mehr habe auch noch den PIN D0(INT0) als 
eingang und Pullup.

#define SET_CAN_INT()  DDRD&=~(1<<0);
#define SET_CAN_INT_PULL()  PORTD |= (1<<0);

und dann initialisiert.

Nur löst kein Interrupt aus.
obwohl die Pegel wechseln high low heigh low.

Danke

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 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.