- LiFePO4 Speicher Test         
Ergebnis 1 bis 10 von 40

Thema: Taster mit Kondensator entprellen

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #25
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    07.04.2015
    Beiträge
    903
    Ich hab's jetzt nachgeschlagen, wie ich das mal gelöst habe.
    Code:
    //Timer keys polling
    ISR(TIMER0_COMPA_vect)
    {
        static uint8_t keyPrescaler = 0;
        static uint8_t oldKeys = 0;
        keyPrescaler++;
        if (keyPrescaler >= 20)
        {
            keyPrescaler = 0;
            uint8_t newKeys = (PINC & 0xF0); //Keys port
        
            uint8_t keysChanged = newKeys ^ oldKeys;
            uint8_t newKeysSet = keysChanged & newKeys;
            keysSet |= newKeysSet;
            oldKeys = newKeys;
        }
    }
    Ich polle da wohl alle 20ms im 1ms-Timer-Interrupt die entsprechenden vier Port-Pins in die "keysSet"-Variable...



    Code:
    // called from Main loop
    void MaskProcessFromForeground()
    {
        //SET KEYPRESSED, MASKTIMER ELAPSED AND CHECK READ BUFFER CALLS FROM MAIN ROUTINE
    
        CheckReadBufferTelegrams((FIFO_t*) ReadBuffer, Admin.TelegramReceived);
    
    
        if(TimerPrescalerCounter == 0)
        {
            TimerPrescalerCounter = Admin.TimerPrescaler;
            if (Admin.TimerElapsed != 0)
                Admin.TimerElapsed();
        }
    
        if (Admin.KeyPressed != 0)
        {
            uint8_t keysSetCopy = keysSet;
            for (int i = 0; i < 4; i++)
            {
                if (keysSetCopy & (0x80 >> i))
                    Admin.KeyPressed(i);
            } 
            cli();
            keysSet &= ~keysSetCopy; // reset handled keys
            sei();
        }
    }
    ...und spreche die keyPressed-callbacks (können dann schon mal etwas länger dauern) aus der main-loop an.

    Nicht verwirren lassen: "Admin" ist eine Struktur mit Funktionszeigern, die auf die Funktionen der aktuell geladenen Bildschirmmaske zeigen (die werden beim Umladen der Maske in die Admin-Struktur geschrieben).
    Geändert von Holomino (15.05.2019 um 15:29 Uhr)

Ähnliche Themen

  1. Taster entprellen?
    Von Ferdinand im Forum C - Programmierung (GCC u.a.)
    Antworten: 12
    Letzter Beitrag: 18.08.2011, 22:27
  2. Probleme mit Taster entprellen
    Von Mr Bean im Forum C - Programmierung (GCC u.a.)
    Antworten: 2
    Letzter Beitrag: 08.05.2007, 17:12
  3. Entprellen von Taster
    Von Exodus im Forum AVR Hardwarethemen
    Antworten: 2
    Letzter Beitrag: 10.07.2006, 10:15
  4. Taster Entprellen mit Bascom
    Von hardstyleroxx im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 31.01.2005, 16:41
  5. Taster entprellen
    Von RCO im Forum Elektronik
    Antworten: 19
    Letzter Beitrag: 14.10.2004, 12:59

Berechtigungen

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

Solar Speicher und Akkus Tests