www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR: interne Pullups zuschalten


Autor: Herr_Mann (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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)?

Autor: Tom (Gast)
Datum:

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

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?!?

Autor: Kachel - Heinz (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Herr_Mann (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Kachel - Heinz (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Herr_Mann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
tja, manchmal ist schneller = langsamer und gemeint war natürlich portd 
= 255

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.