Arduino Uno Bootloader verwenden

OP #7878924
Lesenswert?

Hallo,

ich programmiere AtMega328 mit einem Tremex AVR-Prog, der über das SPI mit dem Microcontroller verbunden ist.

Da ich diese Pins nun anderweitig brauche, möchte ich einen Arduino Uno wie die Arduino-IDE über die serielle / USB-Schnittstelle programmieren - allerdings ohne die Arduino-IDE.

Für Tips, wie ich das unter Linux hinbekomme kann, wäre ich dankbar.

OP #7878982
Lesenswert?

Sorry, ich habe mich vermutlich nicht richtig ausgedrückt.

Ich möchte den im Arduino Uno vorhandenen Bootloader weiterhin verwenden, ohne ihn zu ändern.

Ich suche ein Programm, das auf dem PC läuft und den von mir generierten Hex-Code (unter Verwendung des Bootloader-Protokolls) über die beim Einstecken des Uno generierte Schnittstelle (z. B. ttyUSB0) auf den Uno lädt und flasht.

OP #7879013
Lesenswert?

avrdude -F -V -c avrispmkII -p m328p -P /dev/ttyUSB0 -U flash:w:blink.hex

avrdude error: timeout avrdude error: timeout avrdude error: timeout avrdude error: timeout avrdude error: timeout avrdude error: timeout avrdude error: timeout communicating with programmer

Die Parameter "avrispmkII" und "/dev/ttyUSB0" habe ich der Arduini-IDE entnommen, dort funktionieren sie.

Wenn ich "blink.hex" mit dem AVR-Prog runterlade, funktioniert es.

Angehängte Dateien:
OP #7879019
Lesenswert?

Bei mir nicht:

Archiving built core (caching) in: /tmp/arduino_cache_132696/core/core_arduino_avr_uno_1621df717313d057c92202babd71649a.a

Der Sketch verwendet 930 Bytes (2%) des Programmspeicherplatzes. Das Maximum sind 32256 Bytes.

Globale Variablen verwenden 9 Bytes (0%) des dynamischen Speichers, 2039 Bytes für lokale Variablen verbleiben. Das Maximum sind 2048 Bytes.

Wenn ich dieses Programm mit dem AVR-Prog runterlade, funktioniert es:

1
#include <stdint.h>
2
#include <avr/io.h>
3
#include <util/delay.h>
4

5
void blink (void)
6
  {
7
  // Achtung: dies macht auch RXD zum Ausgang!
8

9
  DDRD = 255; // Alle Port-D-Pins sind Ausgänge
10

11
  while (1)
12
    {
13
    PORTD = 255;  _delay_ms(100);
14
    PORTD = 0;    _delay_ms(100);
15
    }
16
  }
17

18
int main (void)
19
  {
20
  blink ();
21

22
  return 0;
23
  }

Mir ist klar, dass ich den im Uno eingebauten Bootloader durch das Runterladen mit dem AVR-Prog zerstöre. Ich verwende deswegen zwei Unos, einen zur Programmierung mit dem AVR-Prog, bei dem der Bootloader überschrieben ist, und einen neuen zur Programmierung mit der Arduino-IDE, bei dem der Bootloader noch ok ist.

OP #7879038
Lesenswert?

Jetzt funktioniert es!

Ich habe aus der "ausführlichen Ausgabe" der Arduino-IDE folgende Zeile rauskopiert

/usr/bin/avrdude -C/etc/avrdude.conf -v -patmega328p -carduino -P/dev/ttyUSB0 -b115200 -D -Uflash:w:/tmp/arduino_build_466420/AnalogReadSerial.ino.hex:i

und so geändert, dass es die von mir erstellte blink.hex runterlädt

/usr/bin/avrdude -C/etc/avrdude.conf -v -patmega328p -carduino -P/dev/ttyUSB0 -b115200 -D -Uflash:w:blink.hex:i

Danke!

Angehängte Dateien:

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