Forum: Mikrocontroller und Digitale Elektronik Bascom Ausgang auf Tristate


von Christian H. (konkil)


Lesenswert?

Hallo Leute

ich möchte einen Ausgang eines Atmegas per Bascom weder auf 0 noch auf 1 
schalten, sondern auf den Tristate Zustand.

Kann man das mit Bascom realisieren?

Wenn ich den Port nicht Konfiguriere, dann ist er ja offen. Kann ich 
diese Config auch wider während des Programms ändern?

Also z.B.

PortC.0 = 1
 wait 1
PortC.0 = 0
 wait 1
PortC.0 = ??? Tristate
 wait 1

von Route_66 H. (route_66)


Lesenswert?

Hallo!
einfach den betreffenden Portpin auf Eingang (mit/ohne) Pullup.

von lurker (Gast)


Lesenswert?

Christian H-elec schrieb:
> PortC.0 = 1
>  wait 1
> PortC.0 = 0
>  wait 1
> PortC.0 = ??? Tristate
>  wait 1

PortC.0 = 1
wait 1
PortC.0 = 0
wait 1
Config PortC.0 = Input  ' = Tristate
wait 1

von Christian H. (konkil)


Lesenswert?

Hallo

Das scheint so nicht ganz zu stimmen.
Der Port ist, wenn er einmal per Befehl Config konfiguriert wurde immer 
irgendwie definiert.

Kann man diese Config nicht wieder löschen?

von Karl H. (kbuchegg)


Lesenswert?

Christian H-elec schrieb:
> Hallo
>
> Das scheint so nicht ganz zu stimmen.
> Der Port ist, wenn er einmal per Befehl Config konfiguriert wurde immer
> irgendwie definiert.
>
> Kann man diese Config nicht wieder löschen?

vergiss das Config.
Jeder Port auf dem AVR hat ein DDRx Register, über welches er auf 
Eingang oder Ausgang konfiguriert wird.
Config macht auch nichts anderes, als dort die entsprechenden BIts zu 
setzen. Aber nichts und niemand hindert dich daran, selber in den DDRx 
Registern das einzustellen, was du willst.

AVR-Tutorial
AVR-GCC-Tutorial

Ja, ich weiss. Keines dieser Tutorien ist für Bascom. Aber das macht 
nichts. Denn das Prinzip (und das ist das wichtige) ist überall das 
gleiche. lediglich die Schreibweise ist ein wenig anders. Kennst du das 
Prinzip ist der Rest ein Kinderspiel.

von Dietrich L. (dietrichl)


Lesenswert?

lurker schrieb:
> Config PortC.0 = Input  ' = Tristate

lt. BASCOM-Hilfe müsste das "Config PinC.0 = Input" heißen.

Gruß Dietrich

von lurker (Gast)


Lesenswert?

Christian H-elec schrieb:
> Kann man diese Config nicht wieder löschen?

Einfach irgendwo im Code wieder als Output konfigurieren. Das Kommando 
macht nichts anderes als das DDRx Register zu beschreiben.

Du hast nicht geschrieben, wie so oft hier, welchen µC du nutzt. 
Vielleicht kommt dir das jtag-Interface auf Port C in die Quere.

Rest vom Code ist auch unbekannt. Netiquette.

von Christian H. (konkil)


Lesenswert?

Danke für die Antworten.

Atmega16
PortA (was auch gleichzeitig der ADC Port ist.

Ich werde es nochmal versuchen.

Danke

von lurker (Gast)


Lesenswert?

Dietrich L. schrieb:
> lurker schrieb:
>> Config PortC.0 = Input  ' = Tristate
>
> lt. BASCOM-Hilfe müsste das "Config PinC.0 = Input" heißen.

Beim Config auf Port bzw Pin geht beides und funktioniert beides bis 
mindestens Version 2.0.7. Bei Pegelabfrage auf Portpin ist die 
Unterschied sehr wichtig.

von Karl H. (kbuchegg)


Lesenswert?

Beachte auch:
Es macht einen Unterschied, ob auf dem Portpin der Pullup-Widerstand 
eingeschaltet ist.
Nur weil du einen Portpin, der auf Ausgang mit dem Wert 1 gesetzt ist 
auf Eingang umschaltest, wird das entsprechende Bit im Port Register 
nicht gelöscht. Deine 1 vom vorhergehenden Ausgansgstatus wird so zur 
Aufforderung den Pullup an diesem Pin einzuschalten.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.