- fchao-Sinus-Wechselrichter AliExpress         
Ergebnis 1 bis 10 von 24

Thema: AtMega32 - Delay wird bei Tasterdruck nicht richtig ausgelöst

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.12.2010
    Ort
    Nähe Wien
    Alter
    34
    Beiträge
    108

    AtMega32 - Delay wird bei Tasterdruck nicht richtig ausgelöst

    Hallo!

    Also folgendes, ich habe gerade einen Taster an meinen AtMega32 angeschlossen und wollte damit bisschen die herumexperimentieren. In weiterer Folge soll daraus (total unkreativ) ein Anstoßsensor für meinen Roboter realisiert werden.

    So, ich habe den Taster an PB0 angeschlossen und möchte jetzt einfach bei Tastendruck eine LED ausgehen lassen, diese dann eine Sekunde ausgeschaltet lassen und danach wieder einschalten. Das war das Ziel.

    Hier dazu mein Code:
    Code:
    #include <avr/io.h>
    #include <util/delay.h>
    
    #define LEDRED PD6
    #define Bumper1 PB0
    
    #ifndef F_CPU
    #define F_CPU 8000000
    #endif
    
    
    int main(void)
    {
        //DDRB |= (0<<Bumper1);
        DDRD |= (1<<LEDRED) | (1<<PD7);
        
        //PORTB |= (0<<Bumper1);
        PORTD |= (1<<LEDRED);
        
            
        while(1)
        {
            if(PINB & (1<<PINB0)) //wenn Taster gedrückt
            {
                PORTD &= ~(1<<LEDRED);
                _delay_ms(1000); //warte 1 sek
            }
            else
            {
                PORTD |= (1<<LEDRED); 
            }                        
        }
    }
    Die LED geht auch brav an und wieder aus, sowie geplant, allerdings eben nur so lange, wie der Taster gedrückt ist.

    In der Theorie sollte das Programm doch eingentlich an dieser Stelle
    Code:
    if(PINB & (1<<PINB0)) //wenn Taster gedrückt
            {
                PORTD &= ~(1<<LEDRED);
                _delay_ms(1000); //warte 1 sek
            }
    für 1 Sek verharren und damit die LED ausgeschaltet lassen, bevor dann der Zyklus fortgesetzt wird, oder?
    Warum bleibt die LED nicht an?

    LG
    Geändert von ijjiij (23.07.2012 um 15:02 Uhr)

Ähnliche Themen

  1. Interrupt wird nicht ausgelöst
    Von Michael_am32 im Forum C - Programmierung (GCC u.a.)
    Antworten: 4
    Letzter Beitrag: 02.08.2010, 01:37
  2. ICP auf ATMEGA8 wird nicht ausgelöst
    Von =JTR= im Forum C - Programmierung (GCC u.a.)
    Antworten: 2
    Letzter Beitrag: 29.04.2010, 11:36
  3. Interrupt wird nicht ausgelöst
    Von einballimwas im Forum C - Programmierung (GCC u.a.)
    Antworten: 10
    Letzter Beitrag: 01.09.2009, 15:29
  4. Interrupt wird nicht ausgelöst
    Von PcVirus im Forum C - Programmierung (GCC u.a.)
    Antworten: 2
    Letzter Beitrag: 10.04.2008, 16:14
  5. [Frage?] die Delay TIme nicht stimmt mit <util/delay.h>
    Von PaMan im Forum C - Programmierung (GCC u.a.)
    Antworten: 9
    Letzter Beitrag: 03.08.2007, 16:57

Berechtigungen

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

Solar Speicher und Akkus Tests