Arduino: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
|||
| (40 dazwischenliegende Versionen von 11 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== | ||
===Links=== | ===Links=== | ||
*[http://www.heise.de/make/artikel/Arduino-Uno-als-In-System-Programmer-2769246.html Arduino als In-System-Programmierer] | *[http://www.heise.de/make/artikel/Arduino-Uno-als-In-System-Programmer-2769246.html Arduino als In-System-Programmierer] | ||
*[http://www.thoralt.de/wiki/index.php/Firmware_flashen Firmware flashen] | |||
*[http://phaq.phunsites.net/2013/09/12/use-arduino-micro-as-isp-with-atmega-on-a-breadboard Arduino Micro as ISP] | |||
*[https://www.arduino.cc/en/Tutorial/ArduinoToBreadboard From Arduino to a Microcontroller on a Breadboard] | |||
*[http://www.mikrocontroller.net/articles/AVR_Fuses Tipps zu AVR Fuses] | |||
*[http://www.engbedded.com/fusecalc Einstellhilfe für AVR Fuses] | |||
*[http://www.mikrocontroller.net/articles/AVR Microcontroller.net: AVR] | |||
*[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] | |||
*[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.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] | |||
===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=== | |||
Read fuses: | |||
<code>avrdude.exe -P COM6 -b 19200 -c arduino -p atmega168p -C ..\etc\avrdude.conf</code> | |||
Write fuses: | |||
<code>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</code> | |||
Werte für Fuses: | |||
{| class="wikitable" | |||
! Funktion !! lfuse !! hfuse !! efuse | |||
|- valign="top" | |||
| interner Oszillator mit "clock division" (default) || 0x62 || || | |||
|- valign="top" | |||
| interner Oszillator ohne "clock division" || 0xe2 || || | |||
|- valign="top" | |||
| externer Oszillator ohne "clock division" || 0xff || || | |||
|- valign="top" | |||
| externer Oszillator mit "clock division" || 0x7f || || | |||
|- valign="top" | |||
| externer Oszillator "full swing" || 0xf7 || || | |||
|- valign="top" | |||
| sichere High-Fuse (default) || || 0xdf || | |||
|- valign="top" | |||
| kein Bootloader (default) || || || 0xf9 | |||
|- valign="top" | |||
| 1kb Bootloader || || || 0xf8 | |||
|} | |||
===Locking=== | |||
Dokumentation zu den Lock-Bits ist sehr dürftig. Über die Lock-Bits kann man sich aus dem Chip auch aussperren. | |||
Entsperren: | |||
<code>avrdude.exe -P COM6 -b 19200 -c arduino -p atmega168p -C ..\etc\avrdude.conf -U lock:w:0x3F:m</code> | |||
Sperren: | |||
<code>avrdude.exe -P COM6 -b 19200 -c arduino -p atmega168p -C ..\etc\avrdude.conf -U lock:w:0x0F:m</code> | |||
===Flashen=== | |||
Schreiben: | |||
<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: | |||
<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]] | |||
Aktuelle Version vom 15. Februar 2017, 08:28 Uhr
Arduino allgemein[Bearbeiten]
Links[Bearbeiten]
- Schnelleres GPIO auf dem Arduino
- Inline Assembler
- Konstanten im Flash ablegen
- Fixed Point Zahlen in C
Links zu Peripherie[Bearbeiten]
- nRF24L01 wireless tranceiver
- Tutorial nRF24L01 and AVR
- Very detailed tutorial for nRF24L01
- Secure Digital (SD) Card Simplified Spec
- Secure Digital (SD) Card Spec and Info
- How to Use MMC/SDC
- Understanding FAT32 Filesystems
- FAT-Filesystem
- How FAT works
- Schieberegister 74HC595
- Ansteuerung des WS2812
Arduino als In-System-Programmierer[Bearbeiten]
Links[Bearbeiten]
- Arduino als In-System-Programmierer
- Firmware flashen
- Arduino Micro as ISP
- From Arduino to a Microcontroller on a Breadboard
- Tipps zu AVR Fuses
- Einstellhilfe für AVR Fuses
- Microcontroller.net: AVR
- ATMega168 Pin-Layout, mit Arduino-Mapping
- Arduino Micro Pin-Layout
- ISP-Programmer für Arduino nach stk500v2-Protokoll
- Gute Beschreibung einzelner Fuse-Bits
- Datenblat ATMega168
- AVR-Grundschaltungen
- Anleitung für Booloader
- Intel Hex-Format
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