www.mikrocontroller.net

Forum: Compiler & IDEs interrupt-problem


Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi,
sollte folgender code nicht dafür sorgen, das
bei einer pegeländerung auf PIND0 (ist laut mega128 der pin für
int 0) der code des interrupthandlers ausgeführt wird
und "INTERRUPT :)" auf dem display erscheint?
tuts nur leider nicht. ich habs auch mit anderen externen
interrupts probiert...das gleiche. ich kann an den entsprechenden
pin anlegen was ich will, da tut sich nix...
wo liegt der fehler ?

#include <avr/io.h>
#include <stdio.h>
#include <avr/signal.h>
#include <avr/interrupt.h>
#include "lcd/lcd.h"

INTERRUPT(SIG_INTERRUPT0){
  lcd_clear();
  sleepms(1);
  lcd_send_str("INTERRUPT :)");
  sleepms(2000);
}




int main(){
  byte i = 0;

  DDRA = 0xff;
  PORTA = 0;
  DDRC = 0x00;
  PORTC = 0xff;
  DDRE = 0x00;
  PORTE = 0xff;
  sei();

  lcd_init();

  sleepms(1);
  lcd_clear();

  lcd_send_str("Hallo Welt");

        lcd_send_cmd(0xc0);
        sleep2(20);
  while(1){}


  return 0;
}

Autor: Uwe Nagel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du solltest noch den Port D, Leitung 0 auf ingang schalten und den
entsprechenden Interrupt enablen.
Also zB.

DDRD=0;     // auf Eingang (ist aber default)
MCUCR|=3;   // Interrupt on rising edge
GICR|=0x40; // Interrupt von INT0 enablen

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja okay das hatte ich jetzt in dem code-beispiel nicht
aber eigentlich deshalb weil das ursprüngl mal
SIG_INTERRUPT4 war un der liegt auf porte.
was ist eigentlich GICR ?
mein WinAvr kennt das nicht

gruß markus

Autor: Uwe Nagel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry, da hab ich nicht aufgepasst, ich habe im Datenblatt vom mega8
nachgeschaut, aber Du hast ja einem mega128...

Noch ein Versuch:

DDRD=0;      // auf Eingang (ist aber default)
EICRA|=3;    // Interrupt on rising edge
EIMSK|=0x40; // Interrupt von INT0

Autor: Markus (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
hm also ntweder ich bin zu blöd oder man muss noch was an den
fusebits ändern.

kannst du mir vielleicht mal ein komplettes codebsp posten?
das wär echt super. im anhang ist mein aktuelles prog
das leider nix macht.

gruß markus

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Port E beim ATmega128?  Du hast die FAQ gelesen?  Du hast JTAG in
irgendeiner Form abgeschaltet?  (Per Fusebit, oder per control
register.)

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
PORTE? ne...im aktuellen progi arbeite ich an PORTD mit INT0 an PORTD.0
da sollte JTAG an/aus nix mit zu tun haben oder?
gibt es sonst noch eine einstellung die probleme machen könnte?

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.