PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Pullup Problem ATTINY13



chw-load
17.05.2009, 14:12
Hallo!

Ich wollte nur wissen wie man bei diesem Programm den Pullup Wiederstand auf PINB2 festlegt




#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 */
}


}
}


mfg

chw-load

radbruch
17.05.2009, 14:23
DDRB &= ~(1<<PB2); // PB2 auf Eingang
PORTB = (1<<PB2); // PullUp einschalten

Willkommen im RN-Forum

Gruß

mic

chw-load
17.05.2009, 15:06
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

radbruch
17.05.2009, 15:20
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

chw-load
17.05.2009, 15:31
Danke nochmals!

mfg

chw-load