Difference between revisions of "AVR Embedded Tutorial - Various programmers/de"

From Lazarus wiki
Jump to navigationJump to search
m (→‎Siehe auch: Bypass page redirect)
 
(19 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{Translate}}
+
{{LanguageBar}}
=Verschiedene Programmer=
 
  
 
==Generelles==
 
==Generelles==
  
 
===Arduino-IDE===
 
===Arduino-IDE===
Am einfachsten geht es um die nötigen Parameter für '''avrdude''' zu ermitteln, wen man den passenden AVR zuerst mal mit der Arduino-IDE programmiert.<br>
+
 
 +
Am einfachsten geht es um die nötigen Parameter für '''avrdude''' zu ermitteln, wen man den passenden AVR zuerst mal mit der Arduino-IDE programmiert.
 +
 
 
Siehe:
 
Siehe:
 +
 
* [[AVR_Embedded_Tutorial_-_Set_up_Lazarus_for_ATmega_and_ATTiny/de#ATmega328p|Lazarus für ATmega und ATTiny einrichten]]
 
* [[AVR_Embedded_Tutorial_-_Set_up_Lazarus_for_ATmega_and_ATTiny/de#ATmega328p|Lazarus für ATmega und ATTiny einrichten]]
Bei der erst Programmierung der AVR, wird ein Bootloader gebraucht, diesen brennt man am besten mit der Arduino-IDE.<br>
+
 
 +
Bei der erst Programmierung der AVR, wird ein Bootloader gebraucht, diesen brennt man am besten mit der Arduino-IDE.
 +
 
 
Wen man die Taktfrequenz oder sonstige Parameter ändern will, muss man den Bootloader auch neu brennen. Dies FUSE-Parameter werden auch geschrieben.
 
Wen man die Taktfrequenz oder sonstige Parameter ändern will, muss man den Bootloader auch neu brennen. Dies FUSE-Parameter werden auch geschrieben.
  
 
===Lazarus IDE===
 
===Lazarus IDE===
Die bei der Arduino-IDE ermittelten Parameter werden bei Lazarus unter  
+
 
 +
Die bei der Arduino-IDE ermittelten Parameter werden bei Lazarus unter:
 +
 
* ''"Projekt --> Projekteinstellungen... --> Compiler-Kommandos --> Nachher ausführen"'' eingetragen.  
 
* ''"Projekt --> Projekteinstellungen... --> Compiler-Kommandos --> Nachher ausführen"'' eingetragen.  
Dies sieht bei einem Arduino-Nano etwa so aus:<br><code>/home/tux/Programme/arduino-1.8.5/hardware/tools/avr/bin/avrdude -C/home/tux/Programme/arduino-1.8.5/hardware/tools/avr/etc/avrdude.conf -v -patmega328p -carduino -P/dev/ttyUSB0 -b57600 -D -Uflash:w:Project1.hex:i</code>
 
  
===Averdude installieren===
+
Dies sieht bei einem Arduino-Nano etwa so aus:<br><code>/home/tux/Programme/arduino-1.8.5/hardware/tools/avr/bin/avrdude -C/home/tux/Programme/arduino-1.8.5/hardware/tools/avr/etc/avrdude.conf -v -patmega328p -carduino -P/dev/ttyUSB0 -b57600 -Uflash:w:Project1.hex:i</code>
Wen man '''averdude installiert''', kann man die Start-Parameter Liste bei Lazarus einiges verkürzen.
+
 
 +
===Avrdude installieren===
 +
 
 +
Wen man '''avrdude installiert''', kann man die Start-Parameter Liste bei Lazarus einiges verkürzen.
  
 
====Linux====
 
====Linux====
 +
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
 
sudo apt-get install avrdude
 
sudo apt-get install avrdude
 
</syntaxhighlight>
 
</syntaxhighlight>
'''Hinweis:''' Bei der Paketverwaltung sind meistens etwas ältere '''averdude''' vorhanden. In der Regel ist dies nicht störend, ausser man verwendet brandneue Hardware.
+
 
 +
'''Hinweis:''' Bei der Paketverwaltung sind meistens etwas ältere '''avrdude''' vorhanden. In der Regel ist dies nicht störend, ausser man verwendet brandneue Hardware.
  
 
===Verkürzte Parameter===
 
===Verkürzte Parameter===
Da '''avrdude''' im Suchpfad ist, kann man die ganze Pfad-Angabe sparen. Die Zeile mit '''avrdude.conf''' braucht es auch nicht, da die Default '''avrdude.conf''' verwendet wird, bei Linux befindet sich diese unter '''/etc/avrdude.conf'''.<br><code>avrdude  -v -patmega328p -carduino -P/dev/ttyUSB0 -b57600 -D -Uflash:w:Project1.hex:i</code>
+
 
 +
Da '''avrdude''' im Suchpfad ist, kann man die ganze Pfad-Angabe sparen. Die Zeile mit '''avrdude.conf''' braucht es auch nicht, da die Default '''avrdude.conf''' verwendet wird, bei Linux befindet sich diese unter '''/etc/avrdude.conf'''.
 +
 
 +
<syntaxhighlight lang="bash">
 +
avrdude  -v -patmega328p -carduino -P/dev/ttyUSB0 -b57600 -D -Uflash:w:Project1.hex:i
 +
</syntaxhighlight>
  
 
==Programmieren über USB==
 
==Programmieren über USB==
 +
 
Bei den meisten Arduino wird über USB programmiert, das sieht dann bei folgenden Arduino so aus:
 
Bei den meisten Arduino wird über USB programmiert, das sieht dann bei folgenden Arduino so aus:
  
* Arduino Nano, alter Bootloader ( Ist bei den meistne China-Modellen vorhanden )<br><code>avrdude -v -patmega328p -carduino -P/dev/ttyUSB0 -b57600 -D -Uflash:w:Project1.hex:i</code>
+
* '''Arduino UNO''':<br><code>avrdude -v -patmega328p -carduino -P/dev/ttyACM0 -b115200 -Uflash:w:Project1.hex:i</code>
 +
 
 +
* '''Arduino Nano, alter Bootloader''' ( Ist bei den meisten China-Modellen vorhanden ):<br><code>avrdude -v -patmega328p -carduino -P/dev/ttyUSB0 -b57600 -Uflash:w:Project1.hex:i</code>
  
* Arduino Nano, neuer Bootloader, wird ab Anfangs 2018 verwendet.<br><code>avrdude -v -patmega328p -carduino -P/dev/ttyUSB0 -b115200 -D -Uflash:w:Project1.hex:i</code>
+
* '''Arduino Nano, neuer Bootloader''' ( wird ab Anfangs 2018 verwendet ):<br><code>avrdude -v -patmega328p -carduino -P/dev/ttyUSB0 -b115200 -Uflash:w:Project1.hex:i</code>
  
 
==Programmieren über ISP==
 
==Programmieren über ISP==
 +
 
Man kann die Arduinos auch über ISP programmieren, dabei wird der Arduino über den 6-Pol Pfostenstecker an einem ISP-Programmer angeschlossen. Bei nackten AVR geht dies auf den gleichen Weg, nur muss man da selbst den 6-Pol Stecker anlöten.
 
Man kann die Arduinos auch über ISP programmieren, dabei wird der Arduino über den 6-Pol Pfostenstecker an einem ISP-Programmer angeschlossen. Bei nackten AVR geht dies auf den gleichen Weg, nur muss man da selbst den 6-Pol Stecker anlöten.
  
 
===USBasp===
 
===USBasp===
  
* Atmega328p oder Arduino Nano, mit einem aspISP-Programmer.<br><code>avrdude -v -patmega328p -cusbasp -Pusb -Uflash:w:Project1.hex:i</code>
+
* Atmega328p oder Arduino Nano, mit einem aspISP-Programmer.
 +
 
 +
====Linux====
 +
 
 +
<syntaxhighlight lang="bash">
 +
avrdude -v -patmega328p -cusbasp -Pusb -Uflash:w:Project1.hex:i
 +
</syntaxhighlight>
 +
 
 +
====Windows====
  
==== Fehler ====
+
Folgender Treiber muss installiert sein:
Wen es zu folgendem Fehler kommt, einfach Avrdude installieren.
+
 
 +
* https://zadig.akeo.ie/ - USBasp Treiber
 +
 
 +
<syntaxhighlight lang="dos">
 +
[Pfad]\avrdude.exe -v -patmega328p -cusbasp -Pusb -Uflash:w:Project1.hex:i
 +
</syntaxhighlight>
 +
 
 +
===Arduino ISP===
 +
 
 +
Eigenbau ISP-Programmer mit einem Arduino, gemäss diesen Tutorials:
 +
 
 +
* https://flazer.de/blog/14/arduino-atmel-flash-station - mit Kontroll-LEDs
 +
 
 +
* https://playground.boxtec.ch/doku.php/arduino/attiny - ohne Kontroll-LEDs, oder nach '''"arduino attiny isp"''' suchen.
 +
 
 +
* ATTiny2313 mit modifizierten Arduino als ISP-Programmer.
 +
 
 +
<syntaxhighlight lang="bash">
 +
avrdude -v -pattiny2313 -cstk500v1 -P/dev/ttyUSB0 -b19200 -Uflash:w:Project1.hex:i
 +
</syntaxhighlight>
 +
 
 +
=== USB-Port frei geben ===
 +
 
 +
Es kann sein, das der USB-Port gesperrt ist und es zu folgendem Fehler kommt:
 +
 
 +
<syntaxhighlight lang="text">
 
  avrdude: Warning: cannot open USB device: Permission denied
 
  avrdude: Warning: cannot open USB device: Permission denied
 
  avrdude: error: could not find USB device with vid=0x16c0 pid=0x5dc vendor='www.fischl.de' product='USBasp'
 
  avrdude: error: could not find USB device with vid=0x16c0 pid=0x5dc vendor='www.fischl.de' product='USBasp'
* Linux:
+
</syntaxhighlight>
  $ sudo apt-get install avrdude
+
 
 +
Bei Ubuntu basierenden Linux kann man dies beheben, in dem man AVRdude folgendermassen installiert:
 +
 
 +
<syntaxhighlight lang="bash">
 +
  sudo apt-get install avrdude
 +
</syntaxhighlight>
  
===Arduino ISP===
+
'''Hinweis:''' Evtl. '''PC Neustart''' nötig.
Eigenbau ISP-Programmer mit einem Arduino, gemäss diesen Tutorials:
 
* https://flazer.de/blog/14/arduino-atmel-flash-station - mit Kontroll-LEDs<br>https://playground.boxtec.ch/doku.php/arduino/attiny - ohne Kontroll-LEDs,<br>oder nach '''"arduino attiny isp"''' suchen.
 
  
 +
=== Zu langsamer Clock ===
  
* ATTiny2313 mit modifizierten Arduino als ISP-Programmer.<br><code>avrdude -v -pattiny2313 -cstk500v1 -P/dev/ttyUSB0 -b19200 -Uflash:w:Project1.hex:i</code>
+
Wen man einen sehr langsamen Clock über die Fuses eingestellt hat, funktioniert das der einfache AVRDude Aufruf nicht mehr.<br>
 +
In meinem Beispiel 128KHz, anstelle der üblichen 8/16MHz.<br>
 +
Das man trotzdem flashen kann muss man die Übertragungsgeschwindigkeit drosseln. Die geschieht über '''-Bx'''.
 +
<syntaxhighlight lang="bash">
 +
avrdude -v -patmega328p -cusbasp -Pusb -Uflash:w:Project1.hex:i -B32
 +
</syntaxhighlight>
 +
Leider funktioniert dies nicht mit jedem Programmer. Ich konnte dies nur mit einem USBasp mit ATmega8 und mit der neusten Firmware von hier:
 +
* [[https://www.fischl.de/usbasp/ Thomas Fischl]] - Version: 2011-05-28
  
 
== Siehe auch ==
 
== Siehe auch ==
* Übersichtseite [[AVR Embedded Tutorial/de|AVR Embedded Tutorial]]
+
 
 +
* Übersichtseite [[AVR Embedded Tutorials/de|AVR Embedded Tutorials]]
  
 
Autor: [[User:Mathias|Mathias]]
 
Autor: [[User:Mathias|Mathias]]
  
[[Category:Embedded]]
+
[[Category:Embedded/de]]
[[Category:AVR]]
+
[[Category:AVR/de]]
[[Category:Arduino]]
+
[[Category:Arduino/de]]
 +
{{AutoCategory}}

Latest revision as of 08:10, 11 February 2021

Deutsch (de) English (en)

Generelles

Arduino-IDE

Am einfachsten geht es um die nötigen Parameter für avrdude zu ermitteln, wen man den passenden AVR zuerst mal mit der Arduino-IDE programmiert.

Siehe:

Bei der erst Programmierung der AVR, wird ein Bootloader gebraucht, diesen brennt man am besten mit der Arduino-IDE.

Wen man die Taktfrequenz oder sonstige Parameter ändern will, muss man den Bootloader auch neu brennen. Dies FUSE-Parameter werden auch geschrieben.

Lazarus IDE

Die bei der Arduino-IDE ermittelten Parameter werden bei Lazarus unter:

  • "Projekt --> Projekteinstellungen... --> Compiler-Kommandos --> Nachher ausführen" eingetragen.

Dies sieht bei einem Arduino-Nano etwa so aus:
/home/tux/Programme/arduino-1.8.5/hardware/tools/avr/bin/avrdude -C/home/tux/Programme/arduino-1.8.5/hardware/tools/avr/etc/avrdude.conf -v -patmega328p -carduino -P/dev/ttyUSB0 -b57600 -Uflash:w:Project1.hex:i

Avrdude installieren

Wen man avrdude installiert, kann man die Start-Parameter Liste bei Lazarus einiges verkürzen.

Linux

sudo apt-get install avrdude

Hinweis: Bei der Paketverwaltung sind meistens etwas ältere avrdude vorhanden. In der Regel ist dies nicht störend, ausser man verwendet brandneue Hardware.

Verkürzte Parameter

Da avrdude im Suchpfad ist, kann man die ganze Pfad-Angabe sparen. Die Zeile mit avrdude.conf braucht es auch nicht, da die Default avrdude.conf verwendet wird, bei Linux befindet sich diese unter /etc/avrdude.conf.

avrdude  -v -patmega328p -carduino -P/dev/ttyUSB0 -b57600 -D -Uflash:w:Project1.hex:i

Programmieren über USB

Bei den meisten Arduino wird über USB programmiert, das sieht dann bei folgenden Arduino so aus:

  • Arduino UNO:
    avrdude -v -patmega328p -carduino -P/dev/ttyACM0 -b115200 -Uflash:w:Project1.hex:i
  • Arduino Nano, alter Bootloader ( Ist bei den meisten China-Modellen vorhanden ):
    avrdude -v -patmega328p -carduino -P/dev/ttyUSB0 -b57600 -Uflash:w:Project1.hex:i
  • Arduino Nano, neuer Bootloader ( wird ab Anfangs 2018 verwendet ):
    avrdude -v -patmega328p -carduino -P/dev/ttyUSB0 -b115200 -Uflash:w:Project1.hex:i

Programmieren über ISP

Man kann die Arduinos auch über ISP programmieren, dabei wird der Arduino über den 6-Pol Pfostenstecker an einem ISP-Programmer angeschlossen. Bei nackten AVR geht dies auf den gleichen Weg, nur muss man da selbst den 6-Pol Stecker anlöten.

USBasp

  • Atmega328p oder Arduino Nano, mit einem aspISP-Programmer.

Linux

 avrdude -v -patmega328p -cusbasp -Pusb -Uflash:w:Project1.hex:i

Windows

Folgender Treiber muss installiert sein:

[Pfad]\avrdude.exe -v -patmega328p -cusbasp -Pusb -Uflash:w:Project1.hex:i

Arduino ISP

Eigenbau ISP-Programmer mit einem Arduino, gemäss diesen Tutorials:

  • ATTiny2313 mit modifizierten Arduino als ISP-Programmer.
 avrdude -v -pattiny2313 -cstk500v1 -P/dev/ttyUSB0 -b19200 -Uflash:w:Project1.hex:i

USB-Port frei geben

Es kann sein, das der USB-Port gesperrt ist und es zu folgendem Fehler kommt:

 avrdude: Warning: cannot open USB device: Permission denied
 avrdude: error: could not find USB device with vid=0x16c0 pid=0x5dc vendor='www.fischl.de' product='USBasp'

Bei Ubuntu basierenden Linux kann man dies beheben, in dem man AVRdude folgendermassen installiert:

 sudo apt-get install avrdude

Hinweis: Evtl. PC Neustart nötig.

Zu langsamer Clock

Wen man einen sehr langsamen Clock über die Fuses eingestellt hat, funktioniert das der einfache AVRDude Aufruf nicht mehr.
In meinem Beispiel 128KHz, anstelle der üblichen 8/16MHz.
Das man trotzdem flashen kann muss man die Übertragungsgeschwindigkeit drosseln. Die geschieht über -Bx.

 avrdude -v -patmega328p -cusbasp -Pusb -Uflash:w:Project1.hex:i -B32

Leider funktioniert dies nicht mit jedem Programmer. Ich konnte dies nur mit einem USBasp mit ATmega8 und mit der neusten Firmware von hier:

Siehe auch

Autor: Mathias