-
        

Ergebnis 1 bis 9 von 9

Thema: Problem bein Einlesen von Taster

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    03.01.2009
    Beiträge
    17

    Problem bein Einlesen von Taster

    Anzeige

    Hi, mein Problem mag wohl simpel erscheinen, aber ich bekomms echt nicht auf die Reihe einen Taster richtig einzulesen!
    Sobald ich 5V an den Eingang lege, geht die LED zwar an, jedoch wird sie sehr dunkel oder der AVR (ist ein Mega16) Resettet sogar. Eine Strommessung hat über 500mA ergeben, die fließen wenn ich den Taster drück. Ich hab auch schon versucht die Pullups über PORTC = 0b11111111; zu aktivieren und in der if Abfrage dann nach 0b11111110; zu fragen, aber da geht die LED garnicht an. Hab auch schon die Forensuche bemüht und in den Tutorials gelesen, aber ich bin mir recht sicher das ich es richtig gemacht hab.
    Was mich immer verwirrt, ist diese Zuordnung Bitweise. Mal steht da dann DDRB &= ~(1 << PB0) und dann wieder PORTB |= (1 << PB0), warum wird hier nicht beide male | (oder) verwendet? Bei dem ersten wird die Zahl ja sogar noch invertiert, was hat das für einen Sinn? Und warum dann ein &? Das ist vllt auch das, warum es bei mir nicht geht, weil mir da noch das Verständnis fehlt, kann das vllt wer erläutern?
    Hier mal noch mien Code:
    Code:
    #define F_CPU 1000000
    
    #include <avr/io.h>
    #include <util/delay.h>
    
    int main(void)
    {
    	DDRB = 0b11111111;
    	DDRC = 0b00000000;
    	PORTC = 0b00000000;
    
    	while (1) 
    	{
    		if (PINC == 0b00000001) 
    		{
    			_delay_ms(50);
    			PORTB = 0b11111111;
    		}
    
    	}
    	return 0;
    }
    Danke schonmal für jede Antwort!

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    20.05.2006
    Ort
    Lippe
    Alter
    48
    Beiträge
    524
    Hallo,

    riecht nach Hardwareproblem. 500mA ist zu viel! Poste mal den Schaltplan und kontrolliere alle Verbindungen.

    PORTB |= (1 << PB0) Hier wird das 0-Bit von PORTB gesetzt.
    DDRB &= ~(1 << PB0) Hier wird (nur) das 0-Bit von DDRB gelöscht
    Schau dir das hier sonst mal an.

    Gruß

    Jens

  3. #3
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.183
    LED mit Vorwiderstand?
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    03.01.2009
    Beiträge
    17
    Naja, Schaltplan gestaltet sich als schwierig Ich steck die Verbindungen auf einer selbst geätzten Platine.
    Verbunden zum µC sind VCC, 2 mal GND und natürlich RESET. MUSS ARef und AVCC auch noch verbunden werden? Weil bis jetzt hats immer so geklapt, wollts hier aber grade nochmal erwähnen.
    Am Taster liegen 5V an, ein 22k Widerstand zieht das ganze auf masse. Widerstand ist ok. Sind auch keine Brücken oder ähnliches auf der Platine - hab ich gemessen.
    LED hat natürlich einen Vorwiderstand.

  5. #5
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.183
    AVCC brauchst du wenn du PORTA verwenden willst.
    Tasten sicher an PORTC, denn wenn du 5V über die Tasten an einen als Ausgang geschalteten Port legst der auf low ist, dann ist das so viel wie kurzschluss.
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    03.01.2009
    Beiträge
    17
    Jap, 100% sicher, sonst würde ja auch die LED nicht angehen, oder?
    Aber am Programm ist soweit nichts falsch? Damit ich das für mich ausschließen kann.

  7. #7
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.183
    Das Programm ist richtig, auch wenn das delay sinnlos ist.
    Wie schaltest du die LED wieder aus?
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

  8. #8
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    20.05.2006
    Ort
    Lippe
    Alter
    48
    Beiträge
    524
    Hallo,

    AVCC hat Hubert ja schon geschrieben, sonnst muss deine Belegung nur noch zum Programm passen. Da ist sonst nichts falsch. Ist der Controller ein DIP und gesockelt? Zieh ihn mal raus und schalte die LED mit einer Drahtbrücke. Dann drück den Taster.

    Gruß

    Jens

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    03.01.2009
    Beiträge
    17
    Die LED bleibt einfach an, ich hab den Code einfach komplett runter gekürzt, weils nicht richtig klapte, sodass die LED einfach nur angeht. Aus geht sie erst wenn ich Reset drücke oder den µC vom Strom trenne.
    Ja, der Controller ist DIP und ruht in einem Nullkraft Sockel.
    Ich versuch das mal mit der Drahtbrücke.

Berechtigungen

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