Eingang am Attiny

Gast #3595683
Lesenswert?

Hallo,
ich weiss nicht, wie ich den eingang richtig schalten soll.
1
DDRB &= ~(1<<PB4);  
2
  PORTB |= (1<<PB4);

sobald ich jetzt den pin PB4 (ist ein Attiny) mit GND verbinde, schaltet 
der Eingang.
1
if(!(PINB&(1<<PINB4)))

Also ist der Eingang im prinzip die ganze zeit High und wird Low, wenn 
ich die verbindung trenne.

Ich hätte aber gerne, dass der Eingang die ganze Zeit auf Low ist und 
ich im prinzip die Verbindung von plus zum pin verbinde und somit der 
Eingang auf High wird.

Da habe ich allerdings keinen plan wie ich das anstellen soll. Hat da 
wer einen rat für mich?
#3595707
Lesenswert?

Hallo,

mit der Zeile
PORTB |= (1<<PB4);
hast du den internen Pullupwiderstand aktiviert, den du allerdings nicht 
möchtest. Das Register PORTB musst du an dem gewünschten Pin einfach auf 
0 setzen, dann kannst du es extern machen, so wie du es haben möchtest 
(Schalter zwischen VCC und Pin und Pulldown zwischen Pin und GND).

Hier ist dazu einiges erklärt:
http://www.mikrocontroller.net/articles/AVR-Tutorial:_IO-Grundlagen#Pullup-Widerstand

Gruß Kai
Gast #3595711
Lesenswert?

Kai S. schrieb:
> mit der Zeile
> DDRB &= ~(1<<PB4);
> hast du den internen Pullupwiderstand aktiviert,

falsch. damit hat er den Pin als Eingang konfiguriert.

Frank schrieb:
> PORTB |= (1<<PB4);

hier wird der Pullup aktiviert.
d.h. diese Zeile weglassen und einen externen Pulldown verwenden.

Allerdings spart man sich idR den externen Widerstand und benutzt den 
internen Pullup, weil es vollkommen egal ist, welche Pegel am Pin 
anliegen.

Dich interessiert ja nur:
"Taste gedrückt" oder "Taste nicht gedrückt"
Dafür ist der Pegel am Pin irrelevant

lg
Chris

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren