Atmel MEGA2561 programmieren

B

Bernd Laengerich

Guest
Hi,

ich stehe gerade vor einem Rätsel. Gestern habe ich einen MEGA2561 auf
eine Platine gelĂśtet. Heute wollte ich den mittels ISP programmieren.
Habe den FastBoot-Loader programmiert, das Ding startet (Anzeige mit
LED). Danach wollte ich das eigentliche Hauptprogramm, weil er schon am
Dongle hängt, auch programmieren: Nix läuft.

Nachdem das alles merkwĂźrdigerweise mit mehreren Versuchen nicht lief,
habe ich festgestellt, daß der irgendwie nur die Hälfte des Speichers zu
haben scheint: Der Bootloader, der ab 3FC00 liegt, erscheint auch unter
1FC000. Beim Speichern des Hauptprogrammes Ăźber 1FC00 hinaus wird der
dann zerschrieben. Schreibe ich den Bootloader ab 0FC00, dann taucht er
beim Lesen auch wieder unter 2FC00 auf.

Der Programmer ist ein MX-USBISP Programmer, der nur unter ProgISP 1.72
läuft. Leider nicht STK500-kompatibel. Damit habe ich aber noch nie so
große Atmels programmiert.

Frage dazu: Ist es möglich, daß eine fehlerhafte Außenbeschaltung (Pin
z.B. dauerhaft auf Masse) diesen Fehler intern hervorruft?

Ansonsten kommt mir nur noch defekter Proz oder Programmer in den Sinn.

Bernd
 
Bernd Laengerich wrote:

Nachdem das alles merkwürdigerweise mit mehreren Versuchen nicht lief,
habe ich festgestellt, daß der irgendwie nur die Hälfte des Speichers zu
haben scheint:

Wo hast du den Chip gekauft?

Grüße,
H.
 
Bernd Laengerich wrote:
ich stehe gerade vor einem Rätsel. Gestern habe ich einen MEGA2561 auf
eine Platine gelötet. Heute wollte ich den mittels ISP programmieren.
Habe den FastBoot-Loader programmiert, das Ding startet (Anzeige mit
LED). Danach wollte ich das eigentliche Hauptprogramm, weil er schon am
Dongle hängt, auch programmieren: Nix läuft.

Nachdem das alles merkwürdigerweise mit mehreren Versuchen nicht lief,
habe ich festgestellt, daß der irgendwie nur die Hälfte des Speichers
zu haben scheint: Der Bootloader, der ab 3FC00 liegt, erscheint auch
unter 1FC000. Beim Speichern des Hauptprogrammes über 1FC00 hinaus wird
der dann zerschrieben. Schreibe ich den Bootloader ab 0FC00, dann
taucht er beim Lesen auch wieder unter 2FC00 auf.

Der Programmer ist ein MX-USBISP Programmer, der nur unter ProgISP 1.72
läuft. Leider nicht STK500-kompatibel. Damit habe ich aber noch nie so
große Atmels programmiert.

Frage dazu: Ist es möglich, daß eine fehlerhafte Außenbeschaltung (Pin
z.B. dauerhaft auf Masse) diesen Fehler intern hervorruft?

Ansonsten kommt mir nur noch defekter Proz oder Programmer in den Sinn.

Das Flash der AVRs wird wortweise addressiert (weil die AVR-Befehle
16bit Breite haben), d.h. jenseits der 128KiByte Grenze (ab Wort-Adresse
0xFFFF) sind mit 16bit-Adressen Klimmzüge erforderlich um die zweite
Bank zu verwenden.
Deine Adressen oben sind Byte-Adressen, d.h. die Grenze zur zweiten Bank
liegt dann bei 0x1FFFF/0x20000. Das würde die Spiegelung von 0x3FC00 zu
0x1FC00 erklären (nur der halbe Speicher zugänglich).

Wenn dein Programmer das serielle ISP-Interface verwendet, dann muss
er via "Load Extended Address Byte" die Adressbits jenseits 0xFFFF
setzen, bevor er auf das Flash (oder dessen Page-Buffer) zugreift.
Das ursprüngliche ISP-Protokoll hatte nur 16bit Adressen, d.h. damit
ist der Flash-Speicher jenseits 128KiByte gar nicht zugänglich.
Ich würde vermuten, dass dein Programmer und/oder deine Programmier-
software nicht mit AVRs >128KiByte Flash umgehen kann.
 
Am 17.11.2018 um 12:16 schrieb Michael Bäuerle:

Wenn dein Programmer das serielle ISP-Interface verwendet, dann muss
er via "Load Extended Address Byte" die Adressbits jenseits 0xFFFF
setzen, bevor er auf das Flash (oder dessen Page-Buffer) zugreift.
Das ursprĂźngliche ISP-Protokoll hatte nur 16bit Adressen, d.h. damit
ist der Flash-Speicher jenseits 128KiByte gar nicht zugänglich.
Ich wĂźrde vermuten, dass dein Programmer und/oder deine Programmier-
software nicht mit AVRs >128KiByte Flash umgehen kann.

Danke, der Verdacht hat sich erhärtet. Das Ding blendete mich ob des
schÜnen Gehäuses. Den Bootloader habe ich jetzt draufgeflasht und dann
seriell die eigentliche Software > 128KB. Das hat funktioniert, auch
Verify klappt. Vermutlich komme ich jetzt nicht mehr in den Bootloader,
aber das ist mir erstmal egal.

Es ist wohl tatsächlich der ISP-Dongle oder die zugehÜrige Software.
Aufschrift intern MX-USBISP V5.00 2018-03-18. Man kann wohl USBASP drauf
flashen (zumindest fĂźr V4.00 wird das behauptet), was ich beizeiten mal
probieren werde.

Damit steht ein ISP-Programmer auf der Einkaufsliste.

Bernd
 
Am 17.11.2018 um 12:16 schrieb Michael Bäuerle:

Ich wĂźrde vermuten, dass dein Programmer und/oder deine Programmier-
software nicht mit AVRs >128KiByte Flash umgehen kann.

So, jetzt habe ich einen Arduino Uno als STK500v1 genutzt, um den
MX-USBISP mit USBasp von Thomas Fischl zu versorgen. Das funktioniert,
ich kann jetzt mittels avrdude sowohl den Arduino als auch den USBasp
ansprechen.

Die Version 2011-05-28 von USBasp sagt in den release notes:

usbasp.2011-05-28 (v1.4)
------------------------
- added TPI support for ATTiny4/5/6/10 (by Slawomir Fraś)
- added support for controllers with flash >128kb (by Slawomir Fraś)

Merkwßrdigerweise liefert der USBasp immer noch Mist, während der
Arduino korrekt arbeitet. Kann man also auch nicht empfehlen.

Naja, Reichelt wird wohl demnächst liefern...

Bernd
 

Welcome to EDABoard.com

Sponsor

Back
Top