- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 5 von 5

Thema: Kann Schalter nicht abfragen

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    08.06.2010
    Ort
    78xxx
    Alter
    32
    Beiträge
    73

    Kann Schalter nicht abfragen

    Anzeige

    Praxistest und DIY Projekte
    Hallo, ich habe mir das Atmel Evaluation Board und einen ATmega32 gekauft und versuche meine ersten Schritte in der Elektronik.

    http://www.akagisan.de/electronic/at...ions-Board.pdf hier ist auf Seite 6 der Schaltplan

    Die Taster sind, wenn ich alles Richtig verstanden habe "Active High", d. h ich brauche keine Pull Up Widerstände im ATmega aktivieren (Die Pull Down Widerstände sind ja schon auf dem Board).

    Die 2 LEDs sind im Register D auf Pin 5 und 6, die Taster sind ebenfalls an Register D aber auf Pin 2, 3 und 4.

    Ich habe mir, folgenden Code geschrieben, der sollte LED 1 (Pin 5) leuchten lassen solange der Taster nicht gedrückt ist, sobald der Taster gedrückt ist, soll LED 1 aus und LED 2 (Pin 6) angehen. Der Taster soll Taster 1 auf Pin 2 sein.

    Code:
    #include <avr/io.h>
    
    int main()
    {
    	DDRD  = 0xF8; // entsprich 1111 1000
    	PORTD = (0 << 2) & (0 << 3) & (0 << 4); // eig. unnötig, aber man weis ja nie
    	
    	while(1){
    		if(PIND & 0x02){
    			PORTD |= (1 << 6);		
    			PORTD &= ~(1 << 5);
    		}else{
    			PORTD |= (1 << 5);
    			PORTD &= ~(1 << 6);
    
    		}
    
    		
    	}
    }
    Aber der Taster funktioniert nicht ... ich habe die Lötstellen kontrolliert und manchmal, ganz selten und unregelmäßig scheint der ATmega auf den Tastendruck zu reagieren, aber sehr sehr selten.

    Ich hoffe ihr könnt mir sagen wo das Problem liegt.
    MfG Icon

    EDIT1 : Rechtschreibfehler

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    42
    Beiträge
    2.009
    Pin 2 ist 0x04 bzw. (1 << 2), nicht 0x02.
    Du fragst also den falschen Taster ab. Wenn der AVR doch mal scheinbar "reagiert", bist du vermutlich auf den Nachbartaster gekommen.

    EDIT: Grad am Schaltplan gesehen: Du fragst ja PinD.1 ab, der lt. Schaltplan wohl zum UART gehört. Wenn da also irgendwas ankommt, wird der Schalter "gedrückt"
    #ifndef MfG
    #define MfG

  3. #3
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.220
    Wenn es zuweilen funktioniert scheint es kein SW-Fehler zu sein.
    Beim Tastendruck lädst du über die Taste den 330n Kondensator auf, da kann durch den kurzen Spannungseinbruch den Kontroller schon mal ein Reset machen. Das wird auch in diversen Threads kritisiert.
    Ich habe bei meinem Board die Tasten geändert so das sie nach GND schalten und aktiviere bei bedarf die internen PullUp.
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    08.06.2010
    Ort
    78xxx
    Alter
    32
    Beiträge
    73
    Ahh, danke .. der erste Fehler war das 0x04 jetzt klappts ein Paar mal. Aber nach ein Paar Tasterdrücken, die Zahl variiert stark, klappt es nicht mehr. Erst wenn der Microkontroller wieder über den Reset knopf zurückgesetzt wurde, funktioniert es wieder.
    Könnte dieses Problem mit dem Spannungseinbruch zusammen hängen?

  5. #5
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.220
    Es muss nicht sein das der Kontroller immer einen Reset macht bei einem Spannungseinbruch, er kann sich auch im Programm verlaufen und nur mit einem Reset wieder herauskommen.
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

Berechtigungen

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

Solar Speicher und Akkus Tests