www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ATmega16 und Port PB2


Autor: Ronny Schulz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe an Port PB2, der ja auch gleichzeitig INT2 und AIN0 ist einen
DS18S20 zu hängen. Leider funktioniert der da nicht dran. An einem
anderen Port geht der aber.

Ich habe da zwar irgendwas mit internen PullUps gelesen. Aber das peile
ich irgendwie nicht. Hat jemand die Lösung für mich?

Danke!

Autor: Fabian Braun (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Servus Ronny

Also etwas zu den internen Pull-Ups (Beispiel Anhand von PORTB):
Wenn DDRB = 0x00, also Eingang ist und PORTB = 0x00 dann hast
du einen Eingang ohne Pull-Ups. Änderst du jedoch dann PORTB auf 0xFF,
dann sind die internen Pull-Ups (100k bis 500k) aktiviert. Für den
DS1820 brauchst du dann natürlich trotzdem noch ein externen Pull-Up
weil der interne "ein bisschen" zu gross wäre.

Reicht das?

Gruss Fab

Autor: Ronny Schulz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja danke! Das hatte mich vorher nie so recht interessiert mit den
Pullups. Ich sehe auch wenig Sinn in der Funktion, da der Widerstand ja
doch etwas groß ist, wie Du gerade sagtest. Ich wollte mal Taster ohne
zusätzlichen Pullup anschließen, was natürlich mächtig daneben ging -
oder ich hatte die dummerweise garnicht aktiviert, Das würde das
Problem erklären.

Aber letztendlich hat der PB2 irgedwie eine Sonderstellung wegen dem
Analog-Komparator. Dazu sollten die internen Pullups deaktiviert sein,
so dass die Initialisierung so aussehen müsste:

DDRB &= ~(1<<PB2); /* 1-Wire auf Eingang */
PORTB &= ~(1<<PB2); /* interne PullUps deaktivieren */

Klar ist das extern der 4.7k-Widerstand als PullUp dient.
Aber dennoch funktioniert das Ganze nicht und an PA2 funktioniert es.
Das ist es, was ich nicht verstehe.

Letztendlich muss ich ja nur die 4 defines verändern und das geht
einfach nicht. Irgendwo ist das was mit dem Port nicht so, wie es sein
soll.

#define DS1820_PORT_DDR        DDRB
#define DS1820_PORT_OUT        PORTB
#define DS1820_PORT_IN        PINB
#define DS1820_BIT_1WR        PB2

Autor: Ronny Schulz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Toll .. wieder mal dumme Programmierfehler, die man ewig sucht. Hmm ..
alles sieht man auch nicht mit dem Debugger so richtig. :)

Also das Thema hat sich jetzt erledigt. :)

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.