Also meine Idee war einen einfachen Bus herzustellen.
Wie unten im biold zu sehehn hängen 3 Slave-Controller an einem amster.
Dies können untereinander nicht kommunizieren, soviel ist klar.
Die eigentlich Idee ist, dem Hauptcontroller Arbeit abzunehmen.
Da ich eine GPS-Maus verwenden möchte, dachte ich mir, dass ein Co-Prozessor schon die ganzen Strings der Maus entschlüsselt, und zurechtschneidet, und dann z.B. nur die Position ausgibt, oder die Geschwindigkeit.
Deshalb, also wenn der Prozessor gerade Zeit hat, die INformationen zu verarbeiten, oder diese jetzt benötigt, enabled er den entsprechenden Controller, der über einen Interrupt dann den Wert üder RS232 ausgibt.
ODer man könnte es so machen, dass jeder Slave.Controller eine Adresse erhält, und der haupt-controller dann diese Andresse sendet,. so dass der Slave-C weiß, das er od nicht gemeint ist.
Ja, vermutlich geht das über I2C einfacher, aber ich möchte günstige AVrs, wie den AT90S2313 oder sogar 2323 verwenden.
Benötige ich dann für jeden Controller einen MAX, oder reicht es wenn sie Untereinandner so kommunizieren und nur für den PC einen MAX zusammen benutzen?
Wenn Du 2 - 3 Euro mehr zahlst, dann könntest Du Meg8 mit I2C nehmen. Vorteil wäre das du keine weitere Hardware (Bustreiber etc. brauchst). Bis 3m ist I2C eigentlich recht problemlos. Allerdings müsstest du dich dann mit der Slave-Programmierung beschäftigen und das ist gerade beim Einstieg nicht ein erhöhter Schwierigkeitsgrad.
Von Software I2C-Slave Programmierung rate ich ab. Damit hab ich keine gute Erfahrung gemacht da dies einfach zuviel Performance kostet. Ein Slave sollte immer Hardware-I2C benutzen. Daher verwende ich bei meinen Karten RN-Speak, RN-Motor nun auch nur noch Hardware I2C des Mega 8.
Alternativ bietet sich der RS485 Bus an, siehe unter den Artikeln. Der ist schon für mehrere Slave gedacht und kommt ab 2 Leitungen aus. Allerdings braucht man dazu einen Max 485. Hier hat glaub Kjion die meiste Erfahrung.
Oben genanntes Schaltbild müsste eigentlich funktionieren. Allerdings muss Master halt die Slaves freigeben so das die sich nicht in die Quere kommen. Und zudem können sie so schlecht gegenseitig kommunizieren.
Besser wäre ein Ringleitungskonzept wie es auch hier im Forum schon mal in einem Thread angesprochen wurde. Einfach die Controller in Reihee schalten. Also TX des ersten auf RX des zweiten. Dann TX des zweiten auf RX des dritten und zuletzt TX wieder auf RX des ersten.
In dem Fall müssten die Controller die Daten empfangen und schaun ob diese für ihn bestimmt sind. Könnte man durch eine Kennung machen.
Sind die Daten nicht für einen bestimmt, dann werden die einfach unverändert zum nächsten übertragen. So geht das wieter bis sie am Ziel sind.
Kommen die Daten unverändert beim Absender wieder an, dann war der Empfänger nicht da!
Eine andere Möglichkeit in Bascom wäre einfach die verwendung mehrerer RS232 Ports. Bascom kann recht einfach per Software jeden Port zu einer RS232 Schnittstelle machen.
Und dann gibt es noch SPI und 1 Wire-Dallas Bus, mit denen hab ich aber noch nicht sonderlich Erfahrung.
Erwähnen möchte ich noch das die Möglichkeiten des AT90S2313 beschränkt sind, die 2K hat man schneller voll als man denkt. Also nicht zu große Projekte mit diesem Controller planen.
Ich bin hatl noch ein voller Einstieger, kennst mich aus dem Thread mit dem Programmieradapter
Also die möglichkeiten mit mehreren RS232 ausgängen finde ich interessant. da werd ich mich mal schlau machen.
Aber da es ja hier wirklich nur Slave Prozessoren sind, die nur senden sollen, wenn sie gefragt werden, reicht das so wenns es läuft.
Einen weiteren wollte ich zur überwachung der Abstandssensoren oder des Linienverfolgern nehmen. Einen vielleicht für ne Funksteuerung etc.
Das ist der Bus, der auch zum programmieren benutzt wird. MOSI, MISO, SCK und Pin SS sind dafür zuständig. Auch der ist wie I2C hardwaremäßig in den AVR´s implementiert. Allerdings hab ich kaum Software gesehen wo der genutzt wird
Lesezeichen