mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik interrupt will nicht


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Anfänger1 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
habe mich an interrupts probiert und jetzt das problem dass die Befehle 
EIMSK und ISR (INT0_vect) nicht erkannt werden.
Hier der Programmauschnitt:

#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#include <stdlib.h>
#include "lcd.h"


/* Der CPU-Takt wird definiert; Dieser entspricht der Frequenz des 
Quarz. */
#define F_CPU 3686400UL


/* Start des Programmes. */
int main(void) {

EIMSK = (1<<INT0);
    sei();

  ISR (INT0_vect) // Interrupt Service Routine für externen Interrupt 
INT0
    {
      Menue++;
    _delay_ms(100); // kurzes delay zum "Entprellen"
    }


  DDRD &= ~(1 << DDD2);     // Int0-Pin ist Eingang
    PORTD |= (1 << PORTD2);   // Pullup aktiv



    // Hier folgen die Konfigurationen zum externen Interrupt INT0
  MCUCR |= (1 << ISC01);    // INT0 trigger bei fallender Flake an PD2
    GICR |= (1 << INT0);     // INT0 aktivieren


  lcd_init();    // LCD wird initialisiert, angeschaltet und gelöscht.
  lcd_on();
  lcd_clear();
  lcd_write_s("Drahtmessung");

    DDRC= 0x00;  //Alles Eingänge
  PORTC= 0xFF;
  DDRB=0b11111110;  //Alles Ausgänge
  PORTB=0b11111110;

Autor: Frank L. (hermastersvoice)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
die ISR in der Main? Hattest du die Idee selbst?

Autor: Anfänger1 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe das aus einer Vorlage unseres Lehrers und deshalb so übernommen.
Wo gehört es denn hin?

Autor: Norbert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Anfänger1 schrieb:
> Habe das aus einer Vorlage unseres Lehrers und deshalb so übernommen.
> Wo gehört es denn hin?

Wenn das von deinem Lehrer kommt, dann solltest du ihn besser mal hier 
vorbeischicken.

Autor: Anfänger1 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja aber was muss ich denn da jetzt machen. Die Befehle EIMSK und ISR 
(INT0_vect) werden nicht als befehle erkannt sonder beim übersetzen als 
fehlende variablen erkannt

Autor: Harald (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Habe das aus einer Vorlage unseres Lehrers und deshalb so übernommen.

Unwahrscheinlich.

Autor: HildeK (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Anfänger1 schrieb:
> Ja aber was muss ich denn da jetzt machen.

Die ISR z.B. vor main setzen - außerhalb!

Zu EIMSK kann ich nichts sagen. Kann sein, dass es das nicht bei jedem 
AVR unter dem Namen gibt. Welchen μC verwendest du?

Autor: c-hater (Gast)
Datum:

Bewertung
-2 lesenswert
nicht lesenswert
HildeK schrieb:

> Zu EIMSK kann ich nichts sagen. Kann sein, dass es das nicht bei jedem
> AVR unter dem Namen gibt.

Das ist definitiv so.

> Welchen μC verwendest du?

Quäl' ihn doch nicht mit solchen Details. Zusammengeklauter und 
unverstandener Code muss einfach auf jedem µC funktionieren. C ist doch 
PORTABEL!

Autor: Anfänger1 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Atmega 8

Autor: aswqaswqa (Gast)
Datum:

Bewertung
3 lesenswert
nicht lesenswert
Anfänger1 schrieb:
> dass die Befehle
> EIMSK und ISR (INT0_vect) nicht erkannt werden.

Das ist schon in Ordnung so, da weder EIMSK noch ISR (INT0_vect) Befehle 
sind.
Allerdings frage ich mich schon, warum sich jemand
> an interrupts probiert
der nicht im Ansatz verstanden hat, um was es bei Interrupts geht.



aswqaswqa

Autor: HildeK (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Anfänger1 schrieb:
> Atmega 8

Dann nimm dir mal das Datenblatt vom Mega8 zur Brust und studiere das 
Kapitel über den INT0.
Ich konnte jedenfalls kein EIMSK in dem finden, also gibt es das auch 
nicht.

Autor: aswqaswqa (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
HildeK schrieb:
> Dann nimm dir mal das Datenblatt vom Mega8 zur Brust und studiere das
> Kapitel über den INT0.

Ich glaube eher, dass der Einstieg hier besser klappt.

https://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Programmieren_mit_Interrupts

aswqaswqa

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.