Chip-Erase tut nichts

OP #5047987
Lesenswert?

Hi,

ich habe einen Atmega1284p auf eine Lochrasterplatine gepackt und 
programmiere den mit einem usbasp und avrdude. An sich kein Problem.

Vorhin habe ich eine Konstante geändert, neu geflasht und avrdude 
scheitert an der Verifikation, da wäre was falsch. Mein Programm lief 
aber. Also nur ein Chip-Erase gemacht - und das Programm lief trotzdem?!

Die Kommunikation mit dem Chip funktioniert, Signatur und Flash auslesen 
ist kein Problem. Chip-Erase dauert kurz, löscht aber den Flash nicht. 
Woran kann das liegen? Und warum so spontan?

Versorgung läuft über ein Steckernetzteil mit 7805 dahinter, 100nF an 
Vcc für jeden Chip, 16 MHz-Quarz.

Gruß,
svenska
OP #5048038
Lesenswert?

Ich habe im avrdude-Terminal weitergetestet:
"dump flash 0x100 0x100" liefert mir Daten;
"erase" dauert einen Momeent;
"dump flash 0x100 0x100" liefert exakt die gleichen Daten.

Irgendwie schlägt das Chip-Erase fehl, was natürlich dafür sorgt, dass 
ein neues Programm nicht geflasht werden kann.

Sapperlot W. schrieb:
> Dass die Verifikation scheitert ist wegen der Auslese Fuse
> ueblich.

Magst du das näher ausführen? Die Verifikation sollte ja nicht grundlos 
scheitern, sonst wäre sie sinnlos (dass sie evtl. nicht alle Fälle 
abfängt, ist ja hier belanglos).
#5048133
Lesenswert?

Sprichst Du wirklich die richtige Adresse an? und nicht irgendeine 
andre?
Dann bleibt die Konstante unberührt und irgendwo anders, evtl im nicht 
benutzten Teil des Programmspeichers ändert sich etwas.

Vor Allem an die verschiedenen Adressierungsarten in 
Programmspeicherzugriff denken:

Einerseits nach Schritten des Programmcounters (je 16 bit), andrerseits 
nach Schritten des Z-Indexcounters (je 8 bit).
OP #5048150
Lesenswert?

Peter R. schrieb:
> Sprichst Du wirklich die richtige Adresse an? und nicht irgendeine
> andre?

Äh? Ich erwarte, dass nach einem Chip-Erase (vor dem Flashen des neuen 
Programms) das Flash komplett auf 0xFF steht. Das ist nicht der Fall, 
aus welchem Grund auch immer.

Ich programmiere nicht in Assembler, und die Firmware selbst legt bisher 
auch nichts im Flash ab (also kein PROGMEM bzw. __flash).
OP #5052515
Lesenswert?

Hallo,

bin die letzten Tage leider nicht dazu gekommen, am Projekt 
weiterzuarbeiten.

Habe einen anderen Programmer ausprobiert, gleiches Phänomen.
Am AVR liegen stabil 5V an, zwischen Vcc und GND liegen 100 nF.

Hier eine manuelle Sitzung mit avrdude:
1
$ avrdude -p m1284p -c usbasp -t
2

3
avrdude: AVR device initialized and ready to accept instructions
4

5
Reading | ################################################## | 100% 0.01s
6

7
avrdude: Device signature = 0x1e9705 (probably m1284p)
8
avrdude> dump flash 0x200 0x40
9
>>> dump flash 0x200 0x40 
10
0200  8f 93 9f 93 ef 93 ff 93  80 91 56 01 90 e0 01 96  |..........V.....|
11
0210  20 91 c6 00 30 91 57 01  38 17 41 f0 80 93 56 01  | ...0.W.8.A...V.|
12
0220  e0 91 56 01 f0 e0 e8 5a  fe 4f 20 83 ff 91 ef 91  |..V....Z.O .....|
13
0230  9f 91 8f 91 3f 91 2f 91  0f 90 0b be 0f 90 0f be  |....?./... .....|
14

15
avrdude> erase
16
>>> erase 
17
avrdude: erasing chip
18
avrdude> dump flash 0x200 0x40
19
>>> dump flash 0x200 0x40 
20
0200  8f 93 9f 93 ef 93 ff 93  80 91 56 01 90 e0 01 96  |..........V.....|
21
0210  20 91 c6 00 30 91 57 01  38 17 41 f0 80 93 56 01  | ...0.W.8.A...V.|
22
0220  e0 91 56 01 f0 e0 e8 5a  fe 4f 20 83 ff 91 ef 91  |..V....Z.O .....|
23
0230  9f 91 8f 91 3f 91 2f 91  0f 90 0b be 0f 90 0f be  |....?./... .....|
24

25
avrdude> quit
26
>>> quit 
27

28
avrdude: safemode: Fuses OK (E:FC, H:D9, L:FF)
29

30
avrdude done.  Thank you.

Die Fuses sehen an sich auch gut aus. Kann das sein, dass der Chip dahin 
ist - nur wie passiert das?

Gruß
Persönliche Seite #5052863
Lesenswert?

Es liegt wahrscheinlich nicht an den Kondensatoren.

Probier mal den ISP-Takt runterzuschrauben und zusätzlich mit "-i 20" 
ein wenig Verzögerung reinzubringen. Ist aber nur Gestocher im Tümpel, 
grundsätzlich sieht das alles okay aus.

Hast Du irgendwie die Möglichkeit diesen Programmer mit einem anderen 
AVR zu testen? Irgendeinen DIP auf dem Breadboard? Echt garnichts mehr 
in der Krabbelkiste?
#5052965
Lesenswert?

Chris F. schrieb:
> Es liegt wahrscheinlich nicht an den Kondensatoren.

Ich würde dennoch zunächst diese Möglichkeit ausschließen.


> Probier mal den ISP-Takt runterzuschrauben und zusätzlich mit "-i 20"
> ein wenig Verzögerung reinzubringen.

Das wird sicherlich rein gar nichts bringen. Der Löschbefehl ist eine 
Folge aus 4 Bytes (0xAC 0x80 0x00 0x00). Maximal 9ms später sind die 
Daten normaler weise weg.


S. R. schrieb:
> Mit genau diesem usbasp hatte ich diesen AVR in dieser Schaltung
> mehrfach (bestimmt 20x) programmiert, bevor der Fehler auftrat.

Ich vermute hier aber dennoch irgendwie den Tod des Chips. Ich hatte 
schon ähnliche Fälle. Vielleicht ESD!?


Gruß
Jobst
OP #5053007
Lesenswert?

Jobst M. schrieb:
>> zwischen Vcc und GND liegen 100 nF.
> Nur dort? Einer?

Direkt am 7805 ist auch noch einer, aber daran liegt es sicher nicht. 
Hat ja vorher funktioniert...

Chris F. schrieb:
> Hast Du irgendwie die Möglichkeit diesen Programmer mit einem anderen
> AVR zu testen?

Für einen Test mit einem anderen AVR müsste ich jetzt erst was aufbauen, 
aber ich habe ja zwei verschiedene Programmer probiert. Die 
Kommunikation funktioniert mit beiden.

Jobst M. schrieb:
> Ich vermute hier aber dennoch irgendwie den Tod des Chips. Ich hatte
> schon ähnliche Fälle. Vielleicht ESD!?

Möglich. Naja, verbuche ich das als Lehrgeld und gut ist. Ein seltsames 
Verhalten ist es trotzdem.

In jedem Fall danke für die Hinweise.
OP #5053211
Lesenswert?

Jobst M. schrieb:
> Ist das wirklich Deine ernsthafte Herangehensweise? =-O

Was ist denn jetzt das Problem? Ich habe ein 5V-Rail, und da hängen 3x 
100nF Kondensatoren dran, an jedem Chip einer.

Korrektur: Am AVR hängen sogar zwei Kondensatoren, zwischen Vcc-GND und 
AVcc-GND. Damit sind auf der Platine insgesamt sogar fünf verlötet. ;-)

Dass ein m1284p drei Kondensatoren braucht, war mir schlicht nicht 
bekannt. Vorhanden sind jedenfalls mehr als bei den meisten, die hier 
anfragen. :-)
Persönliche Seite #5054772
Lesenswert?

Ich hatte bei einem 644V-au@8MHz 5 oder 6 0805er-Kerkos drumherum, der 
ist kompatibel und aus der gleichen Serie wie dieser 1284, allerdings 
hat der -p (DIP) nur 2xGND und 1xVCC. Bei 16MHz und einer unbekannten 
Schaltung schadet das nichts an jeden GND-Pin ca. 47nF so nah wie es 
geht an das Pad zu packen.

Fazit: 3 Stück 100nF tht-Kerkos direkt an das 40pin-DIP-Monster gelötet 
hier sind total okay. :-)



S. R. schrieb:
> Am 7805 sind zwei davon, am AVR einer,

Jobst M. schrieb:
> Ich würde dennoch zunächst diese Möglichkeit ausschließen.

Ja. Ich zweifele das zwar kategorisch an, dass das programmieren so 
empfindlich ist, aber der Aufbau sollte schon stimmen. Daher nehme ich 
alles zu den Kondensatoren zurück und behaupte das Gegenteil.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren