Forum: Mikrocontroller und Digitale Elektronik Atmega 1284p Read only?


von Sebastiano T. (sebastiano_t)


Lesenswert?

Hallo Leute.

Ich habe ein Problem mit mein Anet A6 3D Drucker Mainboard.

Ich wollte mir ein andres Firmware drauf spielen, da ich das Display 
gewechselt habe, und die Originale FW das nicht mit macht.
Skynet/marlin

Nun habe ich das Problem jedoch das ich den Atmega 1248p zwar auslesen 
kann, Aber nicht beschreiben.
Da kommt Diese Meldung.

avrdude.exe: verifying ...
avrdude.exe: verification error, first mismatch at byte 0x1f000
0xff != 0x0c

Nach langem hin und her habe ich gesehen das.
Wenn ich bei AVRDUDESS unter fuses & lock bits.
auf LB Read gehe, setzt er es von 0x0f auf 0x3f

Dann ist die Fehler Meldung weg, und es tut so als würde der den chip 
löschen/ neu beschreiben.

Jedoch ist nach dem Autorest immer noch die alte Firmware drauf.
Selbst die Laufzeiten und Filament verbrauch ist nicht resettet.
Heißt es tut nur so.

Nun ist das aber so das, laut den Hardware-specification für den A6 
boardloader, heist es.
anet.bootloader.unlock_bits=0x3F
anet.bootloader.lock_bits=0x0F

Setze ich dann den LB auf 0x0F dann hacken bei set lock und write.
avrdude.exe: verifying ...
avrdude.exe: verification error, first mismatch at byte 0x0000
0x3f != 0x0f

gehe ich auf LB auf read setzt er es auf 0x3f, wenn ich nun auf write 
gehe kommt.

avrdude -u -c usbasp -p m1284p -P COM3 -b 19200 -B 4.0 -F -U lock:r:-:h
SUCCESS: Read lock bits
avrdude -u -c usbasp -p m1284p -P COM3 -b 19200 -B 4.0 -F -U 
lock:w:0x3F:m

avrdude.exe: set SCK frequency to 187500 Hz
avrdude.exe: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 
0.01s

avrdude.exe: Device signature = 0x1e9705
avrdude.exe: reading input file "0x3F"
avrdude.exe: writing lock (1 bytes):

Writing | ################################################## | 100% 
0.01s

avrdude.exe: 1 bytes of lock written
avrdude.exe: verifying lock memory against 0x3F:
avrdude.exe: load data lock data from input file 0x3F:
avrdude.exe: input file 0x3F contains 1 bytes
avrdude.exe: reading on-chip lock data:

Reading | ################################################## | 100% 
0.01s

avrdude.exe: verifying ...
avrdude.exe: 1 bytes of lock verified

avrdude.exe done. Thank you.

Probiert habe ich verscheiedene programmern Usbasp  Arduino as isp  
AVRISP mkII
Alle das selbe.

von Christian S. (roehrenvorheizer)


Lesenswert?

siehe:

"2918059D–AVR–11/09ATmega1284P25. Memory Programming25.1    Program And 
Data Memory Lock BitsThe ATmega1284P provides six Lock bits which can be 
left unprogrammed (“1”) or can be pro-grammed (“0”) to obtain the 
additional features listed in Table 25-2. The Lock bits can only 
beerased to “1” with the Chip Erase command"


"Further programming of the Flash and EEPROM is disabled in Parallel and 
Serial Programming mode. The Fuse bits are locked in both Serial and 
Parallel Programming mode.(1)300Further programming and verification of 
the Flash and EEPROM is disabled in Parallel and Serial Programming 
mode. The Boot Lock bits and Fuse bits are locked in both Serial and 
Parallel Programming mode."

https://ww1.microchip.com/downloads/en/DeviceDoc/doc8059.pdf#page=1&zoom=auto,-205,792

mfG

von sid (Gast)


Lesenswert?

Ha...
wenn das T deines Namens ein I wäre,
hätt ich Dich jetzt gefragt ob Du aus'm Ruhrpott kommst ;)

(und dir bei nem Kaffee deinen Drucker neu beschrieben die Tage)

von Sebastiano T. (sebastiano_t)


Lesenswert?

Ok das heist auf deutsch?
Ich kapiere das nicht, mein englich ist auch nicht so gut, und google 
überestzt es komisch :(

Wie bringe ich dem in programmier modus.
Wie mache ich das.

25.1    Program And Data Memory Lock Bits
die 6 lock bits kann ich ja bei AVRDUDESS einstellen nur auf was? 0x0f 
mag der ja nicht.

Table 25-2.Lock Bit Protection Modes
Muss ich da erst jergend was endspären und wen ja wie / was.

von Totomitharry (Gast)


Lesenswert?

Es wird doch schon Tutorials geben in denen das vernünftig beschriben 
ist.

In avrdude könnte das -U lock:w:0xC0:m sein. Außerdem kann das mismatch 
auch an einer falschen Bootloadergröße liegen.

von Sebastiano T. (sebastiano_t)


Lesenswert?

Bootloader gibts 2 und bei den kleineren davon kommt selbe fehler 
meldung.
Außerdem habe ich mir bei dem hersteller ein update dafür runter 
geladen, auch nix.

Ja dachte ich mir auch, auch habe ich das hier versucht.
http://www.engbedded.com/fusecalc/

Nix zu machen
avrdude.exe: verifying ...
avrdude.exe: verification error, first mismatch at byte 0x00000
0xff != 0x5c

von Totomitharry (Gast)


Lesenswert?


von Sebastiano T. (sebastiano_t)


Lesenswert?

Meinst du nicht ich hätte alles schon ausprobiert?
Funzioniert nicht.

Wenn ich die lock_bits=0x0F, auf lock_bits=0x3F Ändere in 
Anet/avr/boards
Dann tut es so als würde er es macen, ganz ohne fehler. mehr aber auch 
nicht.

Amsonten mit den default lock bits....
avrdude.exe: verifying ...
avrdude.exe: verification error, first mismatch at byte 0x1f000
0xff != 0x0c

: Bearbeitet durch User
von c-hater (Gast)


Lesenswert?

Sebastiano T. schrieb:

> Alle das selbe.

Was ist die Taktquelle beim Flashen? Quarz?

Dann mal umfusen auf 8MHz aus dem internen RC-Oszillator. Geht das 
Flashen dann? Falls ja: Die Bürdekondensatoren passen nicht zum 
verwendeten Quarz...

Übrigens: Mit den Lockbits rumspielen ist ziemlich sinnlos, die lassen 
sich nur setzen. Zurücksetzen geht nur per Chip-Erase.

von Karl K. (karl2go)


Lesenswert?

Du musst ein Chip-Erase machen.

Es wäre reichlich sinnfrei, könnte man die Lockbits einfach so 
zurücksetzen, ohne den Chip zu löschen. Denn dann könnte man einfach die 
Lockbits zurücksetzen und das Programm auslesen. Genau das sollen die 
Lockbits verhindern.

von sid (Gast)


Lesenswert?

Du hast den Controller auch vom Drucker getrennt, gell?
und versuchst es über den ISP korrekt?
eingebaut über usb kann ich meinen Controller auch nicht flashen.

Vom Drucker getrennt geht usb (hörte aber das Anet v1.x boards gerne 
Probleme machen und quasi nur über isp zuverlässig zu beschreiben sind)

von Sebastiano T. (sebastiano_t)


Lesenswert?

Gennau mainboard liegt auf dem tisch nix dran angeschloßen, testweiße 
nur den alten display um zu schauen ob es wirklich geflascht wurde.

Mit und ohne strom am mainboard probiert.

Programmiert über Usbasp  Arduino es ISP  AVRISP MkII programmer.

Über usb ging nicht,der sagte not in sync.

Jetzt habe ich jedoch den vorschlag ausprobiert per console.
-U lock:w:0xC0:m

Nun kommt immer fehler auch wen ich das LB auf 0x3F einstelle.
Board wird aber weiterhin über ISP Erkannt.

c-hater schrieb:
> Was ist die Taktquelle beim Flashen? Quarz?
>
> Dann mal umfusen auf 8MHz aus dem internen RC-Oszillator. Geht das
> Flashen dann? Falls ja: Die Bürdekondensatoren passen nicht zum
> verwendeten Quarz...
>
> Übrigens: Mit den Lockbits rumspielen ist ziemlich sinnlos, die lassen
> sich nur setzen. Zurücksetzen geht nur per Chip-Erase.

Ups das hatte ich garnicht gesehen sorry.

Externes Quarz ka wie das funktioniert.
Ich habe den Jumper Beim Usbasp gesteckt für den Slow Sck Zehlt das 
auch?
Erasen läst sich der chip ja nicht, das ist ja das komische. es tut nur 
so...

: Bearbeitet durch User
von Philipp K. (philipp_k59)


Lesenswert?

Sebastiano T. schrieb:
> Meinst du nicht ich hätte alles schon ausprobiert?

Die Arduino IDE setzt auch die richtigen Lock Bits über USBASP/MK2, das 
aber nur bei "Bootloader brennen".

Die IDE macht das alles automatisch.

Oder in der Arduino IDE "Hochladen mit Programmer", im normalfall wird 
nur der Bootloader über usb angesprochen.

Ich hatte das Problem auch mal und das war definitiv ein Wackler und die 
falschen Fuses zum Bootloader (überlappende Bereiche).

: Bearbeitet durch User
von Karl K. (karl2go)


Lesenswert?

Sebastiano T. schrieb:
> Jetzt habe ich jedoch den vorschlag ausprobiert per console.
> -U lock:w:0xC0:m

Sagmal bist du so erkenntnisresistent?

DU KANNST DIE LOCKBITS NICHT SO ZURÜCKSETZEN! ES GEHT NICHT! DU MUSST 
DIE LOCKBITS MIT EINEM CHIP ERASE ZURÜCKSETZEN.

Grund steht oben.

avrdude -e

von Sebastiano T. (sebastiano_t)


Angehängte Dateien:

Lesenswert?

Karl K. schrieb:
> Sebastiano T. schrieb:
>> Jetzt habe ich jedoch den vorschlag ausprobiert per console.
>> -U lock:w:0xC0:m
>
> Sagmal bist du so erkenntnisresistent?
>
> DU KANNST DIE LOCKBITS NICHT SO ZURÜCKSETZEN! ES GEHT NICHT! DU MUSST
> DIE LOCKBITS MIT EINEM CHIP ERASE ZURÜCKSETZEN.
>
> Grund steht oben.
>
> avrdude -e

Sagte ich nicht das der kein erase macht?
---> Erasen läst sich der chip ja nicht, das ist ja das komische. es tut 
nur so... <----

AVRDUDDES sagt zwar:
avrdude.exe: Device signature = 0x1e9705
avrdude.exe: erasing chip
Danach autoreset, und nict mal ein dabflash alles beim alten.

>Die Arduino IDE setzt auch die richtigen Lock Bits über USBASP/MK2, das
>aber nur bei "Bootloader brennen".

Geht nicht oben schon erklärt.

>Oder in der Arduino IDE "Hochladen mit Programmer", im normalfall wird
>nur der Bootloader über usb angesprochen.

Geht auch nicht es tut so und dann bricht er bei etwa 50% ab.
Danach efolgt ein AUTOReset und alles ist beim alten.
Als hätte ich nix gemacht.

Im anhang die Arduino IDE

Erase habe ich über cosole so gemacht.

C:\Program Files (x86)\AVRDUDESS>avrdude -c usbasp -p m1284p -P usb -b 
19200 -B 8.0 -e

avrdude: set SCK frequency to 93750 Hz
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 
0.03s

avrdude: Device signature = 0x1e9705
avrdude: erasing chip
avrdude: set SCK frequency to 93750 Hz

avrdude: safemode: Fuses OK (H:FD, E:DA, L:D6)

avrdude done.  Thank you.

: Bearbeitet durch User
von Joachim B. (jar)


Lesenswert?

Sebastiano T. schrieb:
> Sagte ich nicht das der kein erase macht?
> ---> Erasen läst sich der chip ja nicht, das ist ja das komische. es tut
> nur so... <----

auch nicht mit einem HV Löscher?

AVR Fuses zurücksetzen
https://www.mikrocontroller.net/articles/AVR_HV-Programmer

von Sebastiano T. (sebastiano_t)


Lesenswert?

Ich glaube ich schmeiß das teil weg, neu kostet der 35€ und das geht mir 
langsam auf den s...

Mit HV ist immer eine sache für sich.
Hatte ich schon dran gedacht aber..
Kann mal schnell passieren das der ganz geschrottet wird.
Dann bastel ich weiter da für nix.

von Karl K. (karl2go)


Lesenswert?

Sebastiano T. schrieb:
> avrdude.exe: Device signature = 0x1e9705
> avrdude.exe: erasing chip

Wenn er die Signatur lesen kann, dann

- geht Reset
- geht Miso, Mosi und Sck
- stimmt die Frequenz
- läuft der Quarz

Insofern bringt hier ein HV Programming nichts, was nicht auch so gehen 
würde.

Dass der Eeprom bei einem Erase nicht gelöscht wird kann sein, wenn das 
EE Save Flag gesetzt wird. Macht man, damit man nicht bei jedem 
Programmieren im EEprom gespeicherte Werte neu eingeben muss.

Das Erase wird durch eine 4-Byte-Sequenz ausgelöst, dann läuft das ohne 
weitere Befehle durch.

Wenn das Erase offenbar gestartet, aber nicht erfolgreich ausgeführt 
wurde, könnte das daran liegen:

- Reset wird vom Programmer vorzeitig beendet.
- Vcc bricht ein und der AVR geht in den Brown-Out.

Das müsste dann aber schnell nach Start des Erase geschehen, sonst würde 
wenigstens ein Teil des Programms gelöscht werden.

Es gibt noch eine andere Möglichkeit: Der 1284 ist ein Fake, der sich 
nicht erneut programmieren läßt. Ich hab zwar noch nicht von AVR-Fakes 
gehört, aber bei den Mengen an ATmega328 und ATmega1284, die durch 
Arduino und 3D-Drucker verkauft werden würde es mich nicht wundern wenn 
die Chinesen den inzwischen nachbauen.

von Sebastiano T. (sebastiano_t)


Lesenswert?

Ich gehe in zwischen stark davon aus das das teil wirklich sich einfach 
nicht programmieren läst weil kein originaler ist, und damit jergend was 
nicht stimmt.

>- Reset wird vom Programmer vorzeitig beendet.
Hatte ich mir auch gedacht deshalb habe ich den Arduino As Isp über 
pin10 gemacht.

Da ich mit dem arduino bereits so ein problem hattte, das es über der 
ICSP (Reset nicht ging).
Und somit habe ich den Reset auf pin10 verlegt.

Hier tut sich aber dennoch nix

von c-hater (Gast)


Lesenswert?

Sebastiano T. schrieb:

> Externes Quarz ka wie das funktioniert.

Dann lies' einfach die Fusebytes aus und poste sie hier.

> Ich habe den Jumper Beim Usbasp gesteckt für den Slow Sck Zehlt das
> auch?

Das könnte damit zu tun haben. Je geringer der Takt des Programmers, 
desto höher die Wahrscheinlichkeit, dass trotz instabilem Takt des 
Target noch irgendwas geht.

> Erasen läst sich der chip ja nicht, das ist ja das komische. es tut nur
> so...

Wenn der Takt instabil ist, kann alles Mögliche passieren oder nicht 
passieren, das ist genau das Problem.

Deswegen fängt man bei unerklärlichen Fehlern sinnvollerweise erstmal 
damit an, solche möglichen Fehlerquellen zu überprüfen und ggf. 
auszuschließen.

Also: Systematische Fehlersuche statt ziellosen Rumprobieren ohne Sinn 
und Verstand.

Vor der Taktgeschichte würde man normalerweise übrigens erstmal noch die 
Versorgung prüfen. Aber einen Oszi besitzt du vermutlich nicht...

von Sebastiano T. (sebastiano_t)


Lesenswert?

Nein ein oszi habe ich leider nicht, dafür habe ich zu wenig damit zu 
tun.
Ich habe aber die pins vom J3 Stecker zum Chip, auf durschgang 
überprüft.
Und Versorgung hat der soweit auch.

Zusätzlich kommt noch hinzu, das der drucker im eeprom schreiben kann.

Heißt wenn ich eine einstellung anpasse.
Sagen wir mal z wert dann Strom stecker ab ziehe für paar tagen dann 
bleibt dieses wert gespeichert.

c-hater schrieb:
> Dann lies' einfach die Fusebytes aus und poste sie hier.

avrdude: safemode: Fuses OK (H:FD, E:DA, L:D6) LB:3F

von Georg G. (df2au)


Lesenswert?

Sebastiano T. schrieb:
> Zusätzlich kommt noch hinzu, das der drucker im eeprom schreiben kann

Das EEProm ist nicht der Flash Speicher des Programms, das sind 
unabhängige Bereiche.

von Sebastiano T. (sebastiano_t)


Lesenswert?

Ja das ist mir bewusst, wollte ich nur event haben, weil ich den eeprom 
auch nicht gelöscht bekomme.

P.s laut den Board definizion datei für den Anet A6 Bootloader sollen 
die Fuses so stehen.


anet.bootloader.low_fuses=0xD6
anet.bootloader.high_fuses=0xDA
anet.bootloader.extended_fuses=0xFD
anet.bootloader.unlock_bits=0x3F
anet.bootloader.lock_bits=0x0F

von Georg G. (df2au)


Lesenswert?

Sebastiano T. schrieb:
> anet.bootloader.high_fuses=0xDA

Damit ist die Programmierung über ISP (was du ja versuchst) 
ausgeschaltet.
Und den Bootlader hast du über H-Fuse auch totgelegt.

Die BOD Definition in der E-Fuse ist so vom Datenblatt nicht vorgesehen 
(undefiniert).

Vermutlich kommst du am einfachsten zum Ziel, wenn du den Prozessor per 
HVP jungfräulich machst und dann ISP verwendest.

: Bearbeitet durch User
von Sebastiano T. (sebastiano_t)


Lesenswert?

Georg G. schrieb:
> Und den Bootlader hast du über H-Fuse auch totgelegt.

Neine eben nicht es bootet ich habe grade noch den alten display 
angeschloßen und bin am teile drucken xD

Nur kriege ich da die andre firmware nicht drauf.
Deshalb kann ich den neuen display nicht benutzen, und damit viele 
optionen die den druck verbeser würden etc..

>Damit ist die Programmierung über ISP (was du ja versuchst)
>ausgeschaltet.

Ja dann scheint es von anfang an so zu sein.

Komisch ist auch das.
Ich habe an die 9 verkäufer gefragt ob die bords Flaschbar sind mit der
Marlin oder skynet firmware. Bords von version v1-5 bis v1.7

Alle gaben mir die selbe antwort.
Wir haben die anfrage weite geleitet blabla.

>Vermutlich kommst du am einfachsten zum Ziel, wenn du den Prozessor per
>HVP jungfräulich machst und dann ISP verwendest.
Wie stelle ich das am besten an?
Was brauche ich dafür.

Ich vermute mal das ich das extern machen muss.
heist chip auslöten, und hv programmmer kaufen oder bauen -.-

: Bearbeitet durch User
von Georg G. (df2au)


Lesenswert?

Sebastiano T. schrieb:
> Neine eben nicht es bootet

Du verwechselst "Bootlader" mit " Booten = Nutzerprogramm starten". Der 
Bootlader ermöglicht es dir, ein neues Programm zB über die serielle 
Schnittstelle aufzuspielen, ohne einen Programmieradapter.

HVP geht auch in der Schaltung - wenn der Entwickler beim Entwurf die 
Tür auf gemacht hat. Ansonsten entweicht uU magischer Rauch bei dem 
Versuch. Löte den Prozessor aus, baue eine Fassung ein und such dir 
jemanden in deiner Nähe, der ihn für dich programmiert. Eine gute 
Alternative wäre, einen neuen Prozessor zu nehmen. Dann ist dir der 
Rückweg immer offen.

In welcher Form hast du die neue Firmware? Viele Firmen geben die neue 
Firmware nur verschlüsselt heraus. Der eingebaute Bootlader macht dann 
die Entschlüsselung.

von c-hater (Gast)


Lesenswert?

Sebastiano T. schrieb:

> avrdude: safemode: Fuses OK (H:FD, E:DA, L:D6) LB:3F

Damit ist Programmieren und Debuggen komplett ausgeschaltet. Der einzige 
Weg da raus ist HV-Programming für ein hübsches Chip-Erase.

Oder einfach einen neuen Chip einbauen. Kostet lötmäßig den gleichen 
Aufwand, spart aber das HV-Programming. Und du kannst mit einer weiteren 
Lötaktion notfalls zum alten Chip zurückkehren.

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.