- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 10 von 17

Thema: Interrupt als Eingangsabfrage

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    07.06.2019
    Beiträge
    148
    Dank euch vielmals für eure Mühe.

    Leider war keiner der folgenden plausiblen Versuche erfolgreich;
    Code:
    if ((PINA & (1<<PA4)) != 0)
    if ((PINA & (1<<PA4)) == 16)
    if (PINA & (1<<PA4))
    Daher vermute ich den Fehler innerhalb Interrupt-Einstellung;
    Code:
    GIMSK = (1<<PCIE0); // Bank0 wird eingeschaltet (PA0-PA7) // BANK1 beinhaltet PB0-PB3
    PCMSK0 = (1<<PCINT4)|(1<<PCINT5); // PCINT4(PA4) und PCINT5(PA5) könnte Interrupt auslösen
    sei(); // Interrupt´s werden gestartet und laufen im Hintergrund
    //...
    
    ISR (PCINT0_vect) // Interrupt, aus Bank0, wird ausgelöst
    {
    //tu was
    }
    Seht ihr hier ein Fehler?
    Vor allem bin ich mir mit dem GIMSK-Register sehr unsicher.
    __________________________________________________ _
    | Sprache: C | Teensy 3.2 | Arduino 2.x | Status: EwigerAnfaenger |

  2. #2
    Erfahrener Benutzer Robotik Visionär Avatar von 021aet04
    Registriert seit
    17.01.2005
    Ort
    Niklasdorf
    Alter
    37
    Beiträge
    5.091
    Ich habe mir die Register nicht angeschaut, kann ich erst wenn ich wieder Zuhause bin.

    Aber was mir noch einfällt, wie hast du die Tasten angeschlossen? Gegen + oder 0V?
    Du fragst ab ob der Eingang high ist, meist werden aber Pullups verwendet und wenn die Taste gedrückt wird ist es dann low.
    Dann hast du folgendes Problem.
    Keine Taste gedrückt: Es werden beide If ausgeführt, zuerst ein und gleich darauf aus.
    Eine Taste gedrückt: Die jeweilige If Abfrage wird übersprungen, wenn du aber heruntergehst wird sofort wieder abgeschalten (siehe keine Taste gedrückt) .

    MfG Hannes

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    07.06.2019
    Beiträge
    148
    Ich verwende Taster/Schalter, die auf Vcc liegen, mit Pulldown-Widerständen.
    Dh., beim Tasten/Schalten, liegt am Schaltausgang Vcc an.
    Daher mein Gedankenfehler;
    Code:
    if ((PINA & (1<<PA4)) == 1)
    - - - Aktualisiert - - -

    OH-MANN ... blöder als man(n) denken kann... (ich brauche H I T Z E F R E I !)

    Code:
    LEDein; // Falsch!
    LEDaus; // Falsch!
    kann nicht ohne Klammer funktionieren;
    Code:
    LEDein();  // Richtig!
    LEDaus();  // Richtig!
    funktioniert ausgezeichnet!
    __________________________________________________ _
    | Sprache: C | Teensy 3.2 | Arduino 2.x | Status: EwigerAnfaenger |

  4. #4
    Erfahrener Benutzer Robotik Visionär Avatar von 021aet04
    Registriert seit
    17.01.2005
    Ort
    Niklasdorf
    Alter
    37
    Beiträge
    5.091
    Hauptsache ist ja das es funktioniert, mir ist es aber auch nicht aufgefallen.

    MfG Hannes

Ähnliche Themen

  1. PVD-Interrupt
    Von kmrish im Forum ARM - 32-bit-Mikrocontroller-Architektur
    Antworten: 3
    Letzter Beitrag: 19.07.2011, 11:32
  2. Anfänger-Problem mit Eingangsabfrage
    Von fuxx im Forum C - Programmierung (GCC u.a.)
    Antworten: 14
    Letzter Beitrag: 05.08.2009, 10:27
  3. Interrupt
    Von Exodus im Forum AVR Hardwarethemen
    Antworten: 9
    Letzter Beitrag: 09.06.2006, 07:10
  4. [ERLEDIGT] Interrupt waehrend Interrupt
    Von thomas05 im Forum PIC Controller
    Antworten: 7
    Letzter Beitrag: 08.11.2005, 06:13
  5. interrupt
    Von dark emporer im Forum C - Programmierung (GCC u.a.)
    Antworten: 3
    Letzter Beitrag: 16.05.2005, 19:15

Berechtigungen

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

12V Akku bauen