Forum: Compiler & IDEs Problem mit INT1


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.
von Wolfgang Gigerl (Gast)


Lesenswert?

Hallo!
Ich habe da ein Problem: soweit ich weiß sollte das unten angeführte
programm, sobald die Spannung von 0 auf 5 Volt wechselt, die Leds
nacheinander am portC eischalten. Die Leds werden, wenn ich ein
rechtecksignal anlege, aber immer nur bei der FALLENDEN flanke
geschalten!
WARUM?


#include <io.h>
#include <interrupt.h>
#include <sig-avr.h>
#include <string.h>

unsigned char uiLed=0;
void initialisierung(void);
SIGNAL(SIG_INTERRUPT1)

{
     sbi(PORTC,uiLed);
     uiLed++;
}

int main(void)
{
  initialisierung();
  while(1)
  {

  }
}
void initialisierung(void)
{
  sei();
  outp(0x00,   DDRB);          /*  Port b als Eingang */
  outp(0xff,   DDRC);          /*  Port c als Ausgang */
  cbi(DDRD,  3);                  // PD3 als Eingang
         sbi(PORTD, 3);           // pullup on PD3
  outp((1<<INT1), GIMSK);         //INT1 enable
  outp((1<<ISC10), MCUCR);
  outp((1<<ISC11), MCUCR);        // INT1 auf STEIGENDE flanke
          //einstellen
}

von Berndt Brandes (Gast)


Lesenswert?

outp((1<<ISC10), MCUCR); // Any logical change on INT1 generates an
interrupt request.
  outp((1<<ISC11), MCUCR); // The falling edge of INT1 generates an
interrupt request.

Kommentare aus ATMEGA8 Datenblatt. Die 2. Ausgabeanweisung setzt bit
ISC10 wieder auf 0!
Besser mit
MCUCR = 1<<ISC10 | 1<<ISC11; // setzt beide Bits.

/Berndt

von Wolfgang Gigerl (Gast)


Lesenswert?

THNX, habe nicht beachtet, dass die zweite Anweisung die erste wieder
auf 0 setzt!!!

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]
  • [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.