Forum: Mikrocontroller und Digitale Elektronik Datenübertragung mit mehreren ATMegas


von Blackmore (Gast)


Lesenswert?

Hi,

ich hab folgendes Problem:
1 ATMega via USB am Rechner mit 8 digitalen Eingängen
x ATMegas mit jeweils weiteren 8 digitalen Eingängen

die minimale Entfernung zwischen dem ersten und zweiten Mega beträgt 
50cm
am zweiten hängt der dritte Mega, USW...

Welche Datenübertragung sollte ich wählen??? Größtes Problem: die 
gesamte Schaltung muss über den USB Bus gespeist werden, die 
Verbindungen zwischen den Megas sollten kostenneutral sein, 
netzwerkkabel, oder sowas und das ganze sollte so günstig wie möglich 
sein...

Macht mal bitte ein Brainstorming, bringt mich auf Ideen...

Gruß Blackmore

von Blackmore (Gast)


Lesenswert?

Ich vergaß: maximal sollen es ca 6-8 Platinen sein, jeweils 8 
Eingänge...

von spess53 (Gast)


Lesenswert?

Hi

>Macht mal bitte ein Brainstorming, bringt mich auf Ideen...

Statt der ATMegas, PCF8574 und I2C.

MfG Spess

von raketenfred (Gast)


Lesenswert?

8€ pro bauteil ist aber auch gut happig??

von Alexander S. (esko) Benutzerseite


Lesenswert?

Blackmore schrieb:
> die minimale Entfernung zwischen dem ersten und zweiten Mega beträgt

Die max. Entfernung ist wichtiger.

Wie wäres mit RS232 und einer CRC über die Daten?
Ist billig, erprobt, störfest, leicht erweiterbar.
Printbuchsen und Kabel gibts bei allen Versendern.

von Blackmore (Gast)


Lesenswert?

Ist des resistent gegen Störeinstrahlung???

von g457 (Gast)


Lesenswert?

UART zzgl. +5V vom USB, das ganze Daisy-Chainen. Dann müssen zwar alle 
Daten immer durch alle Knoten, das sollte mangels entsprechender 
Anforderung aber kein Problem darstellen. Dafür ists 
günstig/billig/einfach/..

von spess53 (Gast)


Lesenswert?

Hi

>8€ pro bauteil ist aber auch gut happig??

Das ist wohl die Luxusausführung mit Platineinfassung oder ein 10-ner 
Pack. Ansonsten z.B. bei Ex-Angelika 1,25/0,97€.

MfG Spess

von Andi (Gast)


Lesenswert?

Ich werf jetzt einach mal Porterweiterung & SPI ein... dann haste nur 
einen Atmega und quasi fast unendlich Ports

von Frank K. (fchk)


Lesenswert?

Ersetze die zusätzlichen Atmegas durch Schieberegister 74HC589. Ist 
billiger, Du brauchst nur an einer Stelle Software, und Du kannst alles 
synchron abtasten.

Wenn die Entfernungen zu groß werden, nimm RS422/485-Transceiver. 
Insbesondere für die Shift-Clock und Register-Clock empfehle ich das.

Wenn Du den 74HC589 nicht bekommst, nimmst Du halt 74HC166.

fchk

von Simon K. (simon) Benutzerseite


Lesenswert?

74HC595 sollte auch gehen als Schieberegister.

von Frank K. (fchk)


Lesenswert?

Simon K. schrieb:
> 74HC595 sollte auch gehen als Schieberegister.

Der hat 8 AUSgänge, keine 8 EINgänge.

fchk

von Simon K. (simon) Benutzerseite


Lesenswert?

Oh, da habe ich wohl nicht aufgepasst. Entschuldigt! ;-) Dachte das wär 
hier der "Klassiker" der Porterweiterung.

von Jadeclaw D. (jadeclaw)


Lesenswert?

Simon K. schrieb:
> Dachte das wär
> hier der "Klassiker" der Porterweiterung.

Isser auch, aber eben für Ausgänge.

von Blackmore (Gast)


Lesenswert?

Frank K. schrieb:
> Ersetze die zusätzlichen Atmegas durch Schieberegister 74HC589. Ist
> billiger, Du brauchst nur an einer Stelle Software, und Du kannst alles
> synchron abtasten.
>

Das war mein erster Gedanke, als Schieberegister die 165er nehmen...

Jedoch hab ich Angst wegen Störeinstrahlungen....

Die Bits werden jede Sekunde vom PC abgefragt. Ich dachte mir, ich 
bastel die Schaltung, lasse sie vom ATMega in einer Endlosschleiffe 
abfragen...
Wenn der PC dann ruft, dann unterbricht der Mega seine Arbeit und 
übersendet die Bits dem System...

Nur ein Problem habe ich:
Ich weiß letztlich nie, wieviele dieser Karten angeschlossen ist, aber 
der Mega muss bei Abfrage jedesmal einen String von 48 Bits 
übertragen...

also: 2 165 angeschlossen, string besteht aus 16 Bits mit dem original 
Status, und die restlichen 32 Bits sind nur 0...
oder 4 165 angesschlossen, also die ersten 32 Bits geben den richtigen 
Status wider, die restlichen 16 Bits interessieren nicht und sind bei 
der Übertragung zum PC 0...

wie kann ich das realiasieren???
Oder übergeben die Schieberegister der Reihe nach und wenn keines mehr 
angeschlossen ist, kommt halt nichts mehr??? oder wie soll muss ich das 
verstehen???

Und die Bits dürfen nicht Flattern. Also, ein Mögliches Entprellen ist 
ja nicht das Problem, jedoch darf ein Bit nicht zwischendurch einfach 
den Pegel wechseln, obwohl gar nichts mit dem Bit passieren dürfte...


Frank K. schrieb:
> Wenn die Entfernungen zu groß werden, nimm RS422/485-Transceiver.
> Insbesondere für die Shift-Clock und Register-Clock empfehle ich das.

Bitte mehr Input - wie soll ich das verstehen??? wie viel ist zu große 
Entfernung - wie muss ich den Tranceiver verstehen??? (Links?)

Gruß Blackmore

von Simon K. (simon) Benutzerseite


Lesenswert?

Jadeclaw Dinosaur schrieb:
> Simon K. schrieb:
>> Dachte das wär
>> hier der "Klassiker" der Porterweiterung.
>
> Isser auch, aber eben für Ausgänge.

Ich meinte nicht den Chip, sondern den Thread. Dachte der Thread wäre 
der "Klassiker".

Habe es heute irgendwie nicht so mit Lesen :-/.

von spess53 (Gast)


Lesenswert?

Hi

>Nur ein Problem habe ich:
>Ich weiß letztlich nie, wieviele dieser Karten angeschlossen ist, aber
>der Mega muss bei Abfrage jedesmal einen String von 48 Bits
>übertragen...

Immer wieder lustig, wenn der Fragesteller nach längerer Zeit mit dem 
eigentlichem Problem herausrückt.

MfG Spess

von Blackmore (Gast)


Lesenswert?

Sorry, aber da ich nur ausführendes Organ bin und der Planer, bzw. 
Anforderer selbst nicht wirklich weiß was er will...

Er denkt sich halt: wenn es funktioniert... ... ...

Ich dagegen versuche vorraus zu denken, das drumherum zu sehen, was evtl 
noch wichtig wäre...

In sofern könnten noch weitere Infos vorhanden sein.  allerdings kenn 
ich die selbst noch nicht...

von MCUA (Gast)


Lesenswert?

Die "Problem"-Stellung ist total UNDEFINIERT, da der Thread-op (bzw der 
Planer, Anforderer) keinerlei Angaben über die nötige ÜbertragungsRate 
macht.

von Frank K. (fchk)


Lesenswert?

Blackmore schrieb:

> Jedoch hab ich Angst wegen Störeinstrahlungen....

Dagegen hilft geeignete Schaltungstechnik.


> Nur ein Problem habe ich:
> Ich weiß letztlich nie, wieviele dieser Karten angeschlossen ist, aber
> der Mega muss bei Abfrage jedesmal einen String von 48 Bits
> übertragen...

Wenn Du eine Schleife machst, an einen Ende genau eine 1 und dann nur 
0'en reintaktest, dann kannst Du einfach mitzählen, wann Deine 1 wieder 
am anderen Ende der Schieberegister rausfällt.

> Und die Bits dürfen nicht Flattern. Also, ein Mögliches Entprellen ist
> ja nicht das Problem, jedoch darf ein Bit nicht zwischendurch einfach
> den Pegel wechseln, obwohl gar nichts mit dem Bit passieren dürfte...

Die Schieberegister haben einen Takteingang zum Laden der Register aus 
den Eingängen (HC589) oder einen Eingang, der zwischen Laden und 
Schieben umschaltet (HC166). Du sendest den Ladeimpuls, die 
Schieberegister werden über ihre parallelen Eingänge geladen, und dann 
ist egal, was an den Eingängen passiert.

>> Wenn die Entfernungen zu groß werden, nimm RS422/485-Transceiver.
>> Insbesondere für die Shift-Clock und Register-Clock empfehle ich das.
>
> Bitte mehr Input - wie soll ich das verstehen??? wie viel ist zu große
> Entfernung - wie muss ich den Tranceiver verstehen??? (Links?)

Bei RS422 und RS485 nimmt man nicht eine Leitung pro Signal, sondern 
zwei. Der Empfänger misst die SpannungsDIFFERENZ. Störungen von außen 
wirken idealerweise auf beide Leitungen (deswegen werden die verdrillt, 
damit das auch in der Ralität so ist) und ändern nichts an der 
Differenz.

Es gibt passende Sende- und Empfangsbausteine. Ein Google nach RS422 und 
Transceiver bzw Transmitter/Receiver zeigt Dir die.

fchk

von Juliano (Gast)


Lesenswert?

Ich werfe einfach mal Lin in den Raum. Einfach, Störsicher, 
schnarchlangsam, günstig (1€ / Treiberbaustein)

von Marc (Gast)


Lesenswert?

Ich sag dann mal:

6 adrige Modularkabel ungeschirmt (Reichelt: ~1 Euro für 10 Meter)
Point to Point Übertragung

Braucht keine zusätzlichen Treiber und ist günstig,
dafür aber nur für kleine Geschwindigkeiten ausgelegt.
Da du ja sagtest nur 1mal/Sekunde dürfte es aber durchaus reichen.

Das einzigste ist die Störstrahlung, diese dürfte aber hier seeehr 
gering ausfallen, allein schon wegen der Verschlatung.

Marc

von Blackmore (Gast)


Lesenswert?

Frank K. schrieb:
>> Nur ein Problem habe ich:
>> Ich weiß letztlich nie, wieviele dieser Karten angeschlossen ist, aber
>> der Mega muss bei Abfrage jedesmal einen String von 48 Bits
>> übertragen...
>
> Wenn Du eine Schleife machst, an einen Ende genau eine 1 und dann nur
> 0'en reintaktest, dann kannst Du einfach mitzählen, wann Deine 1 wieder
> am anderen Ende der Schieberegister rausfällt.

Beim 165 geht des auch??? muss ich mir nachher doch mal des Datenblatt 
genauer durchlesen...
sehr gut...

>> Und die Bits dürfen nicht Flattern. Also, ein Mögliches Entprellen ist
>> ja nicht das Problem, jedoch darf ein Bit nicht zwischendurch einfach
>> den Pegel wechseln, obwohl gar nichts mit dem Bit passieren dürfte...
>
> Die Schieberegister haben einen Takteingang zum Laden der Register aus
> den Eingängen (HC589) oder einen Eingang, der zwischen Laden und
> Schieben umschaltet (HC166). Du sendest den Ladeimpuls, die
> Schieberegister werden über ihre parallelen Eingänge geladen, und dann
> ist egal, was an den Eingängen passiert.

Das Problem mit dem Flattern ist folgendes: wenn ein Eingang auf L ist, 
und ich frage ab, habe ich dann auch L.. klar...

Aber ich frage jede Sekunde ab, und solange der Eingang L ist, MUSS auch 
am PC L ankommen... und nicht - durch Störungen außerhalb ab und zu mal 
auf H gehen... Erst wenn der Eingang wirklich H ist...

Dabei kommt es nicht so sehr drauf an, ob der L oder H Pegel nach einer 
Sekunde ankommt, oder nach 3, aber er muss "Zeitnah" ankommen, und darf 
sich erst wieder ändern, wenn der entsprechnde Eingang sich ändert...

Gruß Blacky

von Blackmore (Gast)


Lesenswert?

Blackmore schrieb:
> Beim 165 geht des auch??? muss ich mir nachher doch mal des Datenblatt
> genauer durchlesen...
> sehr gut...

ok... beim 165 kann ich nicht löschen, müsste also erstmal 48x L 
reinjagen, danach kann ich mit dem Zählen beginnen...

Wäre auch noch machbar... - und wenn ich beim 'löschen' nen H Pegel 
bekomme, dann stimmt was nicht...

wäre auszutesten...

von Marc (Gast)


Lesenswert?

Nur mal so aus Neugier,
was möchtest du eigendlich damit machen ?
Hausautomatisierung?  Alarmanlage? oder vieleicht etwas für eine 
Modelbahn?

Ich kann mir vieles Vorstellen, aber interessant währe es schon zu 
wissen ;-)

von Blackmore (Gast)


Lesenswert?

Ganz grob: das dient als Abrechnungssystem eines Billardcafes

die Kugeln sind in schubladen untergebracht, und beim herausziehen einer 
Schublabe fängt die Zeit an zu laufen...

von Marc (Gast)


Lesenswert?

Und ich sag schon so etwas wie Point-to-Point.

Würde nicht auch ein normales SPI vom jedem Mega zu Host reichen ?
(Notfalls auch über einen anderen Mega, welcher als eine Art Switch 
dient)

Oder würde das Kabelsalat dann stören ? ^_^

von Blackmore (Gast)


Lesenswert?

Eine Sternverkabelung wollen wir vermeiden, teilweise sieht man die 
Schränke auch von hinten und ist nicht wirklich schön... Ein Schrank 
bedeutet 8 Tische, die überwacht werden...

Multi-Megas ist denke ich letztlich sinnbefreit - SPI kann ich auch über 
einen Mega machen, halt die einzelnen 74xx166er in den verschiedenen 
Schränken... Hauptsache die Bits ändern sich beim schieben nicht 
plötzlich auf dem Weg zum Mega (fliegen aus der Kurve, wenn's Kabel zu 
arg gebogen ist, etc...)

Deswegen den einen Mega, damit ich ohne PC schon das Multibyte den 
Gegebenheiten entsprechen formatieren kann... Die Übertragung an den pc 
ist dann einheitlich und der Betreiber nervt mich dann nicht mit 
irgendwelchen Fragen...

Aber wieso Mega - kennt jemand nen AVR mit serieller Schnittstelle, evtl 
sogar USB und SPI, ansonsten recht klein, günstig, wenig Stromhungrig 
und für den obigen Programmaufwand genug Speicher???
Mit'm Handy suchen ist etwas umständlich, und auf Arbeit ist's nicht so 
mit Internetmöglichkeit...

Gruß Blacky

von Frank K. (fchk)


Lesenswert?

Du könntest einen FT2232 einsetzen und diesen im SPI-Modus betreiben. 
Doku und Treiber gibts auf der FDTI-Seite. Dann entfällt der 
Microcontroller-Programmieraufwand ganz und Du musst Dich nur noch um 
das PC-Programm kümmern.

Zu den RS422 Treibern: Die 26LS31/26C31 (4 Sender) und 26LS32/26C32 (4 
Empfänger) gibts seit Jahrzehnten und von verschiedenen Herstellern, da 
solltest Du keine Probleme haben, die zu beschaffen.

fchk

von Blackmore (Gast)


Lesenswert?

Nen FT2232 im SPI Mode wäre schon toll - aber an das PC Programm komm 
ich nicht dran -das rückt der Anforderer nicht raus... Also muss ich 
letztlich so handhaben, das ich ihm sage, sende du mir ne Anforderung, 
die so aussieht, und du bekommst nen 48bit Text zurück - was du damit 
machst ist mir egal...

Er gehört zu den Typen, die alles wollen, nur nicht investieren...
Ich gehöre zu den Typen, die alles irgendwie mal getestet haben wollen - 
und wenn es dann funzt, bin ich glücklich... Außerdem lerne ich wieder 
etwas mehr das Programmieren...

Gruß blacky

von Karl H. (kbuchegg)


Lesenswert?

Blackmore schrieb:

> Multi-Megas ist denke ich letztlich sinnbefreit - SPI kann ich auch über
> einen Mega machen, halt die einzelnen 74xx166er in den verschiedenen
> Schränken... Hauptsache die Bits ändern sich beim schieben nicht
> plötzlich auf dem Weg zum Mega (fliegen aus der Kurve, wenn's Kabel zu
> arg gebogen ist, etc...)

Jetzt wo deine eigentliche Aufgabenstellung ein wenig klarer ist, 
tendiere ich dann doch dazu, eine 'Mulit-Mega' Anwendung vorzuschlagen. 
Der Hintergrund: Ich denke es wäre in deinem Fall eine extrem gute Idee, 
jeden deiner Schränke als autonome Einheit anzusehen. Auch wenn es zum 
jetzigen Zeitpunkt vielleicht noch nicht angedacht ist, könnte sich das 
in der Zukunft als sehr nützlich erweisen. Ich denke da zb an die 
Erweiterung mit einem LCD und einem Drehschalter pro Kasten, an dem sich 
die Kunden ihre 'Lade' einstellen können und auf dem LCD sehen, wie 
lange sie schon spielen (ev. auch die Kosten noch mit dazu), aktuelle 
Uhrzeit etc.

Von daher finde ich, dass jeder Kasten erst mal einfach nur eine 
autonome Einheit sein sollte, die ihre 8 Laden für sich selbt 
'verwaltet'. Der übergeordnete PC ist dann nur noch das Tüpfelchen auf 
dem i: dort liefern alle Kästen auf Anfrage ihre Statusmeldungen und 
Zeiten ab und der PC bereitet sie dann entsprechend auf, um dem 
Betreiber einen Überblick zu geben.

PS: Ich würde auch die Zeit beim Schrank selber erfassen und nicht auf 
dem PC. PCs, besonders unter Windows, schmieren gerne schon mal ab. Die 
aktuell laufenden Zeiten sind dann futsch. Einen Mega hingegen kannst du 
speziell in so einer einfachen Aufgabenstellung, ganz leicht so 
programmieren, das der in 2 Jahren vielleicht höchstens einmal 
abschmiert, und das auch nur weil der Strom ausgefallen ist.


Meine Meinung zu der Aufgabenstellung.

von Blackmore (Gast)


Lesenswert?

Karl heinz Buchegger schrieb:
> Blackmore schrieb:
>> Multi-Megas ist denke ich letztlich sinnbefreit - SPI kann ich auch über


> Jetzt wo deine eigentliche Aufgabenstellung ein wenig klarer ist,

> Erweiterung mit einem LCD und einem Drehschalter pro Kasten, an dem sich

> PS: Ich würde auch die Zeit beim Schrank selber erfassen und nicht auf

> programmieren, das der in 2 Jahren vielleicht höchstens einmal

Erweiterungen sind insofern angedacht, das irgendwann mal eine Schaltung 
mit Ausgabeports realisiert werden soll, sowas wie die bekannten 
Relaisplatinen. Derzeit braucht man sowas nicht.
Vielleicht braucht man irgendwann mal, aber eher unwahrscheinlich... bla 
bla bla...

Ich glaub sogar, das Du, Karl Heinz, mal in einem anderen Fred 
geschrieben hattest, der Satz "brauchen wir nicht" sollte einen 
hellhörig machen...

Genau daran habe ich mich gehalten... deswegen bekommt der Typ auch nur 
diese Schaltung für Eingänge... Will er Ausgänge, mach ich ihm eine neue 
Schaltung, will er Displays, ok - wieder eine - ich habe damit kein 
Problem, er will es so... :)

Wobei ich sogar schon soweit bin, das er eine Hauptplatine bekommt, mit 
einem ATMega mit USB Anbindung und zwei Steckern - einer für Eingänge, 
einer für Ausgänge. An diese Stecker schliesse ich dann die jeweiligen 
Schieberegister an und bei Eingängen soll er mir ein "GET" schicken und 
er bekommt seine 48 bits - bei Ausgängen soll er mir ein 
"POST10010010101" schicken und die Ausgänge werden gesetzt...

LCD würde ich ihm dann entweder an diese Ausgänge hängen, oder sogar 
einen extra "Controller" mit Mega geben...

Zum Thema alles auf den Mega verlagern... Das System wie es jetzt ist, 
existiert jetzt schon seit ca. 20 Jahren, basierend auf einer ISA-Karte 
mit 32 Eingängen. Das Programm wurde damals unter DOS entwickelt, 
erweitert um eine Gastronomie-Abrechnungssystem, umgebaut auf Windows, 
erweitert um Internetcafe Funktionalität...

Auch wenn ich die Programmierkenntnisse des Erstellers nicht kleinreden 
will - aber er hat keine Ahnung, jedoch, das Programm ist genial - 
selbst ich habe nach einer 10 Minütigen Einweisung verstanden, wie es 
funktioniert, und einmal bei deren Weihnachtsfeier dort bedient...

Aufgrund der ISA-Karte ist der Betreiber etwas abhängig, bzw. 
aufgeschmissen, die ISA-Karte wird nicht mehr hergestellt... deswegen 
sucht er nach einer Möglichkeit, alles auf zukunftsorientierte Systeme 
umzustellen...

Weiterhin sind diese Schubladen nicht für die Gäste einfach so zugängig. 
Die Gäste MÜSSEN sich bei der Bedienung melden, und bekommen dann eine 
Schublade ausgehändigt. Damit gehen sie zum Tisch und spielen. Am Ende 
der Partie geben sie die Kugeln wieder ab und die Berechnug wird 
gestoppt...

Jetzt werde ich erstmal die Schaltung mit Eingängen via SPI probieren, 
wenn das klappt, evtl auch die Ausgänge... Dann bekommt der Typ seinen 
Controller und seine Testeingänge und soll dann entscheiden, ob er es 
gebrauchen kann, oder nicht...

Will er mehr, bekommt er mehr - muss aber auch mehr dafür tun... ... ... 
Dem muss man nicht die Ideen bringen, sondern ihn dazu veranlassen, das 
er selbst auf diese Ideen kommt...

Gruß Blackmore


PS: ich hatte ihm vor ca. nem halben Jahr schon mal vorgeschlagen, das 
man das so machen könnte - darauf meinte er, das er ja schon Karten hat, 
und das alles super funktioniert...
Dann bastelte ich ihm eine Eagle Karte mit Eagle3D Bild, und sein Cafe 
stand dort als Text drauf... Das hat sein Ego getroffen - jetzt will er 
die Karte haben, die vor nem halben Jahr noch viel zu teuer war und 
vollkommen unnötig... fg

von g457 (Gast)


Lesenswert?

Die Muli-Mega(/Tiny/PIC/MSP/..)-Lösung hätte zu den schon genannten noch 
einen nicht zu unterschätzenden Vorteil: Die kann aufwandsarm Prüfsummen 
mitschicken zur Sicherstellung der Datenintegrität. Wenn dann bei der 
Übertragung mal ein Bit (aus)flippt, dann forderst Du den Datensatz 
einfach erneut an und schickst nicht unbemerkt fehlerhafte Informationen 
ins Abrechnungssystem.

von Marc (Gast)


Lesenswert?

Beitrag "SPI Reichweite"

Hab hier nochwas interesantes zum Thema SPI gefunden...
Nach deren Tests kann man bei 125KHz und 100 Ohm Serienterminierung am 
Sender sogar über 40 Meter kommen.

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.