mikrocontroller.net

Forum: Compiler & IDEs INT2 am ATmega32


Autor: Sascha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich versuche gerade den INT2 des Atmega32 zu aktivieren...
leider funktioniert es nicht .
Kann mir jemand sagen ob ich etwas vergessen habe?

void init_int2(void)
{

 MCUCR |= (1 << ISC2);
 GICR  |= (1 << INT2);  //INT2 enable
}




ISR(INT2_vect)//ISR Routine
{

  uart_Send('x');
}


int main(void)
{

DDRB &= ~(1<< PB2 );
PORTB |= (1<<PB2);

uart_init();
init_int2();
sei();



while(1)
{}
}
Mfg
Sascha

Autor: Kai G. (runtimeterror)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was funktioniert nicht?
Woran siehst du, dass es nicht funktioniert?
Wie sieht die externe Beschaltung aus?
Was erwartest du, was passieren soll, wenn es funktionieren würde?
Funktioniert UART prinzipiell?
Pullups/-downs korrekt?
Ans Entprellen von Tastern gedacht?

Autor: Sascha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
Uart läuft..
Int2 ist mit dem Interrupt Ausgang des eDIP Displays verbunden...wenn 
daten vorliegen geht der Ausgang des Displays auf 0.
Bei einer if Abfrage des Pins funktioniert alles.

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie herum hättest du ihne denn gern? Bei gesetzten MCUCR regiert der auf 
die steigende Flanke. Pegelgetriggert geht bei INT2 nicht.

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

Bewertung
0 lesenswert
nicht lesenswert
> MCUCR |= (1 << ISC2);
Das ISC2 steht im MCUCSR und nicht im MCUCR...

Autor: Fred S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Sascha,

schau mal auf S.67 des Datenblatts: ISC2 gehört zu MCUCSR, nicht zu 
MCUCR!

Viele Grüße

Fred

Autor: Sascha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stimmt danke..zu blöd zum lesen ;-)
Funktioniert nur leider immer noch nicht..

Autor: Fred S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Sascha,

> Funktioniert nur leider immer noch nicht..

Du willst den Interrupt Deiner Beschreibung nach doch mit der fallenden 
Flanke auslösen - oder ? Wenn Du das ISC2-Bit setzt, aktivierst Du aber 
den Int bei steigender Flanke!

Gruß

Fred

Autor: Sascha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja das ist richtíg..
hab ich aber auch schon versucht.
Funktioniert nicht.

GICR  &= ~ (1 << INT2);
könnte ich mir aber auch schenken, oder?
Da es nach dem reset  auf Null gesetzt ist.

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

Bewertung
0 lesenswert
nicht lesenswert
Sascha wrote:
> GICR  &= ~ (1 << INT2);
Damit deaktivierst Du den Interrupt komplett!

Autor: Sascha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke...ich hatte die Register vertauscht ;-)
Jetzt läuft es..

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.