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
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.
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/..
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
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
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
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 :-/.
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
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...
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
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
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
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...
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 ;-)
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...
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 ? ^_^
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
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
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
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.
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
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.
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.