Benutzer-Werkzeuge


weiteres:modellbahn:avr-programming

Programmierung des FREDI mit AVRDUDE

Zur Programmierung des ATmega328 des FREDI kann AVRDUDE verwendet werden.
Die hex-Files können auf der FCalib2-Seite von Sourceforge geladen werden. Die Fuses-Dateien beinhalten jeweils nur ein Byte und können mit AVRDUDE im immediate mode einzeln programmiert werden.

Durchgeführt wurde die Programmierung mit dem AVR-Programmer von Pololu, der einen STK500 emuliert und der AVRDUDE-Version 6.3. Zu beachten ist, dass der Programmer zwei COM-Schnittstellen verwendet, da dieser auch als USB-seriell-Wandler genutzt werden kann. Außerdem muss der Programmer mit dem Configuration Utility auf 3,3V eingestellt werden.

Für die Programmierung sind nur die folgenden vier Optionen -p, -c, -P und -U notwendig.

Usage: avrdude.exe [options]
Options:
-p <partno>                Required. Specify AVR device.
-b <baudrate>              Override RS-232 baud rate.
-B <bitclock>              Specify JTAG/STK500v2 bit clock period (us).
-C <config-file>           Specify location of configuration file.
-c <programmer>            Specify programmer type.
-D                         Disable auto erase for flash memory
-i <delay>                 ISP Clock Delay [in microseconds]
-P <port>                  Specify connection port.
-F                         Override invalid signature check.
-e                         Perform a chip erase.
-O                         Perform RC oscillator calibration (see AVR053).
-U <memtype>:r|w|v:<filename>[:format]
                           Memory operation specification.
                           Multiple -U options are allowed, each request
                           is performed in the order specified.
-n                         Do not write anything to the device.
-V                         Do not verify.
-u                         Disable safemode, default when running from a script.
-s                         Silent safemode operation, will not ask you if
                           fuses should be changed back.
-t                         Enter terminal mode.
-E <exitspec>[,<exitspec>] List programmer exit specifications.
-x <extended_param>        Pass <extended_param> to programmer.
-y                         Count # erase cycles in EEPROM.
-Y <number>                Initialize erase cycle # in EEPROM.
-v                         Verbose output. -v -v for more.
-q                         Quell progress output. -q -q for less.
-l logfile                 Use logfile rather than stderr for diagnostics.
-?                         Display this usage.

avrdude version 6.3-20171130, URL: http://savannah.nongnu.org/projects/avrdude/

Beispiel für FREDI-Firmware 2.2.2 und Fuses

avrdude.exe -p ATmega328P -c stk500 -P com6 -U flash:w:<path-to-file>\fredi-2.2.2-atmega328p.hex:i -U flash:v:<path-to-file>\fredi-2.2.2-atmega328p.hex:i -U efuse:w:0xFD:m -U hfuse:w:0xD4:m -U lfuse:w:0xD7:m

Beispiel für FREDI-Adresse

AVRDUDE ermöglicht auch das Schreiben einzelner Bytes in den EEPROM. Es ist dabei keine Adress-Angabe möglich, aber die zwei Bytes der FREDI-Adresse befinden sich ab Adresse 0, so dass diese Schreib-Operation möglich ist. Nachfolgend die Programmierung der Adresse 402.

avrdude.exe -p ATmega328P -c stk500 -P com6 -U eeprom:w:0x04,0x02:m

Nach erfolgter Programmierung befindet sich der FREDI im Selbsttest (langsam umlaufende LEDs) und kann wie hier unter Punkt 2 in Betrieb genommen werden.

Dies gilt für die Erstprogrammierung des EEPROM. Bei einer Adress-Änderung sollte der EEPROM vorher gelöscht werden. Das bewirkt dann einen nochmaligen Selbsttest.

weiteres/modellbahn/avr-programming.txt · Zuletzt geändert: 2025/01/16 20:45 von miho