Quadcopterio gamyba – 2 dalis (firmware įkrovimas)
Šioje dalyje papasakosiu kaip teisingai užprogramuoti arducopter mikrokontrolerius.
Darbinė versija
Atsisiusti dabartinę arducopter versiją iš čia
Programavimo aplinka
Jei ketinate daryti pakeitimus teks atsiusti Arduino IDE
Atmega2560 programavimas
Šis mikrokontroleris skirtas visam stabilizavimo darbui atlikti.
Vėl opensource ypatumai – kadangi produktas pakankamai sudėtingas, spėju niekas jo pats negamina. Niekur neradau kaip teisingai įkelti firmware. Išbandžiau kelis variantus, tačiau kad pilnai veiktų booloaderis padaryti nepavyko. Kažkodėl neįrašo kodo į flash atmintį.
Bandžiau:
cd \ardupilot_mega\ardupilot-mega\Tools\APM2_2560_bootloader\ make mega2560 avrdude -e -c stk500v2 -p m2560 -P com4 -U lock:w:0x3f:m avrdude -e -c stk500v2 -p m2560 -P com4 -U lfuse:w:0xFF:m -U hfuse:w:0xD8:m -U efuse:w:0xFD:m avrdude -v -c stk500v2 -p m2560 -P com4 -U flash:w:stk500boot_v2_mega2560.hex avrdude -c stk500v2 -p m2560 -P com4 -U lock:w:0x0f:m
Kitas bandymas buvo kiek sėkmingesnis, nes ArdupilotMegaPlanner pradėjo šnėketis su plokšte. Firmware.hex imtas iš \ardupilot-mega\Tools\ArdupilotMegaPlanner\bin\Release\ katalogo.
avrdude -e -c stk500v2 -p m2560 -P com4 -U lfuse:w:0xFF:m -U hfuse:w:0xD8:m -U efuse:w:0xFD:m avrdude -v -c stk500v2 -p m2560 -P com4 -U flash:w:firmware.hex
O taip tikrindavau ką booloaderis šrašė į mikrokontrolerį. Komanda skirta nuskaityti firmware:
avrdude -v -c stk500v2 -p m2560 -P com4 -U flash:r:firmware1.hex:i
Atmega2560 programavimas (teisingesnis variantas)
Kitas būdas, nors irgi nėra labai teisingas, tačiau veikia su bootloaderiu.
- Parsisūsti nauja firmware, kuris buvo originalioje plokštėje.
- Jį įrašyti į MEGA2560
avrdude -v -c stk500v2 -p m2560 -P com4 -U flash:w:firmware_m2560_boot_fresh.hex
- Iš AMP įkelti naują firmware pagal skraidyklės tipą.
Atmega328p programavimas
Šis mikrokontroleris skirtas PPM/Servo PWM įėjimui apdoroti. Vienitelė funkcija atskirta nuo Atmega2560.
Programuojant šį kilo didžiausių nesusipratimų. Šviesos diodas lyg ir mirgsejo kaip nurodyta aprašyme, tačiau ArdupilotMegaPlanner nematė valdymo signalų. Kitą dieną suradau kombinacija, kuri veikė. Tiesa įvykdžius paskutinę eilutę veikti nustodavo.
avrdude -e -c stk500v2 -p m328p -P com4 -U lock:w:0xFF:m avrdude -e -c stk500v2 -p m328p -P com4 -U hfuse:w:0xDF:m -U lfuse:w:0xFF:m -U efuse:w:0xFE:m avrdude -e -c stk500v2 -p m328p -P com4 -U flash:w:Encoder-PPM.hex avrdude -e -c stk500v2 -p m328p -P com4 -U lock:w:0xCF:m