Forum: Mikrocontroller und Digitale Elektronik Ausgang eines Pins gleich eingang eines anderen Pins setzen


von Jens (Gast)


Lesenswert?

moin,
gibt es eine Möglichkeit bei einem AVR (ATtiny 2313) den Ausgang eines 
Pins automatisch gleich den Eingang eines anderen pins zu setzen?
Also z.B. PB0 ist eingang, PB1 ist ausgang
Wenn PB0 High wird, soll PB1 auch auf high gesetzt werden.
Eine möglichkeit wäre dies in einer ISR zu tun.
Gibt es aber eine Möglichkeit, dies irgendwi automatiosch zu machen? 
Also ähnlich wie der zustand von PB1 ist die Adresse vom Zustand von PB0 
?

Jens

von Dieter R. (drei)


Lesenswert?

Jens schrieb:
> moin,
> gibt es eine Möglichkeit bei einem AVR (ATtiny 2313) den Ausgang eines
> Pins automatisch gleich den Eingang eines anderen pins zu setzen?

Bei ATtiny mit CCL ja, allerdings nur mit den entsprechenden Pins. Beim 
2313 nicht.

von c-hater (Gast)


Lesenswert?

Jens schrieb:

> gibt es eine Möglichkeit bei einem AVR (ATtiny 2313) den Ausgang eines
> Pins automatisch gleich den Eingang eines anderen pins zu setzen?

Klar: du verbindest die beiden Pins einfach mit etwas Kupferdraht (oder 
-Leiterbahn).

Ansonsten: keine Chance für den 2313. Nur für neue Tinys mit CCL.

Beitrag #6327089 wurde von einem Moderator gelöscht.
Beitrag #6327092 wurde von einem Moderator gelöscht.
Beitrag #6327098 wurde von einem Moderator gelöscht.
Beitrag #6327121 wurde von einem Moderator gelöscht.
von kleiber (Gast)


Lesenswert?

GuckOchNur schrieb im Beitrag #6327089:
> $regfile "attiny2313.dat"
> $crystal = 4000000
>
> Ddrb = &B11111110     'PortB0 Eingang Rest Ausgang
>
> Do
>
>    If Pinb.0 = 0 Then
>       Portb.1 = 0
>      Else
>       Portb.1 = 1
>    End If
>
> Loop

Wenn schon, denn schon:
Do
  Portb.1 = Pinb.0
Loop

Beitrag #6327128 wurde von einem Moderator gelöscht.
von HildeK (Gast)


Lesenswert?

GuckOchNur schrieb im Beitrag #6327092:
> C kann und will ich nicht -sehe aber nicht, warum das da nicht auch
> gehen sollte.

Klar geht das so auch in C, aber das ist nicht das, was der TO will. 
Wenn dein Programm sonst noch was sinnvolles tut, dann reagiert der 
Ausgang erst, wenn es zufällig mal wieder an deiner obigen Befehlskette 
vorbeikommt.
Für das, was du da programmiert hast, ist ein Stück Draht sinnvoller und 
noch schneller ...

Beitrag #6327134 wurde von einem Moderator gelöscht.
von der nixwois (Gast)


Lesenswert?

Jens schrieb:
> Wenn PB0 High wird, soll PB1 auch auf high gesetzt werden.

Mal ne blöde frage an den TO. Was zum Geier willst du damit bezwecken?
Ist deine Anwendung so Zeitkritisch?

Beitrag #6327140 wurde von einem Moderator gelöscht.
von Jens (Gast)


Lesenswert?

GuckOchNur schrieb im Beitrag #6327134:
> HildeK schrieb:
>> GuckOchNur schrieb:
>>> C kann und will ich nicht -sehe aber nicht, warum das da nicht auch
>>> gehen sollte.
>>
>> Klar geht das so auch in C, aber das ist nicht das, was der TO will.
>
> Das ist GENAU das, was der TO will.

Ähm nein, da hat HildeK schon recht.
Wie ich in meinem Anfangspost geschrieben habe, ist mir dieser Weg ja 
bewusst. Zwar nicht in der hauptschleife aber im Interrupt.
Habe ja explizit nach einem Weg gefragt, ohne den Ausgang explizit zu 
setzen.

Aber mit einem Attiny2313 geht es ja nicht.

von Wolfgang (Gast)


Lesenswert?

c-hater schrieb:
> Klar: du verbindest die beiden Pins einfach mit etwas Kupferdraht (oder
> -Leiterbahn).

Das wird der als Ausgang geschaltete PB1 nicht mögen, wenn du ihn hart 
mit dem Signal verbindest, dass PB0 ansteuert. Und die Quelle schafft es 
möglicherweise gar nicht, die Ausgangsstufe von PB1 zu überfahren.

Beitrag #6327150 wurde von einem Moderator gelöscht.
von Dieter R. (drei)


Lesenswert?

der nixwois schrieb:
>
> Mal ne blöde frage an den TO. Was zum Geier willst du damit bezwecken?
> Ist deine Anwendung so Zeitkritisch?

Einfaches Beispiel: Überlastabschaltung. Wird 10.000-fach so gemacht, 
allerdings mit CCL.

von Jens (Gast)


Lesenswert?

der nixwois schrieb:
> Mal ne blöde frage an den TO. Was zum Geier willst du damit bezwecken?
> Ist deine Anwendung so Zeitkritisch?

Nein, einfach nur interesse halber ob so etwas möglich ist.
Momentan habe ich es auch in der ISR gelöst.

Dann kam mir die Idee, wenn ich mehrere oder andere Inputs habe. Dann 
muss ich das immer ändern. Falls der Input kein Interrupt auslöst müsste 
ich es in der Hauptschleife wie GuckOchNur geschrieben hat machen.

Dann war die Idee, den Ausgangs-Pin bei der Initialisierung mit dem 
Eingangs-Pin zu verknüpfen und bräuchte mich im weiteren Code nicht mehr 
drum kümmern

Beitrag #6327159 wurde von einem Moderator gelöscht.
von c-hater (Gast)


Lesenswert?

Wolfgang schrieb:

> Das wird der als Ausgang geschaltete PB1 nicht mögen, wenn du ihn hart
> mit dem Signal verbindest, dass PB0 ansteuert. Und die Quelle schafft es
> möglicherweise gar nicht, die Ausgangsstufe von PB1 zu überfahren.

???

Lies' einfach nochmal das TO... Es war nirgendwo gefordert, einen 
Ausgang mit einer Art "override" zu belegen. Gefordert war nur einen 
Ausgang durch einen Eingang zu steuern und dazu möglichst wenig tun zu 
müssen, am besten garnix.

OMG, gibt es denn hier wirklich nur noch Idioten?

Beitrag #6327171 wurde von einem Moderator gelöscht.
von Wolfgang (Gast)


Lesenswert?

c-hater schrieb:
> OMG, gibt es denn hier wirklich nur noch Idioten?

Sprich nicht so böse von dir.

Wenn du den PB1-Ausgang des TO per Draht auf das Steuersignal des 
PB0-Eingangs zwingst, machst du ein "override" vom PB1. Oder welche 
Wirkung versprichst du dir von dem von dir vorgeschlagenen Draht 
zwischen PB0 und PB1?

von Codo (Gast)


Lesenswert?

Wolfgang schrieb:
> Oder welche Wirkung versprichst du dir von dem
> von dir vorgeschlagenen Draht zwischen PB0 und PB1?

Du erwartest doch jetzt nicht von unserem Möchtegern-Gott, dass er 
seinen Fehler zugibt (obwohl es jeder nachlesen kann, was er vorschlug)?

von Jens G. (jensig)


Lesenswert?

c-hater (Gast)

>Wolfgang schrieb:

>> Das wird der als Ausgang geschaltete PB1 nicht mögen, wenn du ihn hart
>> mit dem Signal verbindest, dass PB0 ansteuert. Und die Quelle schafft es
>> möglicherweise gar nicht, die Ausgangsstufe von PB1 zu überfahren.

>???

>Lies' einfach nochmal das TO... Es war nirgendwo gefordert, einen
>Ausgang mit einer Art "override" zu belegen. Gefordert war nur einen
>Ausgang durch einen Eingang zu steuern und dazu möglichst wenig tun zu
>müssen, am besten garnix.

>OMG, gibt es denn hier wirklich nur noch Idioten?

Klar, Du bist das beste Beispiel dafür. Schließlich bezog sich Wolfgang 
auf eine Aussage von Dir, nicht vom TO. Und da hast Du ja eine 
Kurzschlußvariante genannt.

Ansonsten: man kann Ausgang und Eingang mit Dioden ANDen, oder 
vielleicht auch mit einem "echten" AND.

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Wolfgang schrieb:
> Wenn du den PB1-Ausgang des TO per Draht auf das Steuersignal des
> PB0-Eingangs zwingst, machst du ein "override" vom PB1. Oder welche
> Wirkung versprichst du dir von dem von dir vorgeschlagenen Draht
> zwischen PB0 und PB1?

 Einen Kurzschluss zwischen Quelle und PB.1 natürlich.

 Aber nur mal aus Neugier, womit soll PB.1 verbunden werden und warum
 braucht man überhaupt den Umweg über PB.0->PB.1?

 Den Sinn des Ganzen verstehe ich ganz einfach nicht...

: Bearbeitet durch User
von Martin V. (oldmax)


Lesenswert?

Hi
Jens schrieb:
> gibt es eine Möglichkeit bei einem AVR (ATtiny 2313) den Ausgang eines
> Pins automatisch gleich den Eingang eines anderen pins zu setzen?
> Also z.B. PB0 ist eingang, PB1 ist ausgang
> Wenn PB0 High wird, soll PB1 auch auf high gesetzt werden.
> Eine möglichkeit wäre dies in einer ISR zu tun.
> Gibt es aber eine Möglichkeit, dies irgendwi automatiosch zu machen?
> Also ähnlich wie der zustand von PB1 ist die Adresse vom Zustand von PB0
> ?

Nun, da weiter keine Absicht erklärt wurde, hätte ich auch den Draht 
vorgeschlagen. Sobald die Schaltung eingeschaltet wird, gebe ich auf 
einer weiteren Leitung die Spannung weiter. Da braucht es noch nicht mal 
einen Controller. Also, nicht wundern, wenn manchmal die Antwort 
erschreckend einfach ist. Allerdings erzeugt es bei mir lediglich ein 
Lächeln und das sollte es beim Fragestelleer auch, denn er ist es 
gewesen, der die Antwort herausgefordert hat, anstatt hier gleich in 
einen beleidigenden Ton zu verfallen. Leute, habt ihr es denn so nötig?
Gruß oldmax

von Martin V. (oldmax)


Lesenswert?

Hi
Ach ja, hab vergessen, meinen Senf dazu zu geben. In der Regell wird 
beim Start eines Controllers eine Initialisierung durchlaufen, bevor die 
Programmschleife betreten wird. Das ist so weit ich weiß, unabhängig von 
der Programmiersprache. Warum dann nicht in dieser Initialisierung den 
Ausgang auf ganz normalem Wege den Status des Eingangs zuweisen. Nachher 
im Programm nach Bedarf. Und wenn der Ausgang immer dem Eingang 
gleichgeschaltet sein soll, ja dann versteh ich wirklich nicht, warum 
dann überhaupt ein Controller zwischen Eingang und Ausgang sein soll.
Gruß oldmax

von A. S. (Gast)


Lesenswert?

Manchmal geht es über Umwege, z.b. Timer-eingang und Timer-Ausgang für 
eine Flanke.

Andere haben comparatoren (Pic), Selbst mit SPI oder I2C (Master) lässt 
sich für eine Flanke was basteln. Das erfordert aber alles mehr Aufwand.

Ein einfaches Gatter dürfte das einfachste sein, wenn nicht 2 Dioden 
ausreichen.

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.