Forum: Mikrocontroller und Digitale Elektronik Pin als Tristate-Ausgang beschalten


von Darius Zohurian (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

Ich habe folgende Frage:

Kann ich bei einem at90can128 einen Pin als Tristate-Ausgang
betreiben?

tristate funktion: (A = mein Ausgangspin) (E,G Pins die zur verfügung
stehen)

E   G    A
0   0    Hi-Z
0   1    0
1   0    Hi-Z
1   1    1

Ich habe die Pin möglichkeiten als Bild mitgeliefert, wie muss ich die
register beschalten, damit es funktioniert?

Vielen Dank für Antworten,
Darius

von Simon K. (simon) Benutzerseite


Lesenswert?

hm? steht doch da.

Hi-Z:
DDRx=0, PORTX=0
0:
DDRx=1, PORTX=0
1:
DDRx=1, PORTX=1

von Darius Zohurian (Gast)


Lesenswert?

Hallo Simon,

ja Du hast recht, aber wenn man den Ausgang z.B. über eine Switch case
Anweisung verändern möchte, muss man im schlechten Fall zwei bits
verändern, d.h. man bekommt einen zwischenzustand, denn man gar nicht
haben will.

deshalb meine verbesserte Frage, kann man es lösen, ohne zwei bits (im
schlechtesten Fall) verändern zu müssen?

Gruß,
Darius

von Simon K. (simon) Benutzerseite


Lesenswert?

Was spricht gegen sowas hier?

E   G    A
0   0    Hi-Z
0   1    0
1   0    Hi-Z
1   1    1
1
switch(E)
2
{
3
  case 0:
4
    PORTx = 0;
5
    if (G) DDRx = 1;
6
    else DDRx = 0;
7
    break;
8
  case 1:
9
    if (G) 
10
    .
11
    .
12
    .
13
    break;
14
}

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.