Hallo, erst mal: Ja ich habe Google bemüht, die Forensuche und auch ChatGPT, doch keine passende Lösung gefunden. Ich hatte mal vor Jahren begonnen, Mikrocontroller (ATMega, Atiny) in C zu programmieren. Also, das Equipment war da. Nun hat ein Freund eine Schrittmotorsteuerung gebaut und dazu wäre der Atmega32 zu programmieren, bzw. das Programm auf den Kontroller zu bringen. Der Quellcode liegt nicht vor sondern eine HEX Datei und eine .eep Datei. Die HEX-Datei habe ich mit MPLAB IPE auf den Controller gebracht. Doch wie bringe ich die .eep DAtei ins EEProm des Controllers?? Weder bei der Hilfe bzw. dem Programm MPLAB X noch bei MPLAB IPE fand ich hier eine Möglichkeit bzw. Hilfe. Programmiergerät: ATMEL-ICE Software: MPLAP X und MPLAP IPE Version 6.10 OS: Archlinux Microcontroller: ATmega32 Quelle des Projektes, bzw. der Dateien um die es geht: https://www.mikrocontroller-elektronik.de/intelligente-schrittmotoransteuerung-mit-avr-controller/ Für Hilfe bzw. einen Tipp wäre ich sehr dankbar. Nochmal sei erwähnt, dass ich nicht zu den Fortgeschrittenen in der Microcontrollerszene gehöre. Gruß Günter
Günter H. schrieb: > Hallo, > > erst mal: Ja ich habe Google bemüht, die Forensuche und auch ChatGPT, > doch keine passende Lösung gefunden. > > Ich hatte mal vor Jahren begonnen, Mikrocontroller (ATMega, Atiny) in C > zu programmieren. Also, das Equipment war da. Nun hat ein Freund eine > Schrittmotorsteuerung gebaut und dazu wäre der Atmega32 zu > programmieren, bzw. das Programm auf den Kontroller zu bringen. Der > Quellcode liegt nicht vor sondern eine HEX Datei und eine .eep Datei. > > Die HEX-Datei habe ich mit MPLAB IPE auf den Controller gebracht. > Doch wie bringe ich die .eep DAtei ins EEProm des Controllers?? > > Weder bei der Hilfe bzw. dem Programm MPLAB X noch bei MPLAB IPE fand > ich hier eine Möglichkeit bzw. Hilfe. > > Programmiergerät: ATMEL-ICE > Software: MPLAP X und MPLAP IPE Version 6.10 > OS: Archlinux > Microcontroller: ATmega32 > Quelle des Projektes, bzw. der Dateien um die es geht: > https://www.mikrocontroller-elektronik.de/intelligente-schrittmotoransteuerung-mit-avr-controller/ > > Für Hilfe bzw. einen Tipp wäre ich sehr dankbar. > Nochmal sei erwähnt, dass ich nicht zu den Fortgeschrittenen in der > Microcontrollerszene gehöre. > > Gruß > Günter Mit Atmel Studio sollte es eigentlich kein Problem sein. Im Programmier Dialog, kannst Du dort die HEX und EEP Datei spezifizieren. Auch Lesen kann man den Flash bzw. Eeprom im anderen TAB. Das sollte eigentlich funktionieren. Ich verwende AS V7.0 mit AVR-ISP MKII oder das neuere AVR-ICE für SAM und AVR. Sieh Dir mal alles in Ruhe sorgfältig an. Im IPE sollte das auch möglich sein. Mir ist aber generell AS7 lieber. Gerhard
:
Bearbeitet durch User
Günter H. schrieb: > Programmiergerät: ATMEL-ICE Das ist doch schon mal was. Die schreiben aber folgendes: > Da das Board selbst keine kompatible ISP-Buchse besitzt, > muss ein anderes Board zum programmieren des > Controllers genutzt werden (z.B. RN-Control) . Oder man > nutzt einen geeigneten Programmer mit 40 pol Sockel. Ich würde da mit Steckbrettverdrahtung und dem Programmiertool "avrdude", ggf. mit GUI, rangehen. Sieht die eep-Datei im Texteditor wie ein Intel-Hex aus? Also Format wie die hex-Datei? Dann sehe ich im Vorgehen kein Problem, zumal da ein alter ATmega32 mit alter ISP-Schnittstelle drin ackert. Komisch, MPLAB sollte doch einen programmer-only Modus eingebaut haben. Ich kenne MPLAB nicht, habe bisher immer nur mit avr-gcc, avrdude, üblichen gnutools und anderer IDE gearbeitet. mfg mf PS. Zu spät, naja, egal.
:
Bearbeitet durch User
Danke für die Antworten. Atmel Studio kommt halt nicht in Frage, da ich ja auf Linux arbeite und ich meine Atmel Studio nur auf Windows läuft. Der Prozessor ist auf einem Steckbrett angeschlossen und die HEX Datei des Programmes konnte ich ja schreiben und verifizieren. MPLAP IPE. MPLAP IPE ist wohl das "nur Programmieren" Tool der Suite, doch finde ich dort keine Möglichkeit eine eep Datei zu laden, geschweige denn auf den Controller zu schieben.
Benenn die .eep in .hex um. Und dann wähl in MPLAB händisch EEPROM als Memory-Ziel. LG, Sebastian
Günter H. schrieb: > MPLAP IPE ist wohl das "nur Programmieren" Tool der Suite, doch finde > ich dort keine Möglichkeit eine eep Datei zu laden, geschweige denn auf > den Controller zu schieben. Du kannst die Datei direkt mit avrdude draufschreiben, wie oben schon geschrieben wurde. OT: Günter H. schrieb: > Atmel Studio kommt halt nicht in Frage, da ich ja auf Linux arbeite und > ich meine Atmel Studio nur auf Windows läuft. Bis Version 4 bekäme man’s unter Wine zum Laufen.
Sebastian W. schrieb: > Benenn die .eep in .hex um. Und dann wähl in MPLAB händisch EEPROM als > Memory-Ziel. > > LG, Sebastian Hallo, du meinst in MPLAP IPE das Programm das eigentlich nur zum "brennen" dabei ist? Das hatte ich schon probiert, die Datei umzubenennen. Laut der Seite von dem die eep Datei kommt ist es keine HEX sondern eine Binärcodierte Datei. Deshalb hat das Programm auch moniert, dass es keine HEX Datei ist.
Gerhard O. schrieb: > Günter H. schrieb: >> Hallo, >> >> erst mal: Ja ich habe Google bemüht, die Forensuche und auch ChatGPT, >> ... >> Gruß >> Günter Welchen Sinn mag wohl dieses Vollzitat gleich in der ersten Antwort haben? Meinst du nicht, dass jeder hier in der Lage sein sollte, einen Post zurück zu scrollen, um den Eröffnungspost direkt zu lesen?
avrdude -p atmega32 -c atmelice_isp -U eeprom:w:<filename> ?
Max D. schrieb: > avrdude -p atmega32 -c atmelice_isp -U eeprom:w:<filename> ? Ergebnis avrdude warning: cannot determine file format for RN_SCHRITTMOTOR_2.0.EEP, specify explicitly avrdude error: command failed avrdude error: initialization failed, rc=-1 - double check the connections and try again - use -B to set lower the bit clock frequency, e.g. -B 125kHz - use -F to override this check avrdude done. Thank you.
Beitrag #7495169 wurde vom Autor gelöscht.
Veit D. schrieb im Beitrag #7495169: > mach erstmal einen einfachen Test ob überhaupt die Verbindung okay ist. ... Programmer Type : JTAG3_ISP Description : Atmel-ICE (ARM/AVR) in ISP mode ICE HW version : 0 ICE FW version : 1.42 (rel. 161) Serial number : J42700042762 SCK period : 8.00 us Vtarget : 5.00 V avrdude: AVR device initialized and ready to accept instructions avrdude: device signature = 0x1e9502 (probably m32) avrdude done. Thank you. Beim Versuch zu schreiben: avrdude: processing -U eeprom:w:RN_SCHRITTMOTOR_2.0.eep:a avrdude OS error: unable to open RN_SCHRITTMOTOR_2.0.eep: No such file or directory avrdude error: cannot determine file format for RN_SCHRITTMOTOR_2.0.eep, specify explicitly avrdude error: read from file RN_SCHRITTMOTOR_2.0.eep failed
Günter H. schrieb: > avrdude OS error: unable to open RN_SCHRITTMOTOR_2.0.eep: No such file > or directory … ist eigentlich eindeutig.
(fall es nicht eindeutig ist: du musst avrdude in dem verzeichnis ausführen in dem deine eep liegt oder ihm den ganzen pfad sagen)
Ich war schon im richtigen Verzeichnis. Das hatte ich gelesen und die Datei umbenannt, da sich avrdude vielleicht an dem zusätzlichen Punkt im Dateinamen aufhängt. Ergebnis: avrdude warning: cannot determine file format for ./schrittmotor.eep, specify explicitly avrdude: AVR device initialized and ready to accept instructions avrdude: device signature = 0x1e9502 (probably m32) avrdude: processing -U eeprom:w:./schrittmotor.eep:a avrdude error: cannot determine file format for ./schrittmotor.eep, specify explicitly avrdude error: read from file ./schrittmotor.eep failed avrdude done. Thank you. In der Doku von AVRDUDE steht das von haus aus das fileformat auf :a wie auto steht. Der Versuch :i für Intel-Hex bring da auch kein Erfolg
:
Bearbeitet durch User
sag ihm halt dass es binär ist mit :b (kein smiley)
:
Bearbeitet durch User
Max D. schrieb: > sag ihm halt dass es binär ist mit :b (kein smiley) avrdude: AVR device initialized and ready to accept instructions avrdude: device signature = 0x1e9502 (probably m32) avrdude: processing -U eeprom:w:./schrittmotor.eep:b avrdude error: invalid data in immediate mode: cannot parse avrdude error: read from file ./schrittmotor.eep failed avrdude done. Thank you. Langsam aber sicher stresst das mich. In der Readme steht: Diese Firmware ist unverschlüsselt und muss mit einem geeigneten Programmer in den AVR Controller AT-Mega32 einprogrammiert werden. Hilfestellung gibt es sicher auch n Foren wie dem: http://www.roboternetz.de/community/forums/48-Schaltungen-und-Boards-der-Projektseite-Mikrocontroller-Elektronik-de Die Datei mit der Endung .HEX enthält den Binärcode für den Flasspeicher des ATMega32 Die Datei mit der Endung .EEP enthält den Binärcode für das EEPROM des ATMega32 Und ja, da hatte ich schon gesucht.
:
Bearbeitet durch User
Hallo, Wenn der Verbindungstest klappt machste das in der gleichen Konsole. Laut meines Wissen sollte das so aussehen. avrdude -c atmelice_isp -p atmega32 -U eeprom:w:"Pfad File.eep":i bzw. avrdude -c atmelice_isp -p atmega32 -U eeprom:w:"Pfad File.eep":b Entweder mit kompletten Pfad zur .eep Datei oder kopierst kurzerhand die .eep in den gleichen Ordner wo avrdude liegt. Wobei man die Option :i oder :b auch weglassen kann.
:
Bearbeitet durch User
Günter H. schrieb: > Langsam aber sicher stresst das mich Häng die hex und eep Dateien mal hier an. Dann können wir vielleicht nachsehen. Was das jeweils wirklich für ein Dateiformat ist. mfg mf
Achim M. schrieb: > Günter H. schrieb: >> Langsam aber sicher stresst das mich > > Häng die hex und eep Dateien mal hier an. Dann können wir vielleicht > nachsehen. Was das jeweils wirklich für ein Dateiformat ist. > > mfg mf Ich habe die zwei Dateien angehängt. Die HEX Datei geht mit MPLAB IPE zu übertragen und auch zu verifizieren.
EEP (binär) in HEX gewandelt im Anhang. Versuche diese in den EEPROM zu programmieren.
Max D. schrieb: > sag ihm halt dass es binär ist mit :b (kein smiley) Die Datei ist aber nicht binär (jedes Byte bitweise als ASCII 0bBBBBBBBB codiert, analog zu hex 0xHH), sondern "Raw Binary", das Format ist ":r" man avrdude sagt dazu:
1 | The format field is optional |
2 | and contains the format of the file to read or write. Format can be one of: |
3 | |
4 | i Intel Hex |
5 | |
6 | I Intel Hex with comments on download and tolerance of checksum errors on upload |
7 | |
8 | s Motorola S-record |
9 | |
10 | r raw binary; little-endian byte order, in the case of the flash ROM data |
11 | |
12 | e ELF (Executable and Linkable Format) |
13 | |
14 | m immediate; actual byte values specified on the command line, separated by commas or spaces. |
15 | This is good for programming fuse bytes without having to create a single-byte file or enter |
16 | terminal mode. |
17 | |
18 | a auto detect; valid for input only, and only if the input is not provided at stdin. |
19 | |
20 | d decimal; this and the following formats are only valid on output. They generate one line of |
21 | output for the respective memory section, forming a comma-separated list of the values. This |
22 | can be particularly useful for subsequent processing, like for fuse bit settings. |
23 | |
24 | h hexadecimal; each value will get the string 0x prepended. Only valid on output. |
25 | |
26 | o octal; each value will get a 0 prepended unless it is less than 8 in which case it gets no |
27 | prefix. Only valid on output. |
28 | |
29 | b binary; each value will get the string 0b prepended. Only valid on output. |
Martin H. schrieb: > Max D. schrieb: >> sag ihm halt dass es binär ist mit :b (kein smiley) > > Die Datei ist aber nicht binär (jedes Byte bitweise als ASCII 0bBBBBBBBB > codiert, analog zu hex 0xHH), sondern "Raw Binary", das Format ist ":r" > Problem gelöst. Vielen Dank. Lösungsweg: .eep Datei umbenannt, da im Dateinamen zwei Punkte waren. Das könnte evtl. zu Problemen führen. Beitrag von Martin H. gefolgt und mit folgendem Befehl avrdude ausgeführt:
1 | avrdude -p atmega32 -c atmelice_isp -U eeprom:w:./schrittmotor.eep:r |
Ergebnis:
1 | avrdude: reading input file ./schrittmotor.eep for eeprom |
2 | with 26 bytes in 1 section within [0, 0x19] |
3 | using 7 pages and 2 pad bytes |
4 | avrdude: writing 26 bytes eeprom ... |
5 | Writing | ################################################## | 100% 0.29 s |
6 | avrdude: 26 bytes of eeprom written |
7 | avrdude: verifying eeprom memory against ./schrittmotor.eep |
8 | |
9 | Problem gelöst! Solved! |
10 | Reading | ################################################## | 100% 0.02 s |
11 | avrdude: 26 bytes of eeprom verified |
12 | |
13 | avrdude done. Thank you. |
Vielen Dank für alle, die mir hier geholfen haben! Durch meinen dokumentierten Lösungsweg hoffe ich, dass anderen das auch mal hilft.
:
Bearbeitet durch User
Günter H. schrieb: > da im Dateinamen zwei Punkte waren. Das könnte > evtl. zu Problemen führen. Das interessiert Linux bzw. avrdude nicht die Bohne, letzteres hat eher Probleme mit dem Doppelpunkt, das als Formattrenner dient, man avrdude sagt: "Note that if filename contains a colon, the format field is no longer optional since the filename part following the colon would otherwise be misinterpreted as format."
Günter H. schrieb: > avrdude OS error: unable to open RN_SCHRITTMOTOR_2.0.eep: No such file > or directory Hier wurde eindeutig gesagt, dass die angegebene Datei nicht gefunden wurde und hier: Günter H. schrieb: > avrdude warning: cannot determine file format for ./schrittmotor.eep, > specify explicitly sagt avrdude, dass es das Dateiformat nicht erkennt. Also eigentlich waren die Fehlermeldungen eindeutig. Aber schön, dass mit Martins Hilfe das Problem gelöst werden konnte und es dazu auch eine Rückmeldung gab ;)
M. K. schrieb: > Günter H. schrieb: >> avrdude OS error: unable to open RN_SCHRITTMOTOR_2.0.eep: No such file >> or directory > > Hier wurde eindeutig gesagt, dass die angegebene Datei nicht gefunden > wurde und hier: > > Günter H. schrieb: >> avrdude warning: cannot determine file format for ./schrittmotor.eep, >> specify explicitly > > sagt avrdude, dass es das Dateiformat nicht erkennt. Also eigentlich > waren die Fehlermeldungen eindeutig. > > Aber schön, dass mit Martins Hilfe das Problem gelöst werden konnte und > es dazu auch eine Rückmeldung gab ;) Das ist nun schon eine Zeit lang her. Da ich schon seit bald 20 Jahren mit Linux arbeite, weiß ich wie ich Pfade korrekt angebe. Warum das dennoch ein Problem war, weiß ich nicht mehr. Ich meine die Erkennung des Dateiformats bei avrdude ist per "default" auf "automatische Erkennung". Deshalb kam es mir logischerweise nicht gleich in den Sinn, daran zu zweifeln, dass die automatische Erkennung funktioniert. Auch deshalb weil ich avrdude alle heilige Zeiten mal nutze. Mir war das Dateiformat nicht ganz klar, weshalb ich auch nicht gleich den richtigen, expliziten Parameter für das Dateiformat beim Aufruf avrdude angab.
Günter H. schrieb: > Martin H. schrieb: > Beitrag von Martin H. gefolgt und mit folgendem Befehl avrdude > ausgeführt:
1 | avrdude -p atmega32 -c atmelice_isp -U |
2 | > eeprom:w:./schrittmotor.eep:r |
avrdude versteht auch ELF, man braucht also kein Zwischenformat. Hier die Doku zu -U (Doku von v6.4, aktuell ist v7.2): https://avrdudes.github.io/avrdude/6.4/avrdude_3.html#Option-Descriptions
1 | The /filename/ field indicates the name of the file to read or write. |
2 | The format field is optional and contains the format of the file to read |
3 | or write. Possible values are: |
4 | |
5 | i Intel Hex |
6 | |
7 | r raw binary; little-endian byte order, in the case of the flash |
8 | ROM data |
9 | |
10 | e ELF (Executable and Linkable Format), the final output file from |
11 | the linker; currently only accepted as an input file. |
12 | |
13 | <many more> |
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.