Moin!
Mein Projekt sieht vor, dass ein Atmega8, nennen wir ihn mal "Master"
Steuerbefehle an und Rückmeldungen von mehreren weiteren Atmegen (Plural
von Atmega?) sendet und empfängt.
Was ist da sie schlaueste/ sicherste/ professionellste Art der
Realisierung?
Meine Vorstellung:
an die UART des Masters kommt nen Mux.
Bin über spannendere Lösung dankbar!
Schlau wäre es, wenn Senden und Empfangen an und von mehreren Clients
ein Feature sein soll, nicht auf den UART zusetzen, sondern gleich eine
busfähige Schnittstelle zu nehmen.
- gerd
Das waren jetzt alle Schnittstellen auf einmal. Welche bietet denn den
höchsten Bedienkomfort bzw geringsten Programmieraufwand wenn es darum
geht, Telegramme zu versenden?
Das "beste" wirst du nicht finden. RS-485 oder LIN gehen sowieso nur
mit externen Bustreibern, CAN im Prinzip auch (wenn du nicht gerade
die CAN-fähigen Controller in Betracht ziehst). SPI ist Mist, wenn
man einen Controller als Slave hat, da der Slave keine Möglichkeit
hat, dem Master zuzurufen: "Kleinen Moment, bitte!". TWI hat diese
Möglichkeit, dafür ist es ein passiv gepullter Bus, was die
Störsicherheit ein wenig runterdrückt und vor allem die Datenrate.
Für 1-wire trifft das alles auch noch zu, außerdem gibt's dafür keine
Hardwareunterstützung im Controller.
Prickelnd.
Ich hätte nichts gegen weitere Bustreiber, wie sie für den vielzitierten
RS485 nötig wären. Doch braucht man für 1 RS485 doch auch 1 UART, oder
nicht?
Du brauchst für RS485, CAN und LIN einen UART. je nach Geschwindigkeit
kann man ja auch nen Software UART implementieren.
Ist halt die Frage was die Controller sonst noch so machen sollen.
Benötigte Datenrate?
Anzahl Busteilnehmer?
Zu überbrückende Distanz?
Geforderte Zuverlässigkeit?
Geforderte Latenz?
Wie soll das Übertragungsverhalten aus Sicht der Controller aussehen?
Senden die z.B. oft und kleine Pakete oder grosse, lange Übertragungen
oder ...
Es geht nicht um Leben und Tod und auch nicht um explosionsgefährdete
Bohrplattformen. Und richtig eilig ist das auch nicht.
(Modelluboot)
Datenrate: mittel
Busteilnehmer: ca. 5
Entfernung: max. 1m
Zuverlässigkeit: ahap (auch Egogründe)
Hallo
Vielleicht ist sowas wie Token Ring eine Alternative.
Txd an RXD des nächsten, dann wider TXD davon an RXD des übernächsten
bis der Ring geschlossen ist.
Gruß
JJ
Bei 5 Megas kann man auch die RS232 der einzelnen Teilnehmer noch
parallel schalten.
Einer hat die Führung. Alle anderen halten die Klappe und reden nur noch
Aufforderung.
Den einen, der die Führung hat, kann man ja KaLeun nennen.
Hallo
Wenn ein Kabel bricht, ist wahrscheinlich bei jedem Bussystem Holland
mehr oder weniger in Not.
Ich kenne es auch nur, weil ich weiß, das an einem Packet-Radio Knoten
die TNC mit Token Ring verbunden sind. Ist einfach zu realisieren,
jeder kann an jeden senden. Nagut, jeder sieht alles und muß erstmal
schauen, ob es ihn betrifft, oder ob es nur weiterzuleiten ist.
Und ich schätze, das in einem Modell-Uboot nicht wirklich viel zu
tun ist für die ATmegas, die machen das weiterleiten so nebenher.
Gruß
JJ
Stephan R. schrieb:> ...auf einem Uboot nicht viel zu tun? Wenn Du wüsstest.
Kann es sein, dass du deine Megas masslos unterschätzt?
> RS232 parallel schalten find ich interessant, ich mag RS232. Aber geht> das so einfach?
Einfach so parallel geht natürlich nicht.
Das Tx vom KaLeun geht an alle Rx der niederen Ränge.
Die Tx der niederen Ränge gehen über eine UND Schaltung auf das Rx vom
KaLeun, TTL-RS232 vorausgesetzt. Jeder der anderen muss ja die
Möglichkeit haben, die Leitung vom Ruhezustand (1) auf 0 runterzuziehen.
Wenn du jedem Teilnehmer einen MAX232 spendierst, dann wird aus dem UND
ein wired-OR (Ruhepegel ist ja dann -12V und die Teilnehmer ziehen
diese beim Senden auf +12V)
Was machen deine Megas eigentlich, dass du gleich 5 Stück dafür
brauchst?
ich nehme die RS232-Version in der beschriebenen Variante auch für alle
möglichen Vernetzungen ums Haus. Problem ist aber, dass der Slave nicht
von sich aus Meldungen an den Master senden kann. Die Pollingrate des
Masters bestimmt, wie schnell der Slave sein wichtiges Anliegen an den
Master senden kann. Notlösung wäre eine /INT-Leitung pro Slave zum
Master.
Da wird es aber schon wieder Fummelei...
Uwe
Nix. Wegen der Innerhalbdesbootsübertragung habe ich ja diesen Threat
gestartet. LWL kommt zum Einsatz, wenn das Böötlein in der salzigen
Ostsee baden geht, wo Funk nicht tief genug hineinreicht.
Bis auf das Kamerabild:
Gähn, und wie verhinderst du dass den Megas langweilig wird?
Ach ich vergass: du vernetzt sie ja. Da können sie ja dann was übers
Netzwerk spielen :-)
PS: Die schiere Anzahl an Sensoren soll dich nicht beeindrucken.
Schieberegister als Port-Erweiterungen sind schon erfunden.
Wichtiger als die Anzahl an Sensoren und Aktuatoren ist: wie schauts mit
dem Timing aus? Ein einzelner Mega kann deine Sensoren mit links ein
paar tausend mal in der Sekunde abfragen. Und da bleibt dann immer noch
jede Menge Rechenzeit übrig.
Warum ich das aufs Tapet bringe: Weil die Dinge selten einfacher werden,
wenn man mehrere Prozessoren auf ein Problem ansetzt. Durch die
notwenige Kommunikation verkompliziert es sich oft.
Für den Notfall ist die Zolllast immer voller Bier und Kartenspiele
liegen unterm Bock.
Ich hab mir schon gedacht dass es vielleicht mit weniger Bauteileinsatz
geht, aber ich finde es aufgeräumter:
In der Mitte die Zentrale, die alles managt; hinten bei den Motoren eine
eigene Box, in der ein Atmel sich ganz in Ruhe um seine Motore kümmern
kann...
Das hält - so meine Vorstellung- auch die Programme der jeweiligen
Atmegas übersichtlicher und ich kann weitgehend auf Porterweiterungen
verzichten.
> 2 Kompressore, 1 Tiefenpeilsonar, 2 Distanzsensore, GPS, GSM, LWL, ISM,
LOL
Da der ex VP so ein VIP ist, sollten wir die PK wegen der PR auf dem WC
und nicht im TV machen. Dann sagt die MP zum KGB LMAA!
(Good Morning Vietnam)
Ich habe kürzlich von meinem abkackenden Atmega geschrieben, der immer
dann stehen blieb, wenn am Stecker gewackelt wird. Lieber, nur EIN
Atmega bleibt stehen.
Hallo,
Habe mich jahrelang mit Feldbus-Systemen beschäftigt.
Bei diesen Anforderungen liegst Du nahe am modernen KFZ.
Ob der AtMega das on Board hat oder nicht - der CAN - Bus ist das
richtige für deine Wünsche.
Er ist CDMA fähig (daher kann jeder mit jedem...) und hat außerdem Prio
- Slots, so daß hochpriore Geber eben auch eher Ihre Nachrichten (meist
kurz) weitergeben können.
jemand anderer Ansicht ?
Gruß,
THaala
Stephan R. schrieb:> Mein Projekt sieht vor, dass ein Atmega8, nennen wir ihn mal "Master"> Steuerbefehle an und Rückmeldungen von mehreren weiteren Atmegen (Plural> von Atmega?) sendet und empfängt.> Was ist da sie schlaueste/ sicherste/ professionellste Art der> Realisierung?
Schau Dir doch mal an, wie andere das machen: z.B. Automobilindustrie.
Dort wird für die einfachen und langsamen Geschichten LIN verwendet
(weil billig), und für die schnellen CAN. Zuverlässig & millionenfach
erprobt.
Wenn Du was anderes nimmst, musst Du schon verdammt gute Gründe haben.
Ein guter LIN-Slave ist der Tiny167, der ist nämlich für sowas gedacht.
Für CAN nimmst Du entweder einen 90CANxxx oder einen Mega64C1 oder
Mega64M1, die letzteren haben auch LIN-Hardware drin. Für CAN und LIN
brauchst Du immer externe Transceiver-Chips - das hat Fertigungsgründe.
Wenn Du unbedingt DIL-Gehäuse haben willst, schau Dich bei Microchip um
- die haben in der Richtung mehr Auswahl, und ein dsPIC ist auch nicht
zu verachten.
fchk
yepp
CAN ist wohl der geeignete Bus
zumal das Protokoll die Hierrchishe und die ereignetgesteuerte
Kkommunikation ermöglicht.
Wird in zwischen auch bei Aufzügen zum Standard.
Und der nur nen paar Dutzend Taster und LED und eine Handvoll Sensoren
und Antriebe.
Vorteile: Störstolleranz durch Diffsignalübertragung hohe
Übertragensrate,
fehlererkennung und effektive Fehlerbearbeitung .....
http://techwww.in.tu-clausthal.de/site/Dokumentation/Standards/CAN-Bus/CAN-Bus.ppt
MfG
> Für CAN und LIN brauchst Du immer externe Transceiver-Chips
Falsch:
http://www.mikrocontroller.net/attachment/28831/siemens_AP2921.pdf
Ist aber eher was für On-Board-Kommunikation.
Externen Module die Aktoren wie z.B. E-Motoren antreiben würde ich so
nicht verbinden (-> Masseversatz).
@ Thomas: Masseversatz? Und warum ist CAN etwas für
On-board-communikation?
Ich habe heute vom CAN-Bus geträumt, und zum Glück gibt es -soweit ich
weiss- auch einen CANbusfähigen Controller von Atmel.
Kennt sich jemand mit der Materie aus?
Ist das ein reiner CAN-Controller oder ein üblicher, nur mit CAN?
Wenn Geld keine Rolle spielt kannst ein paar AT90CAN einsetzen und eine
fertige CAN-Bibliothek verwenden. Siehe hier:
http://www.kreatives-chaos.com/artikel/universelle-can-bibliothek
Da bist halt für Controller + CAN-Bustreiber 10-12€ los aber dafür hast
ne Kommunikation die sicher funktioniert.
wegen 5 Bausteinen?
"Brain, was machen wir heute?"
"Pinky!, das was wir jeden Abend machen."
"Was denn, Brain?"
"Wir werden versuchen die Weltherrschaft an uns zureißen!"
so viel zu Größenwahnsinn....
Hi,
off topic
@Stephan R. könntest du mir mal bitte eine PM schicken, hätte da ein
paar Fragen zur restlichen Hardware des Bootes.
on topic
Ich würde dir auch zu CAN raten. Schau mal bei Microchip, die haben
fertige CAN-Bausteine und Bustreiber. Dann könntest du weiterhin deine
Mega8 benutzen. So twisted pair kann man auch noch überall durchs Boot
quetschen.
Bei Microchip findest du sicher auch eine Beschreibung von CAN, über die
Controller lässt sich ja streiten. Die Dokus von denen finde ich aber
ziemlich gut. Democode gibts auch ;)
Gruß Simon
> @ Thomas: Masseversatz?
Ja, Masseversatz.
> Und warum ist CAN etwas für On-board-communikation?
Gemeint ist natürlich nur die verlinkte Lösung ohne Transceiver.