DDRB &= ~(1<<PB2); // PB2 auf Eingang
PORTB = (1<<PB2); // PullUp einschalten
Willkommen im RN-Forum
Gruß
mic
Hallo!
Ich wollte nur wissen wie man bei diesem Programm den Pullup Wiederstand auf PINB2 festlegt
mfgCode:#include <avr/io.h> int main () { int n; DDRB = (1<<PB3); while(1) { if ( PINB & (1<<PINB2) ) { /* Überprüfen ob 3. Bit in PINB gesetzt ist*/ PORTB |= (1<<PB3); /* PB3 Einschalten */ for (n = 0; n < 2000; n++); /* WARTEN */ PORTB &= ~(1<<PB3); /* PB3 Ausschalten */ for (n = 0; n < 2000; n++);/* WARTEN */ } } }
chw-load
DDRB &= ~(1<<PB2); // PB2 auf Eingang
PORTB = (1<<PB2); // PullUp einschalten
Willkommen im RN-Forum
Gruß
mic
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Danke für die rasche Antwort!
Jetzt Blinkt aber die LED dauerhaft (ich glaube weil "PORTB = (1<<PB2);" also die if abfrage trifft immer zu)
Kann man das Problem irgentwie beheben?
mfg
chw-load
Hallo
Der PullUp verbindet den Eingangspin intern mit Vcc (5V), ohne weitere Beschaltung des Pins ergibt die Abfrage deshalb immer high. Eine klassische Anwendung wäre z.B. ein Taster zwischen Eingangspin und GND. Dann ist allerdings die Logik vertauscht, ein gedrückter Taster (Kontakt geschlossen) wird dann als Low erkannt. Die Abfrage in deinem Programm sollte dann etwa so aussehen:
if ( !(PINB & (1<<PINB2)) ) ...
Gruß
mic
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Danke nochmals!
mfg
chw-load
Lesezeichen