Forum: Mikrocontroller und Digitale Elektronik AVR: interne Pullups zuschalten


von Herr_Mann (Gast)


Lesenswert?

Hallo,
kann mir jemand sagen, wie man unter Bascom die internen Pullup-Rs 
zuschalten kann.

Habe im Forum einen Beitrag gefunden, da stand:
zuerst Pins als INPUT definieren und dann die entsprechenden Portbits 
auf 1 setzen.

Also etwa so für Portbit 2 von Port D:

Config Pind.2 = Input
Pind.2 = 1                     (interne pullups aktivieren?!)
A = Pind.2

Das funktioniert jedoch bei meinem Mega32 definitiv nicht und kommt mir 
auch irgendwie merkwürdig vor. Wenn ich so vorgehe und danach die 
entsprechenden Portbits auslese, kommen abwechselnd Nullen und Einsen, 
das sieht für mich schwer nach undefinierten Zuständen aus.

Jemand ne Idee oder Tipp (ausser auf C umsteigen, das kommt nämlich 
wirklich bald)?

von Tom (Gast)


Lesenswert?

Die Eins muss auf portd geshrieben werden, nicht auf pind.
Bei manchen Prozessoren muss noch das PUD Bit im MCUCR gesetzt werden.

von Klaus (Gast)


Lesenswert?

Herr_Mann wrote:
>  die entsprechenden Portbits auf 1 setzen.
...
> Pind.2 = 1


Warum Schreibst du richtig Portbits und setzt aber stattdessen doch 
Pin???

Tom wrote:
> Bei manchen Prozessoren muss noch das PUD Bit im MCUCR gesetzt werden.
Was heißt PUD?  "Pull Up Disable"!!!!!!  Ob man das setzen sollte, um 
den Pullup zu aktivieren?!?

von Kachel - Heinz (Gast)


Lesenswert?

> Jemand ne Idee oder Tipp

Wirf die CONFIG-Anweisung für im AVR implementierte Hardware *) weg und 
richte Dich nach dem Datenblatt. Jeder Port hat drei Register, PORTx, 
DDRx und PINx. Lies im Datenblatt die Erklärung zu den Registern, dann 
kannst Du die gewünschten Zustände mit dem Zuweisungsoperator (=) 
zuweisen.

Versuche, den Zusammenhang von Bits und Bytes zu verstehen. Jeder 
Portpin entspricht einem Bit im Byte des Gesamtportes.

> (ausser auf C umsteigen, das kommt nämlich
> wirklich bald)?

Naja, das glaubst Du ja selbst nicht, warum investierst Du noch Zeit in 
BASCOM, wenn Dein Ziel C ist? Du solltest Dich vielmehr mit ASM 
beschäftigen, das ist auch für C eine große Hilfe, denn ASM fördert das 
Verständnis für die Architektur des Controllers, dies wiederum ist eine 
verdammt gute Voraussetzung beim Planen halbwegs effektiv arbeitender 
Programme.

KH

*) Config-Anweisungen für Softwaremodule wie LCD-Treiber, 
Software-UART/SPI/I²C sind sinnvoll und auch notwendig. Bei der im AVR 
integrierten Hardware (Ports/Timer/UART/SPI/TWI/ADC/...) ist es besser, 
auf Config zu verzichten und die Werte gemäß Registerbeschreibung im 
Datenblatt von Hand in die Register zu schreiben (bzw. auszulesen). Das 
ermöglicht mehr Möglichkeiten bei der Nutzung der Features und fördert 
das Verständnis der Architektur.

von Herr_Mann (Gast)


Lesenswert?

Hallo, mit portd.255 klappts schon mal.
Denke mal, wenn ich mit portd.x nur die benötigten bits hochsetze, wirds 
auch gehen.

@kachel-heinz
lach, hab mir gestern noch einen stapel bücher zu c und asm für avrs 
besorgt, die basic-geschichte mach ich aber noch in bascom fertig. immer 
schön eins nach dem anderen ;O)

auf jeden fall danke für die erschöpfenden antworten und inspirationen!

von Kachel - Heinz (Gast)


Lesenswert?

> Hallo, mit portd.255 klappts schon mal.

Aha... Dabei gibt es nur portd.0 bis portd.7...

Aber egal, Du wirst das schon machen.

KH

von Herr_Mann (Gast)


Lesenswert?

tja, manchmal ist schneller = langsamer und gemeint war natürlich portd 
= 255

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.