ISP Programmierung/Kommunikation in Reihe, geht das?

Hey Leute,

Ich brauche mal hilfe,

Ist es möglich mehrere Adruino's über einen MISO/MOSI Strang (Parallel) Kommunizieren zulassen und zu Programmiren?

Ich würde eine Automatische Adressierung machen über einen "Laufenden" Pin welcher den Nächsten SS-Pin ansteuert.

So würde der Master nacheinander mit jedem Slave Kommunizieren können, während die anderen ihren Aufgaben nachgehen.

Während bei der Programmierung ich alle Slave-Adruino's über den Master (Welcher in dem Fall als ISP fungiert) gleichzeitig Programmieren möchte.(Spart Zeit)

Hoffe das ihr mir Helfen könnt,
Speed Fariydragon

Im englischen Teil des Forum müssen die Beiträge und Diskussionen in englischer Sprache verfasst werden. Deswegen wurde diese Diskussion in den deutschen Teil des Forums verschoben.

mfg ein Moderator.

Also, ob das mit dem Gemeinsamen Programmieren so wirklich klappt, bin ich mit^r nicht so sicher, insbesondere, wenn nach der Programmierung diese èberprüft wird, kann es passieren, dass vlt, nicht alle gleichzeitig oder auch die gleiche Antwort geben, dass gibt dann einen crash, oder zumindest ein durcheinander auf dem SPI bus (Datensalat wenn einer oder mehrere der Arduinos in einem bit mit 0 und andere im selben Bit mit 1 antwortet, weil vlt der eine oder andere fehlprogrammiert wurde ) . ich schätze, das geht in die Hose. Du weisst dann nämlich nicht, welcher der Arduinos den Fehler auslöst. Und die IDE kann Dir nur sagen, dass es nen Lesefehler an Adresse xxxx gab.

Danke für die schnelle Info,

sowas habe ich befürchtet (hatte aber was anderes gehofft), mir fällt noch ein den ISP an den Jewalligen Adruino weiterzuleiten, möglich?

Nein!
Tolle Idee, vergessen die Idee, nächste Idee.

Übrigens, das mit dem AVR als SPI Slave ist ...
(etwas problematisch)

Vielleicht könnte man ja den ISP Code Umschreiben das er viele Adruinos Programmieren kann?

Meinst Du jetzt beim Programieren den ISP an den eweiligen Arduino Weiterzuleiten? Also so dass alle angeschlossen sind aber über ein CS Anschluss selektiert werden? Wenn ja, dann kann ich Dir diese Frage nicht beantworten, ich habe bisher noch nie versuchtn nen Controler für die Programierung über CS zu selktieren, oder daran zu hindern, auf die Programmierung zu reagieren. So ich weiss, wird der Programiermodus durch den Reset Aktiviert. Wenn ich da richtig liege, dann müsstest du den Reset zum selktieren nutzen. ich kann dir aber nicht garantieren, dass dann die anderen Arduinos, also die, die sich nicht im Programmiermodus befinden, Dir nicht die ISP Signale vom Programmer beeinflussen und so zu Schreib/Lese Fehlern führen, oder gar zu Kürzschlüssen führen und den Programmer oder sich gegenseitig killen. Und falls Du sowas ausprobieren möchtest, dann nur auf nem Experimentier-board mit schutzwiderständen in den SPI-Seitungen EDES einzelnen Arduinos/Controllers, der am Experiment beteiligt ist.Nicht dass Du nen Arduino-Friedhof anlegen musst.

ich lege die Adruinos in Reihe und lass sie Durchzählen:
[Master]=>[Slave 1]=>[Slave 2] ... [Slave n]
ich will das so machen das man ein Slave ganz einfach austaschen kann.
Das mache ich mithhilfe von Plug and Play über Lankabel/Adaper, dadurch habe ich 8 Pins frei für Komunikation und Stromversorgung.

Die Komunikation soll dann so verlaufen:

  • Master Wählt Slave 1
  • Master und Slave 1 Komuniezieren.
  • Master Beendet die Komunikation mit Slave 1. Wodurch Slave 1 Slave 2 Wählt.
  • Master und Slave 2 Komunizieren. Während Slave 1 wartet darauf das Master die Komunikation mit Slave 2 Beendet.
  • Master Beendet die Komunikation mit Slave 2. Slave 1 beendet das Auswählen von Slave 2 und geht seiner Aufgabe nach. Slave 2 Wählt Slave 3.
    Und so weiter bis Slave n mit Master die Kommunikation Beendet und er das dann wiederholt wird.

vielleicht könnte man auch so die Programmierung machen?

Woher weiß Master das Slave1 den Slave2 ausgewählt hat, oder woher weiß Master das Slave2 den Slave3 ausgewählt hat?

Bei Plug&Play: Was passiert wenn es nur Slave1 und Slave3 gibt?

Wenn, dann über Chipselect vom Master. Für zu wenig Pins gibt es Portexpander. Damit könntest dein Slaves wählen.

ist das Konzept nicht schon ein wenig eigenartig?
Warum sind da mehrere "Arduinos" nebeneinander? Warum ist das nicht einer?
Wenns im ganzen Haus verteilt ist, warum nimmt man nicht Controller die man OTA neu programmieren kann?

Wie willst du den in Hardware gegossenen endlichen ISP Automaten auf dem AVR verändern?
Bist du Entwickler bei Microchip?
(vermutlich nicht, denn sonst)

die sind ja nicht für das Haus sondern ich will mit so ne Art Tanzenden Schal bauen, und da will ich in jedem Segment einen Adruino als Segement-Controller verweden um die Servos anzusteuern und Später auch "Fühler" Einbauen damit mir der Schal nicht alles Wegreist.

Nein ich bin Hobby Endwickler und Großer Fan von Wearbles(Kleidung + Technik).

War halt nur ein Gedanke mit dem Umschreiben, wenn ich alles auf einen Chip Abstimme sollte es doch gehen, oder nicht?

Wie gesagt, soviel ich weiss muss der Controller zum Programieren in den Programiermodus Flash Mode gesetzt werden, und sowit mir bekannt ist wird das durch ein Reset am Controler eingeleitet. Du müstest also den Reset Eingang jedes zu Programierenden Controllers im richtigen moment ansteuern (oder händisch anklemmen) . und wie gesagt, ich kann dier nicht garantieren, dass diejenigen Controller, die grad nicht programiert werden sollen, dir da nicht in die Suppe spucken und die Signalpegel beeinflussen. Ich will dir auch nicht empfehlen, es einfach auszuprobieren, da ich keine Verantwortung für das überleben deis Masters / Programmers und Deiner Slaves übernehmen kann und will.

imho
SPI ist kein BUS um getrennte Einheiten miteinander zu verbinden.
Nimm CAN oder RS485
Mach dir einen Master,
mach die "dumme" Slaves die sich über den Master ansteuern lassen.
Dann brauchst du nur mehr den Master updaten.

Nochmal: Du kannst den Automaten auf dem Chip nicht ändern.

Angenommen, du verwendest Pro Minis....
Angenommen, du könntest dich von SPI lösen....

Dann könntest du einen Ring bauen, vergleichbar mit einem "Token passing" System.
Damit und einem Bootloader, welcher von dir darauf abgestimmt ist, kann das was werden

An so einem Token passing dachte ich ja.

da fällt mir ein vor einigen Jahren hatte ich ein Projekt mit dem Ich ein Adruino Uno Über die Serielle Komunikation Programmiere, also einen Code der Programmierbar ist.

das währe denke ich auch ne Möglichkeit.

Dann würde ich für die Komunikation SDA/SDL Nehmen wodurch die Multikommunikation gegeben ist und trozdem relativ viel Freiheit in sachen Wie verarbeite ich die Eingaben.

Danke an euch, ihr habt mir geholfen ne Lösung zu finden die Funktioniert.

Schade, dass die geheim bleiben muss.
Naja.. so weiß ich im Grunde auch Bescheid....

Ich lerne gerade viel über Adruino Bibliotheken und könnte auf Git-Hub mal denn Code mit den ich den Adruino programmierbar machen als Bibliotheke veröffentlichen.