Lass das Programm nach der Tastenabfrage ca. 1 Sekunde warten und schalte dann nach der Abfrage die LEDs wieder aus. Schau mal ob sie dauerhaft leuchten.
Lass das Programm nach der Tastenabfrage ca. 1 Sekunde warten und schalte dann nach der Abfrage die LEDs wieder aus. Schau mal ob sie dauerhaft leuchten.
Mit dem Beispiel gehts... jetzt reagiert er bloß auf zwei Taster statt auf einem...Code:#include <avr/io.h> #include <inttypes.h> #include <util/delay.h> #define F_CPU = 16000000UL int main() { while(1) { DDRB = (1 << DDB0); if(!(PINC & (1 << PC5))) //abfragen { //wenn gedrückt PORTB |= (1 << PB0); // Schaltet 2 LED's EIN _delay_ms(200); //entprellen } else { PORTB &= ~(1 << PB0); // Schaltet 2 LED's AUS. } } return 0; }
Mal sehen ob`s vll am Kabelgewusel liegt
Prima, wo ist denn nun der PullUp abgeblieben?
DDRC &= ~((1<<PC7) | (1<<PC6) | (1<<PC5) | (1<<PC4) ); // Pins auf Eingang
PORTC |= (1<<PC7) | (1<<PC6) | (1<<PC5) | (1<<PC4) ; // PullUps einschalten
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Es läuft nun!! THX @ All!
Irgendwie schon komisch weil ich mir sicher bin ich das ich dié PULL-UPs vorhin hab eingeschaltet... nur halt exkat anders herum
PORTC |= (1<<PC4) | (1<<PC5) | ... aber das ist doch völlig irrelevant oder etwa nicht??
Eigentlich schon.Irgendwie schon komisch weil ich mir sicher bin ich das ich dié PULL-UPs vorhin hab eingeschaltet... nur halt exkat anders herum
PORTC |= (1<<PC4) | (1<<PC5) | ... aber das ist doch völlig irrelevant oder etwa nicht??
Das ist egal in welcher Reihenfolge es angegeben wird, der Kompiler ersetzt es sowieso durch 0b11110000 oder einfach 240.PORTC |= (1<<PC4) | (1<<PC5) | ... aber das ist doch völlig irrelevant oder etwa nicht??
Übrigens würde ich zwischen Taster und GND noch einen Widerstand schalten um zu verhindern dass bei falscher Ansteuerung des Pins derselbige abraucht wenn eine Taste gedrückt wird! Er sollte mindestens so groß sein das maximal ca. 20mA fließen (also etwa >220) und gleichzeitig aber so klein das die Spannung am Spannungsteiler zwischen PullUp (>10k) und Schutzwiderstand am Pin noch sicher als Low erkannt wird. Bei meiner Anwendung oben verwende ich 820 Ohm.
Wie sieht denn nun die funktionierende Version des Programms aus?
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Lesezeichen