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!
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
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.
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
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?
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.
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.
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?
@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?
@ Klaus Nein der ATMEGA läuft auf 3.3V und das Flash ebenso. SCK Pin scheint zu funktionieren, siehe oben.
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.
Gernot M. schrieb: > Habe schon 100 Ohm und 1k ausprobiert. > Was nehmt ihr denn? 10k bei uns auf Vcc des DataFlashs.
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
Na bitte. Wenn´s nochmal spinnt, einfach hier melden ;-)
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.
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??
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.