AVR Bus?

Ich möchte gerne 3 meiner AVR später per BUS reden lassen (die restlcihen 3 werden mit einem XBEE huckepack gepackt)

Aber die 3 müßten an eine Art BUS, RS485, sehe ich das poblem, das ih nicht nur pollen möchten, und wenn die slaves reden sollen, bekomme ich ja probleme auf dem bus oder?

CAN gibts leider keine doku für BASCOM …

Hat sonst noch wer ideen und/oder lösungen?

Hi,

hab da noch was in der Pipeline, aber da geht es mir wie Toni, die platzt aus allen Nähten.

Funkmodul mit RFM12 und ATMEGA32 als „Black Box“; serielle Kommunikation, aber auch als Netzwerk untereinander konfigurierbar.
Bei Interesse PM.

mfg

Bernd

PS: ansonsten fällt mir noch so spontan nur noch ein Netzwerkprotokoll ein, welches für eine Powerline Anwendung geschrieben wurde; auch in Bascom und für ´nen Atmel; komm aber momentan nicht auf den Namen.

Hab´s gefunden: google mal nach SNAP Protokoll, ich hab keine Ahnung davon.

Also funk wird nicht funktionieren - zumindest beim letzen Modul, d zu weit weg und zuviel beton …

Aber ich habe dort ein CAT 5 Kabel, und könnte von dem auf jeden Fall mal 4 Adern verwenden dafür …

Sach, du weißt es nicht :wink:
Schau mal [b] HIER [/b]
Für PICx480, mit integriertem CAN, hätte ich was, aber für`n AVR nur mit extra CAN-Chip siehe Bild von [b] HIER [/b], .

AVR-NET IO?

Gibt hier bergeweise Beiträge drüber und auch eine Firmware, die nicht mehr gepollt werden muss

mfg
Bernd

Ja hab ich sogar hier rumliegen (Einen zusmmaengebauten und einen noch in seinen einzelteile)

Aber ich müßte dann ein zweites kabel einziehen, oder das kabel splitten, oder einen hub installieren … deshalb kam mir die idee von einem bus.

Wenns so kleine Bauteile gäbe, mit denen man einen HUB bauen könnte, also einfach einen kleinen 2 Port Hub/Switch, damit ich aus der Sternverkabelung eine Art Bus machen könnte … (Die SIP Telefone haben meist sowas)

Hi,

Noch ´ne Idee:

Da Du ja sowieso mit Bascom rumfriemeln willst.

Wie wäre es, wenn Du die einzelnen Module über die serieelle Schnittstelle untereinander verbindest;
nicht auf dem herkömmlichen Wege, Point to Point,

nee kaskadierst, quasi einen Ring aufbaust.

Musst dann selbstverständlich eine Unterroutine schreiben, bei der jedes Board erkennt, das war für mich, falls nicht: schick ich das weiter. Auf diesem Wege erhält dann sogar der Sender, falls implementiert, eine Quittung.

Grundidee: Token Ring, da lüppt das im Netzwerkbereich einwandfrei.

Bei Verwendung eines MAX232 sollte die Leitungslänge dann auch zu bewältigen sein.

mfg

Bernd

geht problemlos. Hab ich bei mir leider überall gemacht und bereue das jetzt, da Gigabit ja alle 8 haben möchte.

mfg

Bernd

Also habe mir CAN ngeschaut und etwas darüber nachgedacht

CAN wäre schon nicht schlecht, auch nicht teuer, werde aber trozdem RS485 verwenden, da die Implementierung doch viel einfacher ist

Und ich das ganze dann so aufbauen werde, das es einen Master AVR gibt, der alle an pollt, und ie Daten abruft (Dies kann ja sehr sehr schnell gemacht werden)
Und der MAster AVR gibt die Daten dann nur bei Änderungen an IPSymcon per RS232 weiter …

Hi,

bei mir hängen 11 I/O-Module auf einem RS485-Bus im Haus verteilt. Sind fast alle MEGA8. Am IPS hängt ein 232/485 Umsetzer. Früher hatte ich es über Polling realisiert. Das war mir aber zu langsam: Ich habe einen RFID-Zugangs-Sensor. Dieser sendet die Daten an einen Mega. Dieser leitet die Daten zum IPS weiter. IPS überprüft den Code und steuert dann eine andere IO an, welche die Tür öffnet. Bei Polling ging es nicht unter ca. einer Sekunde. Im letzten Winter habe ich den ganzen Bus umgestellt. Jetzt kann jede IO von selbst ohne Aufruf ihre Daten senden. Jetzt ist die Verzögerung zwischen RFID-Sensor hinhalten und Türöffner unmerklich!

Wie mache ich es: Nach Ende einer empfangenen Übertragung wartet jede IO eine zufällige Zeit, bis sie ein Datenpaket aussenden darf. Lauft ohne Probleme. Nur werde ich es jetzt gegen XBee tauschen, weil ich Probleme mit der Verkabelung in Zukunft erwarte.

Falls du BASCOM-Code brauchst, kann ich dir gerne was zukommen lassen.

Gruß
Rubberduck

oh, danke werde dann auf dich zukommen, wenn ich es mit BASCOM mache (bin noch am überlegen ob ich es nicht gleich mit C versuche … )

Bei mir würde auch eine zeit von einer sekunde eigetnlich keine rolle spielen, da ich es eher so machen werde, das jede AVR Steuerung für sich selbst ne intelligenz hat, und dann den status an ipsymcon schickt ,

Hab mal ne Frage, möchte meine Zentrale so auslegen, das ich eine RS232 habe und einen RS485, wobei die RS485 4 fach ausgeführt sind, diese jedoch „einfach“ parallel geschalten sind, die ich dann mit 3 Stränge aus der Zentrae weggehe …

Mir ist klar, das es sich wie ein Strang dann anzusprechen hat - nur einer über alle parallel geführten MAX485 darf reden.

Aber sonst solte es gehen oder?

Warum gehtst du mit mehreren Strängen von der Zentrale weg? Zu viele I/Os pro Strang?

Was ich auf alle Fälle machen würde:

die „DE - RE/“ Leitung mit einem Pull-Down versehen. Wenn dein ATMEGA sich verläuft oder bootet und der Output zum Input wird, ist der Bus dann blockiert (Bei einer Zentrale wahrscheinlich egal, aber bei einer Unterstation fatal. Hat mir mal einige Stunden Fehlersuche gekostet)

die RO Leitungen würde ich mit einem Pull-Up versehen. Weil sonst hast du am Eingang des AND beim Senden keinen Level und dein Receiver wird zugemüllt!

Gruß
Rubberduck

danke mal für den hinweis mit dem pullup wegen bootprocess …

Mehrere deshalb, weil die zentrale im Arbeitsraum im EG steht, dann möchte ich einmal einen Strang in den Keller, einen Strang nach aussen, und einen innen.
Und damit ich weniger probs mit den leitungen bekomme …
und da sowieso nur ein master bleibt, sollte das parallel schalten nicht soviele probs verursachen …

…mir ist noch was eingefallen (weil ich auch gerade so beim Schaltung ausdenken bin). Du hast ja noch jede Menge Ausgänge am ATMega frei. Eigentlich könntest du alle DE und RE/ Pins einzeln auf Ausgänge führen. Ist zwar softwaretechnisch komplizierter, hat aber einen entscheidenden Vorteil: Hast du auf einem Bus irgend ein Problem, laufen die anderen 3 weiter. Weil du schaltest ja dann immer nur den Empfänger frei, auf welchem die IO sitzt die du gerade pollst.

Gruß
Rubberduck

Stimmt, auf jeden fall ne gute idee.