Forum: Mikrocontroller und Digitale Elektronik Flash des ATMEGA 128 nach Program/Verify leer (keine Lockbits gesetzt)


von Gernot M. (gernot_m)


Lesenswert?

Hallo,

hoffentlich kann mir jemand bei meinem Problem helfen.
Und zwar programmiere ich einen ATMEGA128 mit einem Hexfile, das einen 
Bootloader und Application beinhaltet. Beides wird also gleichzeitig 
programmiert. Lockbits sind keine gesetzt, somit alles frei 
programmierbar. Alle Fuse und Lockbits sind richtig eingestellt, da 
diese Einstellungen in der Produktion in meiner Firma bei 50+ Stück auch 
so funktioniert hat. Bei 7 Stück allerdings nicht.

Nun ist das Problem, dass nach einem Programmieren und anschließendem 
Verify scheinbar alles programmiert ist. Liest man nun das Flash nochmal 
aus, ist es bis auf den Bootloader leer. Dies habe ich schon mit 3 
verschiedenen Programmiertools und Programmern probiert, mit dem selben 
Ergebnis. Programmiert man nur die Application ohne Bootloader 
funktioniert das Schreiben ins Flash, da beim Lesen alles so drinsteht 
wie es sein soll und die Applikation läuft.

Was kann das Problem sein?? Hatte irgend jemand schon mal so eine 
Situation. Der ATMEGA wurde auch schon getauscht, und dennoch das selbe 
Problem.

Danke schon mal für die Hilfe!

von Gernot M. (gernot_m)


Lesenswert?

Hallo Zusammen,

Habe die letzten Tage intensiv getestet und den Fehlerherd gefunden. 
Ganz kann ich mirs nicht erklären, aber zumindest gehts nun.

Also, als erstes habe ich ein kleines Demo Board gebastelt um die 
scheinbar defekten ATMEGA128 dort mal zu programmieren. Habe dabei nur 
die nötigen Pins angeschlossen und sonst nichts weiter. Siehe da, es 
ging auf einmal.

Daher war mein Schluss, irgendetwas in der Schaltung verursacht den 
Fehler und lässt mich den ATMEGA nicht 100% programmieren. Da es nur ein 
Bauteil gibt, das die Pins der Programmierschnittstelle teilt, habe ich 
mir das ATMEL Datenflash (AT45DB161) angesehen. Dieses hängt mit der SPI 
Schnittstelle an dem ATMEGA128 dran. Das Datenflash teilt den SCK Pin 
mit der ISP Schnittstelle.

Nach dem Entfernen des Datenflashs aus einer defekten Karte 
funktionierte das Programmieren auf einmal wunderbar. Daher ist das 
Datenflash das Problem. Der einzige Pin der wirklich zw. Datenflash und 
Programmierschnittstelle geteilt wird, ist der SCK Clock der SPI. Dies 
ist aber nur ein Eingang für das Datenflash. Habe dann das Datenflash 
wieder an den ATMEGA angeschlossen, außer den SCK Pin. Siehe da, der 
ATMEGA ging noch immer toll zu programmieren. Dann hab ich den SCK Pin 
kontaktiert und es ging nicht mehr.

Mittles Logic Analyzer hab ich mir mal die Pins der 
Programmierschnittstelle angesehen und vor allem den SCK Pin. Der Clock 
kommt allerdings wunderbar, egal ob der SCK Pin am Datenflash hängt oder 
nicht.

Nachdem ich das Datenflash als Fehlerherd identifiziert hatte, habe ich 
nun ein neues Datenflash eingebaut und alle Pins kontaktiert. Siehe da 
nun gehts auf mit Datenflash. Daher dürfte bei den defekten Boards das 
Datenflash kaputt sein. Warum der SCK Pin dennoch schön hin und her 
toggelt versteh ich aber nicht. Also den eigentlichen Fehler hab ich 
nicht gefunden.

Vielleicht fällt euch ja ein, was den Fehler wirklich verursacht hat. 
Ansonsten ist es vielleicht eine interessante Geschichte, von der man 
was lernen kann.

lg
Gernot

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Das Dataflash muss an seinem /CS-Eingang einen Pullup-Widerstand nach 
Vcc haben. Nur dann hält es während des Programmierens des Controllers 
am selben SPI die Klappe und wird auch nicht durch die Programmierpulse 
beeinflusst.

von Gernot M. (gernot_m)


Lesenswert?

Hallo Knut,

danke für den Tipp.
Aber das ATMEL Datenflash benutzt MISO und MOSI (PB3, PB2) des 
ATMEGA128, während beim Programmieren die MISO, MOSI Leitungen auf PE0, 
PE1 gemappt werden. Daher sind diese Leitungen ja gar nicht verbunden 
und somit kann der Mist vom Datenflash nichts ausmachen!? Oder vergess 
ich da was wichtiges?

Habe es dennoch probiert mit dem Pull-Up, da der fehlte. Aber auch das 
brachte nichts. Mein Kollege meinte, vlt. ist die Kapazität am Eingang 
des SCK pins des Datenflash zu hoch. Also Pull-Up am SCK Pin. Aber das 
brachte ebensowenig.

lg
Gernot

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Gernot M. schrieb:
> Aber das ATMEL Datenflash benutzt MISO und MOSI (PB3, PB2) des
> ATMEGA128, während beim Programmieren die MISO, MOSI Leitungen auf PE0,
> PE1 gemappt werden. Daher sind diese Leitungen ja gar nicht verbunden
> und somit kann der Mist vom Datenflash nichts ausmachen!? Oder vergess
> ich da was wichtiges?

Das ist erstmal richtig. Dennoch kann das Dataflash durch den im RESET 
befindlichen Controller und die somit floatenden Interface-Leitungen 
irritiert werden und somit kaputtprogrammiert werden (Lock-Status).

Gernot M. schrieb:
> Mein Kollege meinte, vlt. ist die Kapazität am Eingang
> des SCK pins des Datenflash zu hoch.

Nein. Ich kann mit Bestimmtheit sagen dass dies nicht der Fall ist, da 
wir hunderte Platinen mit genau derselben Konfiguration + 
Netzwerk-Controller am SPI des Mega128 haben und das Programmieren immer 
problemlos funktionierte.

Gernot M. schrieb:
> Also Pull-Up am SCK Pin. Aber das
> brachte ebensowenig.

Da gehört keiner hin. Du hast bestimmt ein anderes Problem. Wie hoch ist 
denn die ISP-Frequenz und welchen Programmer benutzt Du?

von Gernot M. (gernot_m)


Lesenswert?

Habe schon 3 verschiedene Programmer benutzt.
In unserer Produktion wird der Kanda AVR USB benutzt mit Standard 
Frequenz 250kHz. Ich habe dann noch den AVR ISP mkII und das AVR Dragon 
benutzt, welche genau dasselbe Problem lieferte. Frequenzen habe ich 
schon einige ausprobiert. Nichts höher als 1MHz, da die Taktfrequenz des 
ATMEGA nur ca. 7Mhz ist.

Ich werd mal mit dem Logic Analyzer oder Scope schauen ob das Flash 
nicht doch Mist sendet ohne Pull-up und dann probier ichs nochmal mit 
dem Pull-Up am /CS Eingang.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Gernot M. schrieb:
> In unserer Produktion wird der Kanda AVR USB benutzt mit Standard
> Frequenz 250kHz.

Der Mega läuft bis zum ersten Umstellen der Fuses nur mit 1Mhz, 250kHz 
ISP Frequenz sind somit grenzwertig.

Gernot M. schrieb:
> schauen ob das Flash
> nicht doch Mist sendet ohne Pull-up

Davon kannst Du ausgehen. Der PullUp ist absolut notwendig.

von Klaus F. (kfalser)


Lesenswert?

Was sind die Versorgungsspannungen?
Das Dataflash scheint 2.5/2.7V zu benötigen, der Atmel aber 5V, oder?
Welche Spannung liefert der Programmierer? Kann dabei der SCK Eingang 
vom Flash kaputtwerden?

von Gernot M. (gernot_m)


Lesenswert?

@Knut: Ja das Datenflash schickt ordentlichen Mist. Habe testweise den 
CS Pin getrennt, dafür aber SCK Pin angeschlossen. Siehe da es geht. 
Mittels Scope sieht man auch das der CS Pin vom ATMEGA128 enabled wird 
und dadurch der Mist vom Datenflash entsteht. Nun ist die Frage, warum 
der Pull-Up auf den /CS Pin des Datenflash nichts hilft. Bekomme nach 
wie vor die Flanke auf dem Pin. Habe schon 100 Ohm und 1k ausprobiert. 
Was nehmt ihr denn?

von Gernot M. (gernot_m)


Lesenswert?

@ Klaus

Nein der ATMEGA läuft auf 3.3V und das Flash ebenso. SCK Pin scheint zu 
funktionieren, siehe oben.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Klaus Falser schrieb:
> Das Dataflash scheint 2.5/2.7V zu benötigen, der Atmel aber 5V, oder?
> Welche Spannung liefert der Programmierer? Kann dabei der SCK Eingang
> vom Flash kaputtwerden?

Das DataFlash läuft von 2.7...3.6V. Alle Eingänge sind 5V-tolerant. Also 
keine Sorge.

Gernot M. schrieb:
> Nun ist die Frage, warum
> der Pull-Up auf den /CS Pin des Datenflash nichts hilft. Bekomme nach
> wie vor die Flanke auf dem Pin.

Welcher Pin des Mega128 wird für /CS verwendet? Normalerweise gehen alle 
Pins des Mega128 auf tristate, wenn er Low auf /RESET sieht.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Gernot M. schrieb:
> Habe schon 100 Ohm und 1k ausprobiert.
> Was nehmt ihr denn?

10k bei uns auf Vcc des DataFlashs.

von Gernot M. (gernot_m)


Lesenswert?

DANKE Knut!!!
Endlich des Rätsels Lösung gefunden!
Der 10K Widerstand als Pull-Up funktioniert.
Eine Woche Testen und Debuggen um das herauszufinden.
Danke nochmal recht herzlich für die nette Hilfe!!

Schönen Tag noch!
lg
Gernot

PS: Der CS Pin am Datenflash hängt am SS Pin der SPI Schnittstelle

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Na bitte. Wenn´s nochmal spinnt, einfach hier melden ;-)

von Gernot M. (gernot_m)


Lesenswert?

Oje,

habs nochmal geprüft.
Hatte den ATMEGA SS Pin noch nicht wieder verbunden.
Wenn ich die CS Leitung fix auf 3V3 lege gehts.
Aber 10k Pull-UP gehen auch nicht.

Irgendwie komisch. Es hängt nur das Datenflash und der ATMEGA128 am CS 
Pin.
Irgendwelche Ideen?

Ich probier nun nochmal 100 Ohm, 1k und 4k7 aus.
Mach mir aber keine Hoffnungen.

von Gernot M. (gernot_m)


Lesenswert?

Erst ein Pull-Up von 33 Ohm funktionierte.
Allerdings ist der Strom dann schon bei 100mA.
Das könnte den ATMEGA schon schaden?!

Warum funktionieren keine höheren Pull-Ups??

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Die Frage ist doch: wieso gibt der ATMEGA während des RESET überhaupt 
einen Pegel aus? Es liegt dann wohl nicht am DataFlash. Kurzschluss auf 
der Platine?!

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.