Forum: Mikrocontroller und Digitale Elektronik Fehler bei Programmübertragung in den AVR


von Felix H. (Gast)


Lesenswert?

Hi,

ich habe folgendes Problem:

Beim schreiben meiner .hex datei in meinen Atmega2561 bekommen ich einen 
Fehler an Adresse 1FF00. Die passiert aber nur, wenn meine Programmgröße 
über oder gleich 50% ist.

Als Programmierer benutze ich den Standard Parallelportadapter mit 
74HC244.

Das Programm übertrage ich direkt aus Bascom in den Controller. Bascom 
meldet nach dem schreiben und auslesen den Fehler "Difference at 1FF00".

Was kann das sein? Ich bin langsam am verzweifeln, da ich das neue 
Programm dringend einproggen muss.

MfG

von Knut (Gast)


Lesenswert?

Kauf dir n anständiges Programmiergerät, könnte wetten das Ding hat 
Probleme mit der Adressierung.

Knut

von Falk B. (falk)


Lesenswert?

@  Felix H. (Gast)

>Fehler an Adresse 1FF00. Die passiert aber nur, wenn meine Programmgröße
>über oder gleich 50% ist.

Hmm, das ist die Grenze über 128kB.

>Das Programm übertrage ich direkt aus Bascom in den Controller. Bascom
>meldet nach dem schreiben und auslesen den Fehler "Difference at 1FF00".

Entweder ist das kein Atmega2561 oder du hast einen anderen im BASCOM 
eingestellt.

MfG
Falk

von Felix H. (Gast)


Lesenswert?

@Knut: warum einen anderen Programmierer? Das ist doch der Standard 
ISP-Programmierer...

@Falk: also auf dem Chip steht Atmega2561 drauf. Habe auch in Bascom den 
richtigen eingestellt. Ansonsten würde Bascom sofort rummeckern. Ist 
aber nicht der fall...

sonst noch ne idee?

MfG

von Jobst M. (jobstens-de)


Lesenswert?

Felix H. schrieb:
> Fehler an Adresse 1FF00

Wenn das die Wortadresse ist, dann ist der Chip schlicht voll.

Wäre ja eine Möglichkeit ...



Gruß

Jobst

von holger (Gast)


Lesenswert?

>@Knut: warum einen anderen Programmierer? Das ist doch der Standard
>ISP-Programmierer...

Vor 10 Jahren war er das vieleicht mal;)

>@Falk: also auf dem Chip steht Atmega2561 drauf. Habe auch in Bascom den
>richtigen eingestellt. Ansonsten würde Bascom sofort rummeckern. Ist
>aber nicht der fall...
>
>sonst noch ne idee?

Vieleicht kann Bascom über 128k gar nicht mehr programmieren?
Nur so ne Vermutung.

von Felix H. (Gast)


Lesenswert?

@Jobst: warum denn voll? Ein Atmega1281 wäre an diesem Punkt voll... 
aber der 2561 hat doch den doppelten speicher.

@holger: bei mir hat der immer zuverlässig funktioniert. Also warum was 
neues Probieren wenn das bewährte funktioniert ^_^

mit welchem Programm könnte ich die übertragung denn noch machen? Bascom 
spuckt mir die .hex ja aus.

könnte es an der Kabellänge liegen? Der LPT Port ist direkt auf der 
Platine mit dem Atmega mit drauf. Verbindung zum PC erfolgt mit 3 Meter 
25-Poligem Sub-D Kabel.

MfG

von Falk B. (falk)


Lesenswert?

@holger (Gast)

>Vieleicht kann Bascom über 128k gar nicht mehr programmieren?
>Nur so ne Vermutung.

Dann sollte der IC nicht wählbar sein bzw. keine Include Files dafür 
existieren. Wühl

Also meine BASCOM-Demo hat ein m2560def.dat  und m2561def.dat. Sollte 
also gehen.

von Falk B. (falk)


Lesenswert?

@  Felix H. (Gast)

>@Jobst: warum denn voll? Ein Atmega1281 wäre an diesem Punkt voll...
>aber der 2561 hat doch den doppelten speicher.

Eine Wort-Adresse ist zwei Byte breit.

>mit welchem Programm könnte ich die übertragung denn noch machen? Bascom
>spuckt mir die .hex ja aus.

Wie groß ist dein HEX-File?

>könnte es an der Kabellänge liegen?

Nein. Die unteren Adressen macht er doch problemlos.

MFG
Falk

von Felix H. (Gast)


Lesenswert?

Hi,

dann sollte er mir beim compilieren aber nicht 50% Speicher belegt 
anzeigen. Ich habe schon Atmega32 voll programmiert. Da sagt er dann 
schon bescheid, wenn der Speicher zu klein ist.

Meine .hex ist laut windoof-explorer 358KB groß, die .bin hat genau 
128KB.

MfG

von Hannes L. (hannes)


Lesenswert?

Felix H. schrieb:
> Meine .hex ist laut windoof-explorer 358KB groß,

Die Dateigröße ist erstmal irrelevant, es kommt auf den Inhalt an. In 
die Hexdatei kann man mittels Textbetrachter oder Texteditor reinsehen, 
in jeder Zeile steht die Adresse, an die die Daten gebraten werden 
sollen. Diese ist aber erstmal nur 16 Bit breit, reicht also nur bis 64 
KB. Der Offset zu größeren Adressräumen wird durch spezielle Zeilen in 
der Hex eingestellt. Einfach mal die Hex danach untersuchen.

...

von Felix H. (Gast)


Angehängte Dateien:

Lesenswert?

Hi,

hier meine .hex mit einem Programm was sich übertragen lässt mit 49% 
sowie eine hex mit 50%, was dann den fehler ergibt.

Ich hoffe jemand kann helfen...

MfG

von Thomas E. (thomase)


Lesenswert?

Felix H. schrieb:
> Als Programmierer benutze ich den Standard Parallelportadapter mit
> 74HC244.

Alles was über die 64K an Binärcode hinausgeht muss mit einem
"Extended Segment Address Record" eingeleitet werden. Das ist dann der 
Offset für den nächsten 64K-Block.

Dieser ist in deinem "Geht-Nicht"-Hex-File auch vorhanden.
Habe das File mal mit dem JTAGICEmkII auf einen 2560 geflasht.

Kein Fehler. Verify Ok.

Entweder kann der Brenner keine Adressen > 64K verarbeiten oder das 
Programm, welches die Hex-Daten in Binärdaten übersetzt, kommt nicht 
damit klar. Tippe mal auf letzteres.

Am Bascom und dem erzeugten Hex-File liegt es jedenfalls nicht.

mfg.

von Felix H. (Gast)


Lesenswert?

interessant...

was sollte ich als nächstes versuchen? Den Programmer wechseln ist eher 
schwierig. Ist momentan kein anderer vorhanden und der jetzige ist wie 
gesagt, bereits auf der Platine integriert. Sollte ich erstmal ein 
anderes Programm zum übertragen verwenden? Ich hab mich schon ein wenig 
in PonyProg eingelesen. Sollte ichs damit mal testen? Dabei steht 
allerdings, dass das Programm den EEPROM mit überschreibt und damit 
löscht! Ich habe auf diesem allerdings Daten abgelegt. Geht das auch 
ohne EEPROM löschen?

Gruß
Felix

von Thomas E. (thomase)


Lesenswert?

Ich kenne deinen Programmer nicht.

Lässt der sich mit AVR-studio bedienen?

Mehr habe ich auch nicht gemacht, als mit AVR-Studio das Hex-File 
geflasht. Nur mit einem anderen Brennner. Über JTAG.

Aber mit AVRISP geht es genauso über SPI.

EEPROM wird nicht angerührt.

mfg.

von Guru (Gast)


Lesenswert?

Möglicherweise wäre es hilfreich wenn Du Deinen Programm mal genauer 
spezifizierst. Denn so ganz klar ist (mir jedenfalls) noch nicht, ob es 
nicht doch am Programmer liegt.
Falls es ein selbstgebauter ist, wäre die Schaltung gut und evtl. der 
Link von wo Du die Schaltung hast. Falls es ein gekaufter ist, wäre hier 
auch ein Link hilfreich.

von Guru (Gast)


Lesenswert?

Es muss natürlich heissen:

Möglicherweise wäre es hilfreich wenn Du Deinen Programmer mal genauer
spezifizierst.

von Felix H. (Gast)


Lesenswert?

Hi,

ich verwende diese Schaltung hier:

http://www.rn-wissen.de/index.php/AVR-ISP_Programmierkabel

vllt sollte ich mir mal langsam einen anderen anschaffen... 
vorausgesetzt es liegt daran. Über die Paralelle Buche dauert das schon 
4 minuten bis die 128K da reingedrückt sind... und dann das ganze 
nochmal auslesen =P

was haltet ihr von dem AVR ISP MK2? Vom Preis her recht annehmbar.

von Guru (Gast)


Lesenswert?

Hm. Nach der Beschreibung ist das Ding kompatibel zum STK200 bzw. 
STK300. Da die schon recht alt sind wäre es evtl. möglich, das die 
Software dazu die gröesseren Megas nicht unterstützt. Hardwaremäßig sehe 
ich kein Problem, da ja das normale MISO/MOSI-Interface verwendet wird.
Evtl. hilft ein Update, wobei mir nicht klar ist, wo man das jetzt noch 
her bekommt.
Allerdings hatte ich immer nur ein STK500 und das MKII; kann also nichts 
aus eigener Erfahrung dazu sagen. Vielleicht/hoffentlich kennt ja jemand 
anders hier den Programmer besser.

von Klaus W. (mfgkw)


Lesenswert?

ich habe ebenfalls einen stk200-kompatiblen selbstgestrickten mit
74xx244 (Parallelport) und ein AVRISPmkII (USB).
Unter Linux mit avrdude ist der am Parallelport bei mir fast doppelt so 
schnell.

von Thomas E. (thomase)


Lesenswert?

Felix H. schrieb:
> was haltet ihr von dem AVR ISP MK2? Vom Preis her recht annehmbar.

Auf jeden Fall erste Wahl.

mfg.

von Felix H. (Gast)


Lesenswert?

Hi,

hab mir das Teil nun bestellt, ich hoffe das es dann damit geht ^_^

von Felix H. (Gast)


Lesenswert?

soo, da bin ich wieder.

Teil bestellt, geliefert, angeschlossen.... GEHT NET!

habe die aus Bascom erzeugte .hex file im AVR Studio eingefügt und 
Programmiert. Jetzt bekomme ich IMMER den Fehler:

WARNING: FLASH byte address 0x003E is 0x00 (should be 0xDD).. FAILED!

Habe schon verschiedene Geschwindigkeiten ausprobiert... 125K, 20K, 
6K... immer das gleiche =( Jetzt bekomme ich auch kein "kleines" 
Programm mehr in den Controller, was ja vorher mit dem alten Progger 
noch ging...

HILFE!!!

von holger (Gast)


Lesenswert?

>Habe schon verschiedene Geschwindigkeiten ausprobiert... 125K, 20K,
>6K... immer das gleiche =( Jetzt bekomme ich auch kein "kleines"
>Programm mehr in den Controller, was ja vorher mit dem alten Progger
>noch ging...

Wie sieht deine Schaltung an den ISP Pins aus?

von Felix H. (Gast)


Lesenswert?

schock... der alte Programmierer hat eben auch einen Fehler bei 003E 
rausgeworfen... dachte schon der Chip wäre hin, aber beim zweiten Anlauf 
hat es dann doch geklappt. Habe das funktionierende Programm mit dem 
alten Progger wieder drin.

Beschaltung? Ich habe nur einen 10K Pullup an Reset. Mehr nicht. Den 
100K am MISO vom alten Programmierer habe ich abgeknippst. Sollte der 
dranbleiben? Dachte das wäre alles in dem USB-Wunderteil integriert...

Gruß

von Falk B. (falk)


Lesenswert?

Was für einen schrottigen Wackelkontaktaufbau hast du denn?
Nein, ich will es eigentlich gar nicht wissen.

von Felix H. (Gast)


Lesenswert?

wieso wackelkontaktaufbau? Ist alles auf Platine gelötet... von der 
Platine geh ich mit 25 Poligem Sub-D auf den Programmer. Hab mir heute 
ein extra Kabel dafür gemacht.

von Felix H. (Gast)


Lesenswert?

hi,

habe jetzt eine andere Platine mit Atmega128L dran. Beim flashen kommt 
folgendes:

Reading FLASH input file.. OK
Setting mode and device parameters.. OK!
Entering programming mode.. OK!
Programming FLASH ..      FAILED!
Leaving programming mode.. OK!

ich weiss langsam nichtmehr weiter... die kabellänge vom 6er 
Wannenstecker bis zum µC beträgt gute 15cm... Ist das etwas zu lang?

von Felix H. (Gast)


Lesenswert?

So, habe es jetzt nochmal am mega2561 versucht... Beim ersten Versuch 
hat das Programmieren sofort funktioniert. Auch die überprüfung ohne 
Fehler =) Danach gehts aber nichtmehr! Egal was ich mache... Versorgung 
weg, MK2 neu verbinden an PC sowie Atmel, AVR Studio neu starten... 
nichts geht.

Erst wenn ich das Programm wieder über den alten Parallel-Programmierer 
reingeladen habe, kann ich erneut EINMAL mit dem MK2 proggen. Dann 
wieder gleiches Phänomen. Hatte das schonmal jemand? Find ich absolut 
seltsam...

von MWS (Gast)


Lesenswert?

Würd' jetzt mal raten, daß die Grundbeschaltung des ATM2561 nicht passt, 
genauer der 100nF C fehlt.

Felix H. schrieb:
> Beschaltung? Ich habe nur einen 10K Pullup an Reset.

von Felix H. (Gast)


Lesenswert?

hi,

also die 100n sind schon dran ;)... ich habe das mit dem "nur" nen 
Pullup auf die Beschaltung der Programmierleitungen bezogen.

ich versteh das nicht... die Schaltung selbst ist ja schon etwa ein 
halbes Jahr alt und läuft tadellos. Bin nur jetzt über die 50% mit der 
Programmgröße gekommen und da zickt der alte Progger rum!

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
Noch kein Account? Hier anmelden.