Bascom 7 Pins eines Ports setzen

Gast #2977374
Lesenswert?
• ▲
▼
Hallo,

wenn per DDR-Register der Pin auf Eingang gesetzt wurde, einfach eine 
Null an der entsprechenden Position ausgeben, dann passiert nichts.

@ Karl Heinz Buchegger:
Dein Verfahren wäre möglicherweise kontraproduktiv, da bei Eingängen ein 
gesetztes Bit im Port-Register (zumindest bei AVR's) den 
Pullup-Widerstand aktiviert. Z.B. ein Analogsignal am ADC-Eingang würde 
das sicherlich nicht so gut finden ...  :-(

Sollte es sich um einen 8051-kompatiblen Controller handeln, sähe die 
Sache etwas anders aus.

Der TO hat allerdings keinen Controllertyp angegeben.

> Was bewirkt das Setzen des Bits überhaupt wenn der Pin als Eingang
> konfiguriert ist?

Die Frage ist damit beantwortet. Das steht alles auch im Datenblatt des 
Controllers ...
Gast #2977378
Lesenswert?
• ▲
▼
Danke. Es ist ein Atmega8. Hab das im DB eigentlich auch so verstanden 
mit dem Pull-Up (mein Englisch ist nicht das Beste).
Werde also dann das Bit entsprechend der benötigten Pull-Up Einstellung 
immer mit ausgeben.
#2977385
Lesenswert?
• ▲
▼
Informer schrieb:
> Hallo,
>
> wenn per DDR-Register der Pin auf Eingang gesetzt wurde, einfach eine
> Null an der entsprechenden Position ausgeben, dann passiert nichts.
>
> @ Karl Heinz Buchegger:
> Dein Verfahren wäre möglicherweise kontraproduktiv, da bei Eingängen ein
> gesetztes Bit im Port-Register (zumindest bei AVR's) den
> Pullup-Widerstand aktiviert. Z.B. ein Analogsignal am ADC-Eingang würde
> das sicherlich nicht so gut finden ...  :-(

Und was ist da jetzt so schlimm daran, wenn man an diesem einen Pin 
sicherstellt, dass sich der Wert nicht ändert?

Denn genau darauf läuft es hinaus.
Ist der Inhalt des Port Registers an dieser Bitposition 1, dann schreibt 
man eben da auch eine 1 drauf. Ist er 0, dann schreibt man eine 0 drauf. 
Ergo: Nach der Zuweisung hat sich an diesem einen Bit nichts verändert. 
Alles ist danach genau gleich wie es vor der Zuweisung war.
Gast #2977394
Lesenswert?
• ▲
▼
Für den Avr etwas komplizierter aber für dich sicher einfacher
anstelle von
Portd = &B101x1011

kannst du
portd.0 = variable.0
portd.1 = variable.1
portd.2 = variable.2
portd.3 = variable.3
portd.5 = variable.4
portd.6 = variable.5
portd.7 = variable.6
Gast #2977397
Lesenswert?
• ▲
▼
@ Karl Heinz Buchegger:

Du hast Recht; es war ein dummer Denkfehler meinerseits.
Das Einlesen des PORT-Registers liefert natürlich das richtige Ergebnis. 
Ich hatte das mit dem Einlesen des PIN-Registers verwechselt ...  :-(

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.