====== Programmierung des FREDI mit AVRDUDE ====== Zur Programmierung des ATmega328 des FREDI kann [[https://github.com/avrdudes/avrdude|AVRDUDE]] verwendet werden. \\ Die hex-Files können auf der [[https://sourceforge.net/projects/fremodcc/files/FCalib2/|FCalib2-Seite]] von Sourceforge geladen werden. Die Fuses-Dateien beinhalten jeweils nur ein Byte und können mit [[https://github.com/avrdudes/avrdude|AVRDUDE]] im **immediate mode** einzeln programmiert werden. Durchgeführt wurde die Programmierung mit dem [[https://www.pololu.com/product/3172|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 Required. Specify AVR device. -b Override RS-232 baud rate. -B Specify JTAG/STK500v2 bit clock period (us). -C Specify location of configuration file. -c Specify programmer type. -D Disable auto erase for flash memory -i ISP Clock Delay [in microseconds] -P Specify connection port. -F Override invalid signature check. -e Perform a chip erase. -O Perform RC oscillator calibration (see AVR053). -U :r|w|v:[: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 [,] List programmer exit specifications. -x Pass to programmer. -y Count # erase cycles in EEPROM. -Y 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:\fredi-2.2.2-atmega328p.hex:i -U flash:v:\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** [[https://github.com/avrdudes/avrdude|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 [[https://fremodcc.sourceforge.net/diy/fred2/aufbau_fredi_d.html#inbetriebnahme|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.