Forum: Mikrocontroller und Digitale Elektronik [AVR] Pin gleichzeitig setzen?


von Fabian K. (fabian_k)


Lesenswert?

Hallo,

folgende Situation:
Mehrere AVRs sind über einen Bus verbunden. Der Bus ist im Grunde eine 
Leitung, jeder AVR hängt mit einem IO-Pin darauf.
Die Busleitung soll nun von einem AVR auf High gesetzt werden, indem er 
vorher prüft ob sie schon High ist, wenn nicht, setzt er sie eben.

Nun meine Frage:
Wie hoch ist die Wahrscheinlichkeit, bzw. wird das jemals passieren, 
dass zwei AVRs zur selben Zeit die Busleitung prüfen, erkennen dass sie 
frei ist und dann beide auf High setzen?

Danke im voraus

Fabian

von Alexander S. (esko) Benutzerseite


Lesenswert?

Fabian K. schrieb:
> Wie hoch ist die Wahrscheinlichkeit, bzw. wird das jemals passieren,
> dass zwei AVRs zur selben Zeit die Busleitung prüfen, erkennen dass sie
> frei ist und dann beide auf High setzen?

So hoch, dass du diesen Zustand definitiv abfangen musst.
Schau mal nach CDMA.
https://de.wikipedia.org/wiki/Carrier_Sense_Multiple_Access/Collision_Detection

von Markus W. (Firma: guloshop.de) (m-w)


Lesenswert?

Fabian K. schrieb:
> Wie hoch ist die Wahrscheinlichkeit, bzw. wird das jemals passieren,
> dass zwei AVRs zur selben Zeit die Busleitung prüfen, erkennen dass sie
> frei ist und dann beide auf High setzen?

Die Wahrscheinlichkeit ist sehr gering. Als Ergänzung zu Alexanders 
Vorschlag: CSMA/CA löst das Problem. Ein geniales Beispiel ist die 
Arbeitsweise des CAN-Bus.

https://de.wikipedia.org/wiki/CAN-Bus#Arbitrierung.2C_Priorit.C3.A4t

von Falk B. (falk)


Lesenswert?

@ Fabian K. (fabian_k)

>Mehrere AVRs sind über einen Bus verbunden. Der Bus ist im Grunde eine
>Leitung, jeder AVR hängt mit einem IO-Pin darauf.


Hmm.

>Die Busleitung soll nun von einem AVR auf High gesetzt werden, indem er
>vorher prüft ob sie schon High ist, wenn nicht, setzt er sie eben.

Und warum? Mach es wie I2C und nutze die IOs als Open Drain. Dann 
geht schon mal nix kaputt, wenn mehrere AVRs aktiv sind.
Den Rest muss deine Software abfangen, damit sie nicht stehen bleibt und 
Fehler erkennt.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Falk Brunner schrieb:
> Dann geht schon mal nix kaputt, wenn mehrere AVRs aktiv sind.

Es geht auch nichts kaputt, wenn zwei Ausgänge mal eine Mikrosekunde
lang gegeneinander treiben.  Allerdings entstehen dabei erstens
undefinierte Pegel, zweitens fließen ziemliche Ausgleichsströme über
die Masse- und Versorgungsleitungen, die im Impulsbetrieb als Spikes
auftreten und dann diverse wundersame Wirkungen entfalten können.

Schon deshalb sollte man diesen Zustand lieber meiden.

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.