www.mikrocontroller.net

Forum: Compiler & IDEs Interrupt für eingänge/ AVR


Autor: Marco Müllner (marcom)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo liebe Leute,

ich habe folgendes Problem: Ich versuche im Moment (nur im Simulator) 
eine Interruptgesteuerte Eingangsabfrage zu machen. Ich hab mich im GCC 
Tutorial ein wenig schlau gemacht und dann bin ich zu dem folgenden 
Quellcode gekommen:
#include <avr/io.h>         
#include <avr/interrupt.h>
#include <stdint.h>

int main(void)
{
  

  DDRD = 0x00;
  DDRA = 0xFF;
  PORTA = 0x00;
  
  

  GIMSK |= (1 << INT1);                 // Interrupt von INT1 enablen
  MCUCR |= (1 << ISC10) | (1 << ISC11); // Interrupt on rising edge
  sei();

  for (;;)
  {
  
   PORTA=PORTA+1;

  }
  
}

SIGNAL (SIG_INTERRUPT1)
{
PORTA=0x00;
}

Das Programm soll PortA hochzählen lassen, und sobald am INT1 eine 
Änderung da ist, soll er ihn wieder 0 setzen.

Ich danke für eure Hilfe bereits im Voraus

Autor: Patrick (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und was genau ist Dein Problem?

Autor: Marco Müllner (marcom)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
richtig^^ entschuldigt

Folgende Fehlermeldung bekomme ich vom Compiler:

"error: 'GIMSK' undeclared (first use in this function)"

Autor: Patrick (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich weiss nicht welchen Controller Du verwendest, aber schau doch mal im 
Datenblatt. Beim ATmega16 müsstest Du GIMSK durch GICR ersetzen.

Autor: Marco Müllner (marcom)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du hast Recht ich verwende einen ATMega 16. Nun hab ich dies 
ausgetauscht +Signal durch ISR ersetzt (veraltete Variante...) Nun 
springt er mir aber nicht in die Routine. Wo liegt mein Fehler?

Autor: Patrick (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie simulierst Du denn eine steigende Flanke am INT1? Was ist mit den 
Pull-up Widerständen?

Autor: Marco Müllner (marcom)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Im Datenblatt vom ATmega 16 steht, dass dieser zusammenhängt mit dem Pin 
PD3. Deswegen setze ich diesen einfach auf High im Simulator

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Marco Müllner wrote:
> Deswegen setze ich diesen einfach auf High im Simulator

Wo genau, in PIND oder vielleicht in PORTD?

Autor: Patrick (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast Du denn
SIGNAL (SIG_INTERRUPT1)
durch
ISR (INT1_vect)
ersetzt?

Autor: Marco Müllner (marcom)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Im PIND 3 natürlich... warum sollte ich den ausgang high setzen?

Autor: Marco Müllner (marcom)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Patrick wrote:
> Hast Du denn
>
SIGNAL (SIG_INTERRUPT1)
> 
> durch
>
ISR (INT1_vect)
> ersetzt?

ja habe ich

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Marco Müllner wrote:
> Im PIND 3 natürlich... warum sollte ich den ausgang high setzen?

Oh entschuldige, dass ich ein mögliches Versehen deinerseits in Betracht 
gezogen habe. Ich wusste ja nicht, dass du dagegen gefeit bist.

Autor: Marco Müllner (marcom)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stefan Ernst wrote:
> Marco Müllner wrote:
>> Im PIND 3 natürlich... warum sollte ich den ausgang high setzen?
>
> Oh entschuldige, dass ich ein mögliches Versehen deinerseits in Betracht
> gezogen habe. Ich wusste ja nicht, dass du dagegen gefeit bist.

sorry^^ Es nervt mich nur im Moment ein wenig. Könnte es vllt sein dass 
ich noch die iom16.h einbinden muss?

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Marco Müllner wrote:

> Könnte es vllt sein dass ich noch die iom16.h einbinden muss?

Nein, das geschieht in io.h automatisch.

Im Simulator richtigen Controller eingestellt?

Autor: Marco Müllner (marcom)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja es ist der ATMega 16 eingestellt

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann kann ich dir auch nicht weiterhelfen, denn der Code (mit den 
Änderungen) funktioniert bei mir im Simulator einwandfrei.

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.