AVR ATmega ICSP Algorithmus

Dec 26, 2012 6 Replies

Hallo Gruppe,



ich werde schier verrückt beim Implementieren des ICSP-Algorithmus für einen ATmega8. Keine Ahnung was ich falsch mache, aber ich frickel seid Stunden ergebnislos herum. Hier der Stand:



Ich will das Ding neu flashen. Dafür sende ich zuerst das Programming Enable:



SPI TX 4: ac 53 00 00



Das 0x53 echot zurück (also OK laut Datenblatt). Dann lese ich die Signatur aus:



SPI TX 4: 30 00 00 00 SPI TX 4: 30 00 01 00 SPI TX 4: 30 00 02 00



Funktioniert perfekt, 0x1e9307 kommt zurück (byteweise natürlich).



Dann programmiere ich die Shadow-Page (hier einfach nur ein Testpattern



00..3f):

SPI TX 4: 40 00 00 00 SPI TX 4: 48 00 00 01 SPI TX 4: 40 00 01 02 SPI TX 4: 48 00 01 03 [...] SPI TX 4: 48 00 1e 3d SPI TX 4: 40 00 1f 3e SPI TX 4: 48 00 1f 3f



und sende dann das Programmier-Kommando (hier Page 0):



SPI TX 4: 4c 00 00 00



Und warte 5ms. Passieren tut folgendes: Die Page 0 wird offenbar programmiert (0x4c geht also), aber mit Müll. Also scheinbar steht in der Shadow-Page Müll. Also konkret:


00000000000000000000000000000c0000000002100100000000080008000400
0000200020002001000108012001280120013001300104011020183a08251420

Auslesen kann ich den ganzen Chip einwandfrei (mit anderem Programmer Testpattern reingeschrieben und dann in meinem Zielsystem ausgelesen -- alles einwandfrei). Habe den SPI-Clock auf 125 kHz runtergedreht, ohne Veränderung der Situation. Spannung sind 5V (Labornetzteil), Blockkondensatoren 100nF überall dran. Ich hab keine Ahnung woran das noch liegen könnte.



Hat jemand eine Idee?



Viele Grüße, Johannes


>> Wo hattest Du das Beben nochmal GENAU vorhergesagt? > Zumindest nicht öffentlich! Ah, der neueste und bis heute genialste Streich unsere großen Kosmologen: Die Geheim-Vorhersage. - Karl Kaos über Rüdiger Thomas in dsa

Hast Du das Flash vorher gelöscht? Beim Programmieren kann man nur Bits von

1 auf 0 schreiben, nicht zurück.

cu Michael

Oh Mann, tatsächlich. Das war es. Die vielen Nullen hätten mir komisch vorkommen müssen, aber ich hab das gar nicht mehr gesehen.

Ich habe das nicht gemacht, weil ich davon ausgegangen bin, dass das beim Initiieren des Page Write via ICSP das automatisch gemacht wird. Beim Self-Programming gibts da nämlich zwei unterschiedliche Befehle ("Page Erase" und "Page Write"), aber "Page Erase" fehlt beim ICSP. Und in der Step-by-Step Anleitung auf Seite 238 taucht der auch nicht auf, hrmpf. Das heißt ich kann per ICSP garnicht pageweise löschen?

Da sind halt u.A. Config-Daten drinnen, die ich gern behalten möchte, darum wollte ich den Chip Erase vermeiden :-/

Tausend Dank für deine Hilfe!

Viele Grüße, Johannes

>> Wo hattest Du das Beben nochmal GENAU vorhergesagt? > Zumindest nicht öffentlich! Ah, der neueste und bis heute genialste Streich unsere großen Kosmologen: Die Geheim-Vorhersage. - Karl Kaos über Rüdiger Thomas in dsa

Passen die denn nicht ins EEPROM? Das kann man byteweise schreiben und funktioniert bestens für Config-Daten.

Edzard Egberts (ed snipped-for-privacy@tantec.de):

Wäre auch mein Vorschlag. Außerdem kann man die vor dem Flashen noch sichern und wiederherstellen.

73 de Tom
DL7BJ * DL-QRP-AG #1186 * DARC OV I19 * FISTS #15933 * ARRL http://www.dl7bj.de https://twitter.com/dl7bj

Naja, das habe ich vereinfacht ausgedrückt: Es handelt sich um Config- und Logdaten. Das EEPROM wird natürlich benutzt, aber wenn das voll ist, gibts einen Fallback auf den FLASH. Und den kann ich weglassen, aber dann verkürzt sich die maximale Logdauer natürlich. Momentan benutze ich etwa 4k Flash fürs Programm und 4k sind für Logdaten da plus 512 Byte EEPROM. Würde also die Kapazität fast zehnteln, wenn ich nur EEPROM nähme.

Sichern und wiederherstellen geht natürlich, aber das geht beim FLASH auch. Ich hatte nur gehofft, dass ich darum rumkomme, weil das Programmierende Device ist auch ein AVR (und da passen halt 4k nicht ins RAM rein, wird also nervig).

Frage mich schon, warum sie "Page Erase" nicht per ICSP verfügbar machen. Seltsam.

Viele Grüße, Johannes

>> Wo hattest Du das Beben nochmal GENAU vorhergesagt? > Zumindest nicht öffentlich! Ah, der neueste und bis heute genialste Streich unsere großen Kosmologen: Die Geheim-Vorhersage. - Karl Kaos über Rüdiger Thomas in dsa

z.B. Atmel AT24C512C-SSHD-B mit 64kByte (65535x8bit) kostet 75 Cent und zwei Pins.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required