Arduino: Unterschied zwischen den Versionen

Aus Matthias Wiki
Zur Navigation springen Zur Suche springen
 
(24 dazwischenliegende Versionen von 8 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
==Arduino allgemein==
===Links===
*[http://skpang.co.uk/blog/archives/323 Schnelleres GPIO auf dem Arduino]
*[http://www.nongnu.org/avr-libc/user-manual/inline_asm.html Inline Assembler]
**[https://ucexperiment.wordpress.com/2013/06/03/gcc-inline-assembler-cookbook Beispiele]
*[http://ewiki.e-dschungel.de/software/avr-gcc Konstanten im Flash ablegen]
*[https://ucexperiment.wordpress.com/2015/03/31/avr-gcc-fixed-point-vs-floating-point-comparison Fixed Point Zahlen in C]
===Links zu Peripherie===
*[http://www.elecfreaks.com/wiki/index.php?title=2.4G_Wireless_nRF24L01p_with_PA_and_LNA nRF24L01 wireless tranceiver]
*[http://gizmosnack.blogspot.ch/2013/04/tutorial-nrf24l01-and-avr.html Tutorial nRF24L01 and AVR]
*[http://mcuoneclipse.com/2013/07/20/tutorial-ultra-low-cost-2-4-ghz-wireless-transceiver-with-the-frdm-board Very detailed tutorial for nRF24L01]
*[https://www.sdcard.org/downloads/pls Secure Digital (SD) Card Simplified Spec]
*[http://www.chlazza.net/sdcardinfo.html Secure Digital (SD) Card Spec and Info]
*[http://elm-chan.org/docs/mmc/mmc_e.html How to Use MMC/SDC]
*[https://www.pjrc.com/tech/8051/ide/fat32.html Understanding FAT32 Filesystems]
*[https://www.win.tue.nl/~aeb/linux/fs/fat/fat-1.html FAT-Filesystem]
*[https://technet.microsoft.com/en-us/library/cc776720(v=ws.10).aspx How FAT works]
*[https://techmike1985.wordpress.com/2013/06/10/74hc595-schieberegister-grundlagen Schieberegister 74HC595]
*[http://www.mikrocontroller.net/articles/WS2812_Ansteuerung Ansteuerung des WS2812]
==Arduino als In-System-Programmierer==
==Arduino als In-System-Programmierer==


Zeile 9: Zeile 31:
*[http://www.engbedded.com/fusecalc Einstellhilfe für AVR Fuses]
*[http://www.engbedded.com/fusecalc Einstellhilfe für AVR Fuses]
*[http://www.mikrocontroller.net/articles/AVR Microcontroller.net: AVR]
*[http://www.mikrocontroller.net/articles/AVR Microcontroller.net: AVR]
*[http://derjulian.net/mikrocontroller#headline_17 ATMega168 Pin-Layout]
*[http://derjulian.net/mikrocontroller#headline_17 ATMega168 Pin-Layout], [https://www.arduino.cc/en/Hacking/PinMapping168 mit Arduino-Mapping]
*[https://camo.githubusercontent.com/74ec507485d8fb1d729756d98f4a4c1634c7a289/68747470733a2f2f662e636c6f75642e6769746875622e636f6d2f6173736574732f3530343931342f323230383739372f65656439303038302d393938332d313165332d383665362d3462383434396330316432362e706e67 Arduino Micro Pin-Layout]
*[https://camo.githubusercontent.com/74ec507485d8fb1d729756d98f4a4c1634c7a289/68747470733a2f2f662e636c6f75642e6769746875622e636f6d2f6173736574732f3530343931342f323230383739372f65656439303038302d393938332d313165332d383665362d3462383434396330316432362e706e67 Arduino Micro Pin-Layout]
*[http://academy.kaziunas.com/tutorials/images/embedded_programming/Atmega168Pinout_Arduino.png ATMega168 Pin-Layout]
*[http://playground.arduino.cc/Code/Programmer2 ISP-Programmer für Arduino nach stk500'''v2'''-Protokoll]
*[http://playground.arduino.cc/Code/Programmer2 ISP-Programmer für Arduino nach stk500'''v2'''-Protokoll]
*[http://www.martyncurrey.com/arduino-atmega-328p-fuse-settings Gute Beschreibung einzelner Fuse-Bits]
*[http://www.martyncurrey.com/arduino-atmega-328p-fuse-settings Gute Beschreibung einzelner Fuse-Bits]
*[http://www.atmel.com/images/doc2545.pdf Datenblat ATMega168]
*[http://www.atmel.com/images/doc2545.pdf Datenblat ATMega168]
*[http://www.kreatives-chaos.com/artikel/avr-grundschaltungen AVR-Grundschaltungen]
*[http://www.mikrocontroller.net/articles/AVR_Bootloader_in_C_-_eine_einfache_Anleitung#Schritt_1_-_Konfiguration_der_Projekteinstellungen Anleitung für Booloader]
*[https://de.wikipedia.org/wiki/Intel_HEX Intel Hex-Format]


===Beschreibung===
===Beschreibung===
*ArduinoISP arbeitet mit 19200bps
*ATMega besser mit Quartz laufen lassen, ansonsten funktioniert möglicherweise die Kommunikation via SPI nicht
*ATMega besser mit Quartz laufen lassen, ansonsten funktioniert möglicherweise die Kommunikation via SPI nicht
*Achtung, Taktgeber nicht auf "external Clock" einstellen, dann muss der Takt von außen aktiv vorgegeben werden. Hilfe gibt es [http://www.nibo-roboter.de/wiki/Ausgesperrt hier]
*Achtung, Taktgeber nicht auf "external Clock" einstellen, dann muss der Takt von außen aktiv vorgegeben werden. Hilfe gibt es [http://www.nibo-roboter.de/wiki/Ausgesperrt hier]
===Chip erase===
<code>avrdude.exe -P COM6 -b 19200 -c arduino -p atmega168p -C ..\etc\avrdude.conf -e</code>


===Lesen/Schreiben von Fuses für ATMega168===
===Lesen/Schreiben von Fuses für ATMega168===
Zeile 38: Zeile 67:
| interner Oszillator ohne "clock division"          || 0xe2 ||      ||  
| interner Oszillator ohne "clock division"          || 0xe2 ||      ||  
|- valign="top"
|- valign="top"
| externer Oszillator                                 || 0xff ||      ||  
| externer Oszillator ohne "clock division"          || 0xff ||      ||
|- valign="top"
| externer Oszillator mit "clock division"            || 0x7f ||      ||  
|- valign="top"
|- valign="top"
| externer Oszillator "full swing"                    || 0xf7 ||      ||  
| externer Oszillator "full swing"                    || 0xf7 ||      ||  
|- valign="top"
|- valign="top"
| sichere High-Fuse                                   ||      || 0xdf ||  
| sichere High-Fuse (default)                        ||      || 0xdf ||  
|- valign="top"
|- valign="top"
| kein Bootloader                                     ||      ||      || 0xf9
| kein Bootloader (default)                          ||      ||      || 0xf9
|- valign="top"
|- valign="top"
| 1kb Bootloader                                      ||      ||      || 0xf8
| 1kb Bootloader                                      ||      ||      || 0xf8
Zeile 64: Zeile 95:


<code>avrdude.exe -P COM6 -b 19200 -c arduino -p atmega168p -C ..\etc\avrdude.conf -U flash:w:flash.hex:i</code>
<code>avrdude.exe -P COM6 -b 19200 -c arduino -p atmega168p -C ..\etc\avrdude.conf -U flash:w:flash.hex:i</code>
Auch das EEPROM kann ausgelesen werden: "eeprom" anstelle von "flash"


Lesen:
Lesen:


<code>avrdude.exe -P COM6 -b 19200 -c arduino -p atmega168p -C ..\etc\avrdude.conf -U flash:r:flash.hex:i</code>
<code>avrdude.exe -P COM6 -b 19200 -c arduino -p atmega168p -C ..\etc\avrdude.conf -U flash:r:flash.hex:i</code>
Auch das EEPROM kann beschrieben werden: "eeprom" anstelle von "flash"


==Quadrokopter==
==Quadrokopter==
Siehe [[Quadrokopter]]
Siehe [[Quadrokopter]]

Aktuelle Version vom 15. Februar 2017, 08:28 Uhr

Arduino allgemein[Bearbeiten]

Links[Bearbeiten]

Links zu Peripherie[Bearbeiten]

Arduino als In-System-Programmierer[Bearbeiten]

Links[Bearbeiten]

Beschreibung[Bearbeiten]

  • ArduinoISP arbeitet mit 19200bps
  • ATMega besser mit Quartz laufen lassen, ansonsten funktioniert möglicherweise die Kommunikation via SPI nicht
  • Achtung, Taktgeber nicht auf "external Clock" einstellen, dann muss der Takt von außen aktiv vorgegeben werden. Hilfe gibt es hier

Chip erase[Bearbeiten]

avrdude.exe -P COM6 -b 19200 -c arduino -p atmega168p -C ..\etc\avrdude.conf -e

Lesen/Schreiben von Fuses für ATMega168[Bearbeiten]

Read fuses:

avrdude.exe -P COM6 -b 19200 -c arduino -p atmega168p -C ..\etc\avrdude.conf

Write fuses:

avrdude.exe -P COM6 -b 19200 -c arduino -p atmega168p -C ..\etc\avrdude.conf -U lfuse:w:0xXX:m -U hfuse:w:0xXX:m -U efuse:w:0xXX:m

Werte für Fuses:

Funktion lfuse hfuse efuse
interner Oszillator mit "clock division" (default) 0x62
interner Oszillator ohne "clock division" 0xe2
externer Oszillator ohne "clock division" 0xff
externer Oszillator mit "clock division" 0x7f
externer Oszillator "full swing" 0xf7
sichere High-Fuse (default) 0xdf
kein Bootloader (default) 0xf9
1kb Bootloader 0xf8

Locking[Bearbeiten]

Dokumentation zu den Lock-Bits ist sehr dürftig. Über die Lock-Bits kann man sich aus dem Chip auch aussperren.

Entsperren:

avrdude.exe -P COM6 -b 19200 -c arduino -p atmega168p -C ..\etc\avrdude.conf -U lock:w:0x3F:m

Sperren:

avrdude.exe -P COM6 -b 19200 -c arduino -p atmega168p -C ..\etc\avrdude.conf -U lock:w:0x0F:m

Flashen[Bearbeiten]

Schreiben:

avrdude.exe -P COM6 -b 19200 -c arduino -p atmega168p -C ..\etc\avrdude.conf -U flash:w:flash.hex:i

Auch das EEPROM kann ausgelesen werden: "eeprom" anstelle von "flash"

Lesen:

avrdude.exe -P COM6 -b 19200 -c arduino -p atmega168p -C ..\etc\avrdude.conf -U flash:r:flash.hex:i

Auch das EEPROM kann beschrieben werden: "eeprom" anstelle von "flash"

Quadrokopter[Bearbeiten]

Siehe Quadrokopter