Hi! Habe ein kleines Problemchen: Anzahl X Atmegas hängen über einen RS485-Bus an einem PC. In Normalfall werden die einzelnen Atemgas vom PC aufgefordert, Daten zu senden. Es kommt also nicht zu Kollisionen. Wie könnte ich denn realisieren, alle Atmegas einzeln oder sogar alle zusammen per Bootloader upzudaten? Bei einem einzeln an den PC angeschlossenen Atmega klappt das per AVRootloader von Hagen super :) Danke und Gruss, Micha
Moin Bei mir wird das so umgesetzt: Zunachst sende ich vom PC den normalen Befehl „BOOTLOADER_START“ an einen bestimmten Teilnehmer (ATMege16). Dieser Teilnehmer führt einen Reset aus. Alle anderen Teilnehmer (ebenfalls ATMega16) gehen durch diesen Befehl für eine Dauer von 2 Minuten in den Ruhemodus (Gemeint ist hier: Es wird keinerlei Botschaft gesendet) Jetzt betätige ich eine Taste an meinem RS232-RS485 Umsetzer (Ist ein ATMega162). Damit weiß der Umsetzer, daß jetzt ein Datenstrom (eben die main.hex) gesendet wird, und nicht eine normale Botschaft (Ich habe hier den Taster gewählt an Stelle einer bestimmten Kennung, da ich nicht ausschließen kann, dass die Kennung irgendwo zufällig auch in der main.hex enthalten ist. Innerhalb von 10 Sekunden betätige ich den „Flash“ button auf meinem PC und die Daten werden gesendet. Der Bootloader des Teilnehmers (ist ja aktiv nach Reset) nimmt die Daten auf und beschreibt das Flash. Ist zwar noch nicht vollständig umgesetzt, aber das wird schon… Gruß Detlef
Hi! Danke für die Info! Stimmt, so könnte es gehen. Nur einen ansprechen, alle anderen für die Dauer x in die Pause schicken. Dann muss ich nur mal sehen, wie die Kommunikation zwischen PC und Bootloader aussieht und kann das Update als Teil meines Programms aufnehmen. Einmal gestartet geht er einfach Conbtroller für Controller durch. Ein gut codiertes "kommt-aus-der-Pause" würde dann sogar schneller gehen als eine feste eingestellte Zeit. Danke, Micha
Detlef Wilken schrieb: > Jetzt betätige ich eine Taste an meinem RS232-RS485 Umsetzer (Ist ein > ATMega162). Damit weiß der Umsetzer, daß jetzt ein Datenstrom (eben die > main.hex) gesendet wird, und nicht eine normale Botschaft (Ich habe hier > den Taster gewählt an Stelle einer bestimmten Kennung, da ich nicht > ausschließen kann, dass die Kennung irgendwo zufällig auch in der > main.hex enthalten ist. Nimm doch als Kennung etwas, was nicht nur ":",CR/LF,0-9 und A-F enthält :)
Hi! Genau das meinte ich mit einer gut codierten Kennung ;) Gruss, Micha
Ich habe mal einen CAN-Bootloader für Massen-Update geschrieben. Im Feld sind bis zu 400 Steuerungen, vernetzt über CAN. Der Update lief dann Gruppenweise mit 100 Stück. Man hätte auch alle gleichzeitig machen können. Als Codierung einer seriellen Schnittstelle verwende ich gerne das UU-Format. Damit kann man parallel zu den Daten auch Text-Botschaften verschicken, js sogar könnte man problemlos unterschiedliche Daten-Telegramme verschicken.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.