Go Down

Topic: Interrupt-Routine wird fälschlich aufgerufen (bei jedem Aufstart) (Read 693 times) previous topic - next topic

BwieBertha

Nachtrag : eben bin ich über diesen Beitrag gestolpert... Liest sich wie mein Problem....

http://forum.arduino.cc/index.php?topic=48757.0

Edit:
Dast ist _genau_ dasselbe Phänomen wie bei mir. Hab den Sketch aus dem anderen thread bei mir ausprobiert... selbes Verhalten.

Edit2:
Noch ein Thread . https://forum.arduino.cc/index.php?topic=526497.0

Auch hier tritt das Problem an einem UNO nicht auf, an einem Nano jedoch sehr wohl..

 :o  :o

postmaster-ino

Hi

Da Uno und Nano derselbe (sorry, der Gleiche) µC sind, kann Das normal nicht sein, daß sich Nano und Uno verschieden verhalten (Ausnahme A6/A7),
Trotzdem ist Es durchaus interessant, daß diese Probleme 'Hardware-spezifisch' (wobei UNO und NANO der gleiche µC ist) auftreten.

Original oder Nachbau?

MfG
anscheinend ist Es nicht erwünscht, einen Foren-internen Link als 'Homepage' einzubinden, damit JEDER nur einen Klick von combie's Liste zum Thema State-Maschine entfernt ist.
... dann eben nicht ...

Whandall

Da Uno und Nano derselbe (sorry, der Gleiche) µC sind, kann Das normal nicht sein, daß sich Nano und Uno verschieden verhalten (Ausnahme A6/A7),
Uno und Nano haben verschiedene Bootloader, oder nicht?
Der Kode läuft vor dem Start des Sketches...
Ah, this is obviously some strange usage of the word 'safe' that I wasn't previously aware of. (D.Adams)

anwofis

Hallo,

also bei meinem Nano (alter Bootloader + FTDI) wird mit deinem Sketch nur ab und zu beim manuellen Reset ein Interrupt ausgelöst. Das scheint im setup() zu passieren.

Du kannst am Ende des setup() die Variable des Interrupts ja einfach zurücksetzen:

Code: [Select]
#include <INTERVAL.h>

const uint8_t reedPin = 3;
volatile uint32_t revs = 0;

void setup(void)   {
  Serial.begin(115200);
  while (!Serial);

  pinMode(reedPin, INPUT_PULLUP); // Reed-Sensor an Pin 3
  attachInterrupt(digitalPinToInterrupt(reedPin), readmillis, RISING);
  revs = 0;
}

void loop(void) {
  INTERVAL(2000) {
    Serial.print(revs);
    Serial.println(" Revs.");
  }
}

void readmillis(void) {
  revs++;
}

BwieBertha

Ja, danke für den Tip.
Aber der fix von hier https://github.com/arduino/Arduino/issues/510 hat das Verhalten bei mir nachhaltig gelöst!

EIFR = (1 << INTF1)


Wir kann es denn sein dass dein nano nur manchmal diesen Verhalten zeigt? Ich dachte, so ein System wäre deterministisch.

Go Up