Einen AVR von einer anderen MCU über SPI neu programmieren?

7

Viele AVRs können ISPs sein - oder in Systemen, die über SPI programmiert sind. Ich habe ein Projekt, in dem das gesamte Gerät Firmware-Updates erhalten kann, und ich möchte auch die Firmware auf der Vorderseite des Hauptmikros aktualisieren. Da das Frontpanel bequem über SPI angeschlossen werden kann, hatte ich die Idee, es einfach von meiner Haupt-MCU über SPI neu zu programmieren.

Das ist die ISP-Methode, die recht einfach wäre und für die ich keinen Bootloader schreiben müsste. Wenn ich den ISP nicht kann, brauche ich natürlich einen Bootloader.

Also im Grunde - kann eine andere MCU den ATMEGA644 über den SPI-Bus neu programmieren?

Tristan Seifert
quelle

Antworten:

7

Ja, sehr leicht. In diesem Szenario fungiert RESET als Aktiv-Niedrig-Slave-Auswahl. Der Programmieralgorithmus ist in jedem AVR-Datenblatt sehr gut dokumentiert (siehe Speicherprogrammierung, Serielles Herunterladen).

Beachten Sie jedoch, dass einige AVR-Chips ihre ICSP-SPIs auf anderen Pins als ihre regulären SPIs haben (z. B. teilt atmega128 den ICSP-SPI mit einem seiner USARTs).

Avakar
quelle
Vielen Dank für die Antwort. Sobald ich mich von meinem faulen Hintern gelöst und eine Leiterplatte entworfen habe, werde ich dies ausprobieren und versuchen, einen Code zu schreiben, um genau dies zu tun. Gibt es noch andere kleine Fallstricke, um die Sie sich kümmern müssen, z. B. wenn Sie 12 V zum Programmieren benötigen, wie Sie es bei einigen anderen MCUs tun?
Tristan Seifert
@TristanSeifert, keine Fallstricke, es ist ziemlich einfach. Werfen Sie einen Blick auf technika.junior.cz/trac/browser/shupito/shupito/fw_common/…, wenn Sie Inspiration wünschen. :) Viel Glück!
Avakar