Forum: Compiler & IDEs Arduino und Hex


von Frank S. (frank6)


Lesenswert?

Hallo Zusammen!
Ich möchte gerne ein HEX File auf einen Atmega328P flashen. Ich habe 
hier ein Arduino Uno Board und neueste Software auf dem PC. Ich kapiere 
nicht wie ich damit das Hex auf den Controller hochkriege.
Kann mir da jemand helfen?

Gruss Frank

von Michael U. (amiga)


Lesenswert?

Hallo,

der Mega328 auf dem UNO hat einen Bootloader drauf und wird seriell 
programmiert.
Ein fertiges HEX-File kannst Du nur per ISP auf dem Mega328 bekommen, 
vermutlich mußt Du dann auch due Fuse_Bits entsprechend anpassen und der 
UNO ist dann kein "UNO" mehr.

Was hast Du also genau vor? Ein HEX von einem anderen Projekt auf den 
Mega328 Deines UNO zu flashen? Wozu?
Ansonsten Mega328 beschaffen, Schaltung aufbauen (Dein HEX-File wird ja 
einen Sinn haben sollen), den UNO mit dem Sketch ISP-Programmer laden 
und dann den anderen Mega328 per ISP flashen.

Gruß aus Berlin
Michael

von Karl M. (Gast)


Lesenswert?

Guten Morgen,

man kann auch avrdude, mit dem Arduino-Bootloader verwenden.
Ich schreibe dann als Programmieradapter avr109 oder arduino, je nach 
verwendetem Bootloader.
1
$ avrdude -?
2
Usage: avrdude [options]
3
Options:
4
  -p <partno>                Required. Specify AVR device.
5
  -b <baudrate>              Override RS-232 baud rate.
6
  -B <bitclock>              Specify JTAG/STK500v2 bit clock period (us).
7
  -C <config-file>           Specify location of configuration file.
8
  -c <programmer>            Specify programmer type.
9
  -D                         Disable auto erase for flash memory
10
  -i <delay>                 ISP Clock Delay [in microseconds]
11
  -P <port>                  Specify connection port.
12
  -F                         Override invalid signature check.
13
  -e                         Perform a chip erase.
14
  -O                         Perform RC oscillator calibration (see AVR053). 
15
  -U <memtype>:r|w|v:<filename>[:format]
16
                             Memory operation specification.
17
                             Multiple -U options are allowed, each request
18
                             is performed in the order specified.
19
  -n                         Do not write anything to the device.
20
  -V                         Do not verify.
21
  -u                         Disable safemode, default when running from a script.
22
  -s                         Silent safemode operation, will not ask you if
23
                             fuses should be changed back.
24
  -t                         Enter terminal mode.
25
  -E <exitspec>[,<exitspec>] List programmer exit specifications.
26
  -x <extended_param>        Pass <extended_param> to programmer.
27
  -y                         Count # erase cycles in EEPROM.
28
  -Y <number>                Initialize erase cycle # in EEPROM.
29
  -v                         Verbose output. -v -v for more.
30
  -q                         Quell progress output. -q -q for less.
31
  -l logfile                 Use logfile rather than stderr for diagnostics.
32
  -?                         Display this usage.

von Frank S. (frank6)


Lesenswert?

Hallo!
Danke für die Rückmeldungen!
Ich möchte keinen Bootloader laden sondern ein fertiges Programm für ein 
Radio-Projekt.
In der Vergangenheit machte ich es so: AVR MKII an das Arduino Uno 
gehängt, Atmega 328 dort reingesteckt, Programm geflasht, fertig!
Also so wie hier im Video: https://www.youtube.com/watch?v=EsLOMdu50YU
Leider funktioniert das AVR Studio nicht mehr, habe schon 1000 Versionen 
davon installiert, immer gibt's Probleme mit der Verbindung vom MKII 
oder sonst irgendwas! Ich drehe hier im Roten!

von Karl M. (Gast)


Lesenswert?

Hallo Frank S.,

ok, jetzt verstehe ich, du hast einen neuen/ leeren atmega328p und 
möchtest eine Programm über einen ISP Programmer übertragen.

Bitte das setzen der Fusebits nicht vergessen - eine neuer atmega328p 
läuft intern mit 1MHz !

Du benötigst dann NUR avrdude, einen ISP Programmieradapter und den 
passenden Treiber, falls ein WinOS im Spiel ist.

Man kann avrdude über die Kommandozeile steuern, oder man verwendet ein 
grafisches Frontend zu avrdude.

Das kann auch eine IDE sein, z.B. von LunaAVR.

von Frank S. (frank6)


Angehängte Dateien:

Lesenswert?

Hallo!
Hier noch ein Problem mit dem ich nicht weiterkomme als Bildanhang.

von Karl M. (Gast)


Lesenswert?

Nachtrag für das Wissen(-schaft),

es gibt auch den Gscheiduino (Arduino™/Genuino™ Clon) mit einem richtig 
ISP Programmieradapter on Board.

http://www.ehajo.de/baus%C3%A4tze/bedrahtete-baus%C3%A4tze/gscheiduino-arduino%E2%84%A2genuino%E2%84%A2-clon.html

Darüber hinaus kann man einen atmega328p auch auf ein Brotbrett stecken, 
richtig beschalten, mit Abblock C=100nF und den ISP Programmieradapter 
direkt anschließen.

Die benötigten Pins dazu stehen im Datenblatt des atmega328p und in 
mind. einer Application Note von Atmel.

von Karl M. (Gast)


Lesenswert?

Frank S. schrieb:
> Hier noch ein Problem mit dem ich nicht weiterkomme als Bildanhang.

Verstehe ich nicht, da weden doch nur Statusmeldungen ausgegeben.
Was erwartest Du bei setzen der Fuse-Bits?

von Räusper (Gast)


Lesenswert?

Frank S. schrieb:
> Hallo!
> Hier noch ein Problem mit dem ich nicht weiterkomme als Bildanhang.

Ich sehe auf dem Bild bei jeder Meldung ein "ok" dahinter. Was sollte 
denn deiner Meinung dastehen, damit du es nicht mehr als Problem siehst?

von Frank S. (frank6)


Lesenswert?

Hallo
Bei Spien sollte doch kein "?" sein oder?

von Frank S. (frank6)


Lesenswert?

Weis jemand wo da das Problem liegt?

Verifying Flash...Failed! address=0x0002 expected=0x34 actual=0x58

von Karl M. (Gast)


Lesenswert?

Frank S.

bisher schreibst Du nichts in den atmega328p !

Also kann es auch kein Problem geben.

von Frank S. (frank6)


Lesenswert?

Hallo!
Das bringt auch nichts solange diese Probleme nicht gelöst sind. 
Natürlich kann ich jetzt flashen, und im Status zeigt es dann auch OK 
an. Aber auf dem Controller selbst ist dann kein funktionierendes 
Programm drauf.

: Bearbeitet durch User
von Räusper (Gast)


Lesenswert?

Frank S. schrieb:
> Hallo!
> Das bringt auch nichts solange diese Probleme nicht gelöst sind.
> Natürlich kann ich jetzt flashen, und im Status zeigt es dann auch OK
> an. Aber auf dem Controller selbst ist dann kein funktionierendes
> Programm drauf.

Wenn im Status nach dem Flashen "ok" steht, warum sollte dann kein 
funktionierendes Programm drauf sein? Ich gehe mal davon aus, dass die 
Quellen ok sind. Wenn du natürlich Mist programmiert hast, dann kann es 
auch nicht funktionieren, obwohl das Flashen in Ordnung ging.
Du hast doch hoffentlich vor dem Flashen den µC gelöscht und nach dem 
Flashen ein Verify durchgeführt?

von Frank S. (frank6)


Lesenswert?

Das selbe Programm habe ich auf einem anderen Controller, welches ja 
läuft.
Darum kann man Programmfehler komplett ausschliessen. Die Bausteine sind 
leer, auch mit neuen geht es nicht. Verify, alles ok...

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.