www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Frage zu PORTx, PINx und Pull-up-Widerständen


Autor: _matze (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin!

PORTx ist für die Pull-Up-Widerstände bei als Eingang geschalteten Pins 
zuständig, der Pegel über PINx geregelt. Bei Ausgängen nimmt man dann 
PORTx. Das war mir bislang nicht bewusst, ich habe immer PINx verwendet, 
und das hat auch funktioniert.

Gestern hatte ich allerdings das Problem, dass ich einen als Ausgang 
geschalteten Pin (D6 am tiny2313) per PIND gesetzt habe. Es sollte damit 
ein Relais gesteuert werden. Wir haben dann irgendwann gemerkt, dass das 
Relais brummt, also ständig toggelt (per Oszi überprüft). Nachdem wir 
den Quellcode nach und nach bis auf die Zeile
for(;;) {
  PIND |= (1<<PD6);
}

reduziert hatten, war klar, wo der Fehler liegt. Nach entsprechender 
Internet-Recherche bin ich dann darauf gestoßen, dass hier PORTD 
verwendet werden muss.

Meine Frage ist: Was passiert denn hier? Welche Funktion hat PINx, wenn 
der Zielpin als Ausgang gesetzt ist? Wäre klasse, wenn mir das jemand 
erklären könnte.

Gruß Matze

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
PINx hat bei den neueren AVRs die Funktion, den betreffenden Pin zu 
toggeln, indem man eine 1 in das entsprechende Bit schreibt (wie Ihr 
auch richtig festgestellt habt). Nur ein Schreibzugriff auf PORTx legt 
die Zustände der Ausgangstreiber unabhängig vom vorherigen Zustand 
fest.

Autor: _matze (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
OK, jetzt verstehe ich die seltsamen Phänomene von gestern. Na ja, wenn 
man's einmal weiß...

Dankeschön!

Gruß Matze

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
_matze wrote:
> OK, jetzt verstehe ich die seltsamen Phänomene von gestern. Na ja, wenn
> man's einmal weiß...
Steht aber alles im Datenblatt. Ne "Internet-Recherche" braucht man da 
eigentlich nicht...

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.