Talaan ng mga Nilalaman:

AVR / Arduino Flashing With Raspberry Pi: 3 Hakbang (na may Mga Larawan)
AVR / Arduino Flashing With Raspberry Pi: 3 Hakbang (na may Mga Larawan)

Video: AVR / Arduino Flashing With Raspberry Pi: 3 Hakbang (na may Mga Larawan)

Video: AVR / Arduino Flashing With Raspberry Pi: 3 Hakbang (na may Mga Larawan)
Video: How to use 4 channel Relay to control AC load with Arduino code 2024, Hulyo
Anonim
AVR / Arduino Flashing With Raspberry Pi
AVR / Arduino Flashing With Raspberry Pi

Ang isang in-system programmer (ISP) ay isang aparato na maaari mong gamitin upang mai-program ang maraming mga microcontroller, halimbawa ang ATMega328p na utak ng isang Arduino Uno. Maaari kang bumili ng isang bagay tulad ng isang USBtinyISP, o maaari mo ring gamitin ang isang Arduino. Ipapakita sa iyo ng itinuturo na ito kung paano gumamit ng isang Raspberry Pi bilang isang ISP.

Ang avrdude program, na kung saan ay ang ginagamit ng Arduino IDE sa ilalim ng hood sa flash chips, maaaring magamit sa maraming mga programmer. Isa sa mga pagpipilian nito ay ang paggamit ng mga SPI pin sa port ng pagpapalawak ng Pi. Ipapaliwanag ko kung paano gawin ang mga naaangkop na koneksyon, pagsama-samahin ang isang simpleng circuit sa perfboard upang hindi mo kailangang gawing muli ang mga kable sa tuwing nais mong mag-flash ng isang maliit na tilad, at kung paano mag-install at gumamit ng avrdude. Ipapakita ko rin sa iyo kung paano makakuha ng mga program na naipon gamit ang Arduino IDE sa isang AVR chip tulad ng isang ATmega o ATtiny na gumagamit ng pamamaraang ito.

Mga bagay na Kailangan:

  • Raspberry Pi na may pinakabagong naka-install na Raspbian
  • 40-pin male header socket (o 26-pin kung mayroon kang isang mas matandang Pi)
  • IDE cable upang kumonekta sa iyong Pi
  • 16 MHz crystal resonator
  • 22 pF capacitor (2)
  • LED (1) upang ipahiwatig ang katayuan ng programmer
  • 8, 14, at / o 28 pin IC sockets, depende sa kung anong hugis ng chips ang nais mong i-flash
  • Ang ilang mga perfboard, wires, solder

Hakbang 1: Pagbuo ng Cobbler Attachment

Pagbuo ng Cobbler Attachment
Pagbuo ng Cobbler Attachment
Pagbuo ng Cobbler Attachment
Pagbuo ng Cobbler Attachment
Pagbuo ng Cobbler Attachment
Pagbuo ng Cobbler Attachment

Ang Serial Peripheral Interface (SPI), na tinatawag ding four-wire serial, ay isang paraan ng pakikipag-usap sa pagitan ng isang solong master device at isa o higit pang mga aparato ng alipin. Gagamitin namin ito upang mag-flash chip, kasama ang Pi bilang master at ang chip bilang alipin. Gagawin mo ang mga sumusunod na koneksyon sa pagitan ng Pi at ng iyong maliit na tilad (tingnan ang mga pinout sa itaas para sa iba't ibang mga port ng pagpapalawak ng AVR at Pi upang malaman kung aling mga pin ang alinman):

  • Ikonekta ang mga pin ng MOSI (master-out-slave-in) na magkasama
  • Ikonekta ang mga SCLK (nakabahaging orasan) na mga pin nang magkasama
  • Ikonekta ang mga MISO (master-in-slave-out) na mga pin kasama ang isang 220 Ohm resistor, upang maprotektahan ang Pi mula sa anumang hindi inaasahang mataas na voltages mula sa maliit na tilad
  • Ikonekta ang GPIO 25 sa Pi nang direkta sa RESET pin sa maliit na tilad. Hinihila ng Pi ang pin na ito nang mababa kapag nag-program, kaya gumagamit kami ng isang resistor na 10K upang mapanatili itong mataas kapag hindi nag-program, at isang LED na may isang resistor ng proteksyon na 1K na tumatakbo sa positibong boltahe upang bigyan kami ng ilang magagandang visual feedback kapag ito ay nag-program.

Ikonekta namin ang mga pin ng lupa at kapangyarihan (3.3V) sa pagitan ng Pi at ng mga chips na nais naming i-program. Kung sakaling hindi mo pa alam, ang mga pin ng Raspberry Pi ay hindi mapagparaya sa 5V - masisira sila kung higit sa 3.3V ang lilitaw sa kanila. Kung ang mga chips na na-program na kailangan ng 5V na kapangyarihan para sa ilang kadahilanan, maaari kaming gumamit ng isang antas ng shifter chip upang maprotektahan ang mga pin ng Pi, ngunit hindi ako nasagasaan sa anumang mga problema sa paggamit ng 3.3V - kaya inirerekumenda kong i-play ito nang ligtas at nagse-save sa mga bahagi.

Panghuli, kumokonekta kami ng isang 16MHz crystal oscillator sa mga XTAL na pin sa maliit na tilad, na kumokonekta din sa lupa sa pamamagitan ng isang pares ng 22pF capacitors. Ang AVR chips ay maaaring itakda upang tumakbo sa iba't ibang mga frequency, at maaari ring itakda upang magamit ang isang panloob o panlabas na mapagkukunan upang matukoy ang dalas na iyon. Kung ang iyong maliit na tilad ay nakatakda na gumamit ng isang panlabas na kristal bilang mapagkukunan ng dalas nito, hindi mo magagawang muling magprogram nang wala ito. Kung hindi man ay hindi mahalaga kung nandiyan ito.

Maaari mong gamitin ang circuit eskematiko sa huling imahe bilang isang gabay sa pag-assemble ng iyong cobbler attachment sa perfboard. Maaari kang magkaroon ng maraming o ilang iba't ibang mga hugis ng mga socket ng IC na gusto mo, ikonekta lamang ang mga naaangkop na pin nang kahanay ng Pi at ng kristal. Ang N. B. kung gagamitin mo ang imahe ng aking prototype bilang isang gabay, tandaan na nagdagdag ako ng ilang sobrang mga pin ng header at socket upang ma-access ko ang mga pin sa Pi para sa mga walang kaugnayang kadahilanan.

Hakbang 2: Pag-install at Paggamit ng Avrdude

Pag-install at Paggamit ng Avrdude
Pag-install at Paggamit ng Avrdude
Pag-install at Paggamit ng Avrdude
Pag-install at Paggamit ng Avrdude
Pag-install at Paggamit ng Avrdude
Pag-install at Paggamit ng Avrdude
Pag-install at Paggamit ng Avrdude
Pag-install at Paggamit ng Avrdude

Upang mai-install ang avrdude sa iyong Pi, i-type lang

sudo apt-get install avrdude

Kakailanganin mong paganahin ang interface ng SPI, kung hindi pa ito nakabukas. Mayroong isang command-line na paraan upang magawa ito, ngunit mas madaling gamitin ang tool na pagsasaayos ng Raspberry Pi. Uri

sudo raspi-config

at pumunta sa Mga Pagpipilian sa Interface upang i-on ang SPI.

Upang mai-flash ang iyong maliit na tilad, i-plug ang ribbon cable mula sa iyong Pi sa konektor sa perfboard circuit at ipasok ang maliit na tilad sa naaangkop na socket ng IC (tiyaking nakaharap ito sa tamang paraan).

Kapag nag-flashing ng isang programa, dapat mo ring tiyakin na itakda nang tama ang mga piyus sa maliit na tilad. Ang mga ito ay talagang mga piraso lamang sa maliit na tilad na iyong itinakda upang sabihin dito kung anong bilis ng orasan ang tatakbo, kung burahin ang EEPROM kapag sinusulat ang maliit na tilad, atbp. Maaari mong basahin ang buong detalye ng AVR upang malaman kung paano itakda ang bawat kaunti, ngunit mas madaling gamitin ang fuse calculator na ibinigay sa engbedded.com/fusecalc. Piliin ang pangalan ng bahagi ng AVR na iyong ginagamit at pumili ng mga pagpipilian na nais mo sa lugar na "Pagpili ng Tampok". Kadalasan ay nasisiguro ko lamang na ang mga setting ng orasan ay tama at iwanan ang iba pang mga bagay sa default. Halos palagi mong gugustuhing iwan ang "Pinagana ang Serial program" na naka-check na at "I-reset ang Hindi pinagana" na UNCHKOED - kung hindi man ay hindi mo magagawang i-reprogram ang maliit na tilad. Kapag mayroon kang mga tamang setting, maaari kang mag-scroll pababa sa lugar na "Kasalukuyang Mga Setting" at kopyahin ang mga argumentong AVRDUDE tulad ng ipinakita sa imahe.

Upang maitakda ang mga piyus, ipasok ang utos

sudo avrdude -c linuxspi -P /dev/spidev0.0 -p

kung saan tumutugma ang partname sa chip na iyong ginagamit. Maaari mong makita ang listahan ng mga pangalan ng bahagi sa pamamagitan ng pagpasok ng uri ng sudo ardude -c linuxspi -p? Upang mai-flash ang iyong programa, tiyaking nasa iyong kasalukuyang direktoryo ito at ipasok

sudo avrdude -c linuxspi -P /dev/spidev0.0 -p -U flash: w:: i

Matapos ang parehong mga utos, ang LED ay ilaw habang ang maliit na tilad ay binago.

Hakbang 3: Pagkuha ng Mga Programang Arduino Sa Mga AVR

Pagkuha ng Mga Programang Arduino Sa Mga AVR
Pagkuha ng Mga Programang Arduino Sa Mga AVR
Pagkuha ng Mga Programang Arduino Sa Mga AVR
Pagkuha ng Mga Programang Arduino Sa Mga AVR
Pagkuha ng Mga Programang Arduino Sa Mga AVR
Pagkuha ng Mga Programang Arduino Sa Mga AVR

Ang pangunahing pokus ng pagtuturo na ito ay ang pag-flash ng mga naka-compile na mga programa sa mga chips, hindi kung paano isulat o i-compile ang mga ito. Gayunpaman, nais kong ipaliwanag kung paano mo maiipon ang mga binary na gumagamit ng Arduino IDE at dalhin sila sa mga hubad na AVR chip gamit ang pamamaraang ito, dahil ang Arduino ay medyo madaling malaman at maraming mga tutorial at halimbawa.

Una, kakailanganin mong magdagdag ng impormasyon tungkol sa mga AVR chip na iyong mai-flashing upang malaman ng IDE kung paano sumulat para sa kanila. Si James Sleeman ay nakakatulong na pinagsama ang ilang mga file ng pag-setup, na magagamit sa github. Upang magamit ang mga ito, buksan ang menu na "Mga Kagustuhan" sa Arduino IDE at i-click ang kahon sa tabi ng patlang na "Mga Karagdagang Boards Manager URL". Kopyahin at i-paste ang mga sumusunod na URL sa lalabas na dialog box:

Pagkatapos, pumunta sa menu na "Mga Tool" at hanapin ang pagpipiliang "Boards Manager …" sa submenu na "Board". Mag-scroll pababa sa ilalim ng listahan sa dialog box ng Boards Manager at i-install ang DIY ATmega at DIY ATtiny boards.

Upang maipon ang iyong mga programa, siguraduhin muna na napili mo ang tamang chip sa menu na "Processor", pati na rin ang wastong Proseso ng Bilis. Piliin ang opsyong "Gumamit ng Bootloader: Hindi", dahil direkta kaming mai-a-upload sa Pi at sa gayon ay maaaring magamit ang labis na puwang na karaniwang kukuha ng Arduino bootloader. Ngayon, i-click ang pindutang "I-verify" (ang marka ng tseke). Susubukan nito ang iyong programa nang hindi sinusubukan na i-upload ito (dahil ginagawa mo mismo ang hakbang na iyon).

Ipagpalagay na ang lahat ay maayos, kailangan mo na ngayong makuha ang naipon na programa sa iyong Pi. Itinatago ng IDE ang mga ito sa isang pansamantalang lokasyon, dahil dinisenyo ito upang mag-upload ng mga programa mismo. Sa Windows, nasa AppData / Local / Temp ito sa iyong direktoryo ng gumagamit, sa isang folder na nagsisimula sa 'arduino_build'. Hanapin ang.hex file - iyan ang iyong programa! Ipadala ito sa iyong Pi sa pamamagitan ng FTP o may isang USB stick, at nasa negosyo ka.

Ang paggawa nito ay nangangailangan ng mayroon kang isang Windows PC o Mac upang maipon ang iyong mga programa, na pagkatapos ay ipadala mo sa Pi. Ito ay talagang makinis na magagawa ito sa mismong Pi, ngunit sa kasamaang palad ang opisyal na bersyon ng Arduino IDE na magagamit sa Raspbian repository ay medyo luma at walang Board Manager. Kung wala ito, ang pagdaragdag ng naaangkop na mga setting upang mag-ipon para sa mga hubad na AVR ay medyo mahirap. Mayroong mga tutorial doon para sa pag-iipon ng isang pinakabagong bersyon ng Arduino sa iyong Pi - kung iyon ang nais mong gawin, hanapin mo sila! Nararamdaman ko rin na dapat posible upang makuha ang IDE upang magamit ang programmer ng linuxspi upang mag-flash ng isang maliit na tilad mula sa loob mismo ng IDE (ie gamit ang pindutang "i-download"), ngunit lampas ito sa aking pasensya at antas ng kasanayan - kung alam mo ang isang paraan, i-post ito sa mga komento! Panghuli, maaari mo lamang isulat ang mga programa nang direkta sa AVR-C at ipagsama ang mga ito sa Pi gamit ang avr-gcc, na magbibigay sa iyo ng isang kumpletong platform ng pag-unlad ng AVR sa Raspberry Pi. Nagawa ko na ang maliit na piraso ng iyon, at kung nais mong pumunta sa rutang iyon, saludo ako sa iyo. Kumuha ng flashing!

Inirerekumendang: