- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 10 von 14

Thema: Arduino Interrupt

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    17.02.2009
    Ort
    Aachen
    Beiträge
    1.181
    Ich möchte einen Arduino per Akku betreiben. Hierzu versetze ich ihn per https://github.com/cano64/ArduinoSleep sdelay() in den Stromsparmodus.
    Alle paar Minuten soll er aufwachen und prüfen, ob etwas zu tun ist.

    Allerdings soll er auch per Interrupt geweckt werden können, damit man über Knöpfe am Display Einstellungen vornehmen kann.

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    17.05.2009
    Beiträge
    12
    Hallo zusammen.
    Ich versuche geraden die interrupt Funktion kennen zu lernen.
    Ich würde gern bei einem LOW einen Text ausgeben.
    Das Problem dabei, immer wenn der Arduino das LOW erhält stürzt er ab.
    Ich gehe davon aus, dass meine "Schaltung" auf dem Steckbrett falsch ist.

    D3 mit einem Kabel auf 5V (HIGH) und einen Widerstand 1K-Ohm auf GND (LOW)

    Wenn der Pin die 5V erhält, läuft das Ganze, sobald ich das 5V Kabel entferne stürzt der Arduino ab.

    Code:
    void setup(){
      Serial.begin(9600);
      attachInterrupt(1, interrupt, LOW);
    }
     
    void loop()
    {
      for (int i = 0; i < 1000; i++)
      {
        Serial.println(i);
        delay(100);
      }
    }
     
    void interrupt()
    {
     
      Serial.println("Hallo");
    }
    Dank für die Hilfe

    ---------------------------------------------------------------------------------------------------------------

    Nachtrag:
    Habe soeben bemerkt, dass das Serial.println das Problem war....

    So funktioniert es

    Code:
    int hallo = 0;
    
    void setup()
    {
      Serial.begin(9600);
      attachInterrupt(1, interrupt, LOW);
    }
     
    void loop()
    {
      for (int i = 0; i < 1000; i++)
      {
        if (hallo == 1)
        {
          Serial.println("Hallo");
          hallo = 0;
          delay (100);
        }
        else
        {
          Serial.println(i);
          delay(100);
        }
      }
    }
     
    void interrupt()
    {
     hallo = 1;
     delay(100);
    }
    Geändert von Bongo_1st (23.10.2015 um 21:47 Uhr)

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    17.02.2009
    Ort
    Aachen
    Beiträge
    1.181
    Ich bin irgendwann dazu übergegangen, auf Interrupts zu verzichten, da ich auch öfters das Problem hatte, einen freeze/unvorhersehbares Verhalten zu bekommen.
    Aber evtl. befasse ich mich bald nochmal damit. An sich ist es ja ein schönes Feature.
    Danke, dass du deine Problemlösung mit uns teilst

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von Rabenauge
    Registriert seit
    13.10.2007
    Ort
    Osterzgebirge
    Alter
    56
    Beiträge
    2.213
    Nö, das Problem liegt wo anders.
    Delay() funktioniert beim Arduino _nicht_ innerhalb eines Interrupt-Handlers.
    https://www.arduino.cc/en/Reference/AttachInterrupt
    Grüssle, Sly
    ..dem Inschenör ist nix zu schwör..

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    27.08.2013
    Ort
    Region Basel
    Alter
    67
    Beiträge
    2.435
    Hallo,
    Zitat Zitat von Cysign Beitrag anzeigen
    Ich möchte einen Arduino per Akku betreiben. Hierzu versetze ich ihn per https://github.com/cano64/ArduinoSleep sdelay() in den Stromsparmodus.
    Alle paar Minuten soll er aufwachen und prüfen, ob etwas zu tun ist.

    Allerdings soll er auch per Interrupt geweckt werden können, damit man über Knöpfe am Display Einstellungen vornehmen kann.
    Das ist eigentlich kein Problem.
    Eine CPU im Tiefschlaf, kann nur durch einen Interrupt wieder aufgeweckt werden (oder einen Reset, wobei Reset ein eigentlich spezieller Interrupt ist).
    Wichtig ist nur, dass vor dem schlafen Gehen das für den Interrupt zuständige Modul aktiviert bleibt. Alle anderen können, um maximal Strom zu sparen, abgeschaltet werden.

    sdelay(); wird einen Timer-Interrupt verwenden welcher die CPU periodisch aufweckt. Bei jedem Interrupt wird einfach der Delay-Wert runtergezählt und wenn dieser noch nicht abgelaufen ist, geht die CPU wieder pennen...

    MfG Peter(TOO)
    Manchmal frage ich mich, wieso meine Generation Geräte ohne Simulation entwickeln konnte?

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    17.02.2009
    Ort
    Aachen
    Beiträge
    1.181
    Genau so siehts aus. Mit sdelay bin ich auf ca. 2,5mA bei einem blanken AtMega328 runtergekommen. Dazu habe ich einen Linearregler, der weitere 2mA verbrät, um den µC zu versorgen.

    Was man bei sdelay(); allerdings beachten sollte: Der Timer, der den Interrupt ausführt, ist wirklich ziemlich ungenau. Da können 3 Schlafsekunden auch mal 5-6 Sekunden sein!

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    27.08.2013
    Ort
    Region Basel
    Alter
    67
    Beiträge
    2.435
    Hallo,
    Zitat Zitat von Cysign Beitrag anzeigen
    Was man bei sdelay(); allerdings beachten sollte: Der Timer, der den Interrupt ausführt, ist wirklich ziemlich ungenau. Da können 3 Schlafsekunden auch mal 5-6 Sekunden sein!
    Spricht für eine schlampige Implementierung.
    Technisch ist es kein Problem, da eine genaue Zeit hinzubekommen, da bestimmt dann nur der Oszillator die Genauigkeit.

    Aber ich kenne das Arduino-Betriebssystem noch nicht. Bis jetzt habe ich µCs immer direkt, ohne eine Betriebssystem, programmiert.

    MfG Peter(TOO)
    Geändert von Peter(TOO) (29.10.2015 um 18:14 Uhr)
    Manchmal frage ich mich, wieso meine Generation Geräte ohne Simulation entwickeln konnte?

  8. #8
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    17.02.2009
    Ort
    Aachen
    Beiträge
    1.181
    Der Arduino-Bootloader hat nen ziemlichen Overhead. Ich denke, dass es daran liegen wird.

  9. #9
    Unregistriert
    Gast

    Interrupt Code

    Hallo zusammen, ich brauche da mal bitte eure Hilfe.

    Ich schreibe demnächst eine Prüfung und muss einen Interrupt Code erstellen.
    Die Aufgabenstellung lautet.

    Erstellen Sie einen Interrupt Code:
    -Golfbälle rollen eine Rampe herunter
    -Sie durchlaufen eine Lichtschranke
    -Die Zeit wird gemessen
    -An der Lichtschranke liegen 5V an, wenn sie unterbrochen wird.

    Könnt ihr mir bitte weiterhelfen und sagen wie dieser Code auszusehen hat.

    Vielen Dank.

  10. #10
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    17.02.2009
    Ort
    Aachen
    Beiträge
    1.181
    Schön sollte er aussehen, mit Glitzer. Glitzer ist immer gut.
    Und wenn er im Dunkeln leuchten kann, ist auch nicht verkehrt!

    Ne, Spaß bei Seite.
    Also am Sinnvollsten erstellst du dir erstmal ienen Account im Forum. Ist einfach freundlicher, wenn man Beiträge einem Usernamen zuordnen kann "Unregistriert...wer ist das? Schreiben wir da grade mit eine oder 3 Leuten?).
    Dann wäre die Frage nach deinem aktuellen Wissensstand. Wie weit bist du mit deinen Überlegungen bisher und hast du schonmal was auf Arduino-Basis programmiert?

    Niemand wird dir ohne eine finanzielle Aufwandsentschädigung deinen Code schreiben. Aber wir helfen dir gerne
    Am besten machst du dazu auch einen eigenen Thread auf.

Ähnliche Themen

  1. Arduino vs. Arduino: Kampf um die Arduino IDE
    Von Roboternetz-News im Forum Neuigkeiten / Technik-News / Nachrichten / Aktuelles
    Antworten: 0
    Letzter Beitrag: 04.04.2015, 17:21
  2. Rosenkrieg: Arduino zahlt Arduino keine Lizenzgebühren
    Von Roboternetz-News im Forum Neuigkeiten / Technik-News / Nachrichten / Aktuelles
    Antworten: 0
    Letzter Beitrag: 20.03.2015, 08:00
  3. Arduino: laufendes Programm auf Arduino Uno beenden?
    Von Ford Prefect im Forum Arduino -Plattform
    Antworten: 2
    Letzter Beitrag: 15.06.2014, 08:25
  4. Arduino + WLAN = Arduino Yún
    Von Roboternetz-News im Forum Neuigkeiten / Technik-News / Nachrichten / Aktuelles
    Antworten: 0
    Letzter Beitrag: 04.06.2013, 13:50
  5. [ERLEDIGT] [ARDUINO] 2 Motoren + Servo mit dem Arduino Uno steuern
    Von Torrentula im Forum C - Programmierung (GCC u.a.)
    Antworten: 0
    Letzter Beitrag: 31.08.2011, 16:31

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test