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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren