Forum: Mikrocontroller und Digitale Elektronik Bussystem mit AVR für Baugruppenträger


von Markus H. (markushehn)


Angehängte Dateien:

Lesenswert?

Hallo!

Und zwar erstmal was ich vor hab:
Ich konzipier grad ein Bussystem für einen Baugruppenträger.
Der Bus an sich soll aus 8 Adressleitungen, 8 Datenleitungen und 2 
Steuerleitungen bestehen.
Über die Steuerleitungen soll eine Art Handshake bei der Übertragung 
gemacht werden und zwar wie hier:

http://www.controllersandpcs.de/pdfs/bussysteme.pdf

wie auf Seite 36 beschrieben.

Die Baugruppen sind alle über eine Backplane 1:1 verbunden.

Zum Schaltplan:
Die Dateneingabe und Ausgabe soll mit Schieberegister über SPI gemacht 
werden.
"DIR" gibt die Richtung des Datenflusses durch die 245er vor und 
schaltet falls das ganze als Eingang fungieren soll die 4094 in den 
Z-Zustand.


Und nun meine Fragen:
Wie soll ich die Steuerleitungen am besten ausführen? In Tri-State oder 
Open-Kollektor-Technik?
Die Steuerleitungen müssen ja in beide Richtungen fungieren können.
Gibt es falls Tri-State da einzelne Bidirektionale Bus-Treiber?
Ich hätte vor die Steuerleitungen dann mit jeweils einem PIN eines AVRs 
zu verbinden. Kann man das dann so machen, dass im laufenden Betrieb die 
PINs einmal als Ein- und wieder als Ausgang betrieben werden? Oder hat 
das irgendwelche Nachteile?

Falls die 245er als Eingang fungieren sollen hab ich mir gedacht, da es 
vorkommen kann, dass kurzzeitig alle Baugruppen auf Eingang geschaltet 
sein können Pull-Down-Widerstände reinzuschalten, damit dort in diesem 
Fall ein definierter Pegel herrscht. Denk ich so richtig oder kann man 
das getrost weglassen?
Diese sind hochohmig gewählt, da durch andere Baugruppen da welche 
parallel geschaltet werden.

Gruß
Markus

von STK500-Besitzer (Gast)


Lesenswert?

Wozu der Umweg von SPI auf parallel?
Wieso nicht gleich TWI?

von Markus H. (markushehn)


Lesenswert?

Das so zu machen hab ich mir auch schon überlegt.
TWI ist da aber denk ich zu störanfällig, wegen den 
Leitungslängen/Kapazitäten und auch langsamer als die 
SPI-Parallel-Variante.

von STK500-Besitzer (Gast)


Lesenswert?

Markus Hehn schrieb:
> Das so zu machen hab ich mir auch schon überlegt.
> TWI ist da aber denk ich zu störanfällig, wegen den
> Leitungslängen/Kapazitäten und auch langsamer als die
> SPI-Parallel-Variante.

Worin unterscheiden sich denn die beiden Signale?
Je nach Leitungslänge musst du eh mit der Übertragungsrate runter. Siehe 
ISP-Problematik mit "langen" Kabeln.

von Purzel H. (hacky)


Lesenswert?

>Der Bus an sich soll aus 8 Adressleitungen, 8 Datenleitungen und 2
Steuerleitungen bestehen.

Was soll SPI damit zu tun haben ? Ein Parallelbus ist ein Parallelbus. 
Das genuegt. Allerding wuerd ich ein paar mehr Steuerleitungen 
spendieren.
- Read = Output enable
- Write
- Adress Latch enable : Zusammen mit Adresse = CS
- [ Peripheral Interrupt ]

von Markus H. (markushehn)


Lesenswert?

Erstmal Danke für die Antworten!

STK500-Besitzer schrieb:
> Worin unterscheiden sich denn die beiden Signale?
> Je nach Leitungslänge musst du eh mit der Übertragungsrate runter. Siehe
> ISP-Problematik mit "langen" Kabeln.

Ich bin nun echt am Überlegen es doch mit TWI zu realisieren.
Nur wie würdest du dann das mit den Pull-Up-Widerständen realisieren?
Pro Karte einen?
Oder nur einen pro Master-Baugruppe? (Das ganze soll auch als 
Multi-Master funktionieren können)
Ist dafür dann irgendeine Schutzbeschaltung nötig?

Delta Oschi schrieb:
> Was soll SPI damit zu tun haben ? Ein Parallelbus ist ein Parallelbus.

SPI + Schieberegister ist nur eine Porterweiterung vom AVR.

> Das genuegt. Allerding wuerd ich ein paar mehr Steuerleitungen
> spendieren.
> - Read = Output enable
> - Write
> - Adress Latch enable : Zusammen mit Adresse = CS
> - [ Peripheral Interrupt ]

Mein Hauptproblem bei der Variante des Parallel-Bus besteht darin wie 
ich die Treiberschaltung der Steuerleitungen realisieren soll. Als 
Tri-State oder Open-Kollektor?
Dann benötige ich ja pro Steuerleitung 2 Pins vom AVR:
Tri-State: 1 als Datenleitung, 1 als Richtungsschaltung
Open-Kollektor: 1 als Ausgang, 1 als Eingang

Gruß
Markus

von Markus H. (markushehn)


Lesenswert?

Ich werd das ganze nun ähnlich wie hier machen:

Beitrag "Modulares Mikrocontroller System"

Das ganze ist sehr universell gestaltet.
Für mein momentanes Projekt werd ich nur TWI zur Kommunikation nutzen.
Den Rest sozusagen als Reserve mal frei lassen.

Zu den Pull-Up-Widerständen:
Ich werde auf jeder Karte welche unterbringen und mit Jumper hin- oder 
wegschaltbar machen.

Wie siehts nun mit einer Schutzbeschaltung für den TWI-Bus aus?
Brauch ich dann auch Abschlusswiderstände, wie bei RS485?

Gruß
Markus

von Markus H. (markushehn)


Lesenswert?

Weiß eigentlich jemand was aus diesem Projekt geworden ist:

Beitrag "Modulares Mikrocontroller System"

Oder kennt jemand ähnliche Projekte?
Und dann hätt ich noch ne Frage interessehalber:
In welcher Bustechnik (Tri-State, open-Kollektor) werden Steuerleitungen 
in der Regel realisiert? z.B. bei PCI und ähnlichen.

Weiß jemand irgendwelche guten Referenzen, vorallem zur 
Schaltungstechnik von Bussystemen an sich?

Gruß
Markus

von Markus H. (markushehn)


Lesenswert?

Keiner ne Idee?

von Purzel H. (hacky)


Lesenswert?

Doch sicher. Aber nichts Murksiges, wie SPI und parallel kombiniert. 
Erst muss man sich im Klaeren werden, ob Single Master, oder 
Multimaster, welche Bandbreite man braucht und welche Datenmenge man 
rueberschieben will. Was soll die Reaktionszeit sein? Controlleitungen 
wuerd ich Tristate fuehren, denn Opencollector ist lahm und braucht mehr 
Strom.

von Sven P. (Gast)


Lesenswert?

Wenns schon so ein aufwändiger paralleler Bus werden soll, wie du in da 
konzipierst, dann kannst du auch gleich einen GPIB bauen. Da hast du 
dann auch praktisch kein Timing-Problem mehr und es gibt fertige 
Bustreiber (75SN160 und 75SN162); schau mal in meinen Artikel 
GPIB-RS232-Schnittstelle.

Da du ohnehin Treiberbausteine brauchst, würde ich gleich auf CAN 
setzen. Pins gespart, gescheite Pegel und Arbitrierung inklusive. Und 
die Möglichkeit, den Bus mal raus aus der Kiste zu führen (CANalyzer..)

von Markus H. (markushehn)


Lesenswert?

Delta Oschi schrieb:
> Doch sicher. Aber nichts Murksiges, wie SPI und parallel kombiniert.

Die SPI-Parallel-Murksversion wurde inzwischen verworfen ;)
Parallelbus macht da denk ich nur mit programmierbarer Logik Sinn... Wie 
ichs nun auch schon desöfteren im Netz gesehn hab.

> Erst muss man sich im Klaeren werden, ob Single Master, oder
> Multimaster, welche Bandbreite man braucht und welche Datenmenge man
> rueberschieben will. Was soll die Reaktionszeit sein? Controlleitungen
> wuerd ich Tristate fuehren, denn Opencollector ist lahm und braucht mehr
> Strom.

Gibts denn Bausteine mit einzelnen Bidirektionalen Bustreibern?
Also bei denen man getrennt von andren Treibern die Richtung einstelln 
kann?
Die mit separaten Bustreibern die ich bisher gesehn hab gehn nur in eine 
Richtung (74125, 74126).

Sven P. schrieb:
> Wenns schon so ein aufwändiger paralleler Bus werden soll, wie du in da
> konzipierst, dann kannst du auch gleich einen GPIB bauen. Da hast du
> dann auch praktisch kein Timing-Problem mehr und es gibt fertige
> Bustreiber (75SN160 und 75SN162); schau mal in meinen Artikel
> GPIB-RS232-Schnittstelle.
>
> Da du ohnehin Treiberbausteine brauchst, würde ich gleich auf CAN
> setzen. Pins gespart, gescheite Pegel und Arbitrierung inklusive. Und
> die Möglichkeit, den Bus mal raus aus der Kiste zu führen (CANalyzer..)

RS485 wird reservehalber mal mitgeführt (habs zumindest auf dem 
Belegungsplan des Bussteckers vermerkt).

Ich realisier das ganze nun mit TWI.
Würdet ihr da irgendwelche Schutzschaltungen mit einbaun?
Oder direkte Verbindung vom AVR auf Busplatine?

Gruß Markus

von Markus H. (markushehn)


Lesenswert?

Keiner ne Idee auf die letzte Frage?

von Purzel H. (hacky)


Lesenswert?

TWI ist doch Murks. Da muss man die Richtung umschalten. Deswegen kommt 
man nie auf eine vernuenftige Geschwindigkeit. SPI ist leider auch 
Murks, hat nicht einmal einen Buffer. Da ist das UART schon besser, denn 
es hat ein (1) Byte Buffer.

Zur Frage. Weshalb Schutzschaltungen? Auf Platinen sollte ja keine 
Ueberspannung auftreten. Allenfalls gegen RF (EMV) 100pF von jedem Pin 
gegen Masse.

von Markus H. (markushehn)


Lesenswert?

Hallo
Danke für die Antwort!

Der Beitrag hat mich auf das Thema Schutzschaltung gebracht:

Beitrag "Schutz von I²C-Bus"

Naja so große Datenmengen werd ich über Bus eh nicht befördern.
Wieso Murks?
Wurde scheinbar schon mehrfach so verwendet.

Wie gesagt, das ganze ist für einen Baugruppenträger.
Würdet ihr den AVR direkt mit der Busplatine verbinden oder sollte ich 
iwelche Treiberstufen zwischenschalten?
Gibts dann Treiberstufen die die Kommunikation vom TWI von sich aus ohne 
nen zusätzlichen µC-Pin regeln?
Oder reichen da die 100pF Kondensatoren mit in Serie geschalteten 
Widerständen? (siehe Beitrag)

Gruß
Markus

von spess53 (Gast)


Angehängte Dateien:

Lesenswert?

Hi

>Gibts dann Treiberstufen die die Kommunikation vom TWI von sich aus ohne
>nen zusätzlichen µC-Pin regeln?

Anhang.

MfG Spess

von Markus H. (markushehn)


Lesenswert?

Besten Dank!
So werd ichs dann machen.

Gruß
Markus

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.