Isi kandungan:

AVR / Arduino Berkelip Dengan Raspberry Pi: 3 Langkah (dengan Gambar)
AVR / Arduino Berkelip Dengan Raspberry Pi: 3 Langkah (dengan Gambar)

Video: AVR / Arduino Berkelip Dengan Raspberry Pi: 3 Langkah (dengan Gambar)

Video: AVR / Arduino Berkelip Dengan Raspberry Pi: 3 Langkah (dengan Gambar)
Video: Amazing arduino project 2024, Julai
Anonim
AVR / Arduino Berkelip Dengan Raspberry Pi
AVR / Arduino Berkelip Dengan Raspberry Pi

Pengaturcara dalam sistem (ISP) adalah peranti yang boleh anda gunakan untuk memprogram banyak mikrokontroler, misalnya ATMega328p yang merupakan otak Arduino Uno. Anda boleh membeli sesuatu seperti USBtinyISP, atau menggunakan Arduino. Petunjuk ini akan menunjukkan kepada anda cara menggunakan Raspberry Pi sebagai ISP.

Program avrdude, yang digunakan oleh Arduino IDE di bawah tudung untuk menyalakan cip, boleh digunakan dengan banyak pengaturcara. Salah satu pilihannya adalah menggunakan pin SPI di port pengembangan Pi. Saya akan menerangkan bagaimana membuat sambungan yang sesuai, menyusun litar sederhana di papan wangi sehingga anda tidak perlu membuat semula pendawaian setiap kali anda ingin menyalakan cip, dan cara memasang dan menggunakan avrdude. Saya juga akan menunjukkan kepada anda bagaimana mendapatkan program yang disusun menggunakan Arduino IDE ke cip AVR seperti ATmega atau ATtiny menggunakan kaedah ini.

Perkara yang Diperlukan:

  • Raspberry Pi dengan Raspbian terbaru dipasang
  • Soket kepala lelaki 40-pin (atau 26-pin jika anda mempunyai Pi yang lebih tua)
  • Kabel IDE untuk menyambung ke Pi anda
  • Resonator kristal 16 MHz
  • 22 kapasitor pF (2)
  • LED (1) untuk menunjukkan status pengaturcara
  • Soket IC 8, 14, dan / atau 28 pin, bergantung pada bentuk cip yang anda mahu kilat
  • Beberapa papan wangi, wayar, pateri

Langkah 1: Membina Lekapan Cobbler

Membina Lekapan Cobbler
Membina Lekapan Cobbler
Membina Lekapan Cobbler
Membina Lekapan Cobbler
Membina Lekapan Cobbler
Membina Lekapan Cobbler

Serial Peripheral Interface (SPI), juga disebut siri empat dawai, adalah cara berkomunikasi antara satu peranti induk dan satu atau lebih peranti hamba. Kami akan menggunakannya untuk flash chip, dengan Pi sebagai master dan chip sebagai hamba. Anda akan membuat hubungan berikut antara Pi dan cip anda (lihat pinout di atas untuk pelbagai port pengembangan AVR dan Pi untuk mengetahui pin mana):

  • Sambungkan pin MOSI (master-out-slave-in) bersama-sama
  • Sambungkan pin SCLK (jam bersama) bersama-sama
  • Sambungkan pin MISO (master-in-slave-out) bersama dengan perintang 220 Ohm, untuk melindungi Pi dari voltan tinggi yang tidak dijangka dari cip
  • Sambungkan GPIO 25 pada Pi terus ke pin RESET pada cip. Pi menarik pin ini rendah ketika memprogram, jadi kami menggunakan resistor 10K untuk tetap tinggi ketika tidak diprogramkan, dan LED dengan perintang perlindungan 1K berjalan ke voltan positif untuk memberi kami maklum balas visual yang bagus ketika sedang memprogram.

Kami menyambungkan pin ground dan power (3.3V) antara Pi dan cip yang ingin kami atur. Sekiranya anda belum tahu, pin Raspberry Pi tidak bertoleransi 5V - ia akan rosak jika terdapat lebih daripada 3.3V di atasnya. Sekiranya cip yang diprogramkan memerlukan kuasa 5V untuk beberapa sebab, kita boleh menggunakan cip pergeseran level untuk melindungi pin Pi, tetapi saya tidak menghadapi masalah menggunakan 3.3V - jadi saya cadangkan bermain dengan selamat dan simpan komponen.

Terakhir, kami menyambungkan pengayun kristal 16MHz melintasi pin XTAL pada cip, yang juga kami sambungkan ke tanah melalui beberapa kapasitor 22pF. Cip AVR dapat diatur untuk berjalan pada frekuensi yang berbeda, dan juga dapat diatur untuk menggunakan sumber dalaman atau luaran untuk menentukan frekuensi tersebut. Sekiranya cip anda diatur untuk menggunakan kristal luaran sebagai sumber frekuensi, anda tidak akan dapat memprogram semula tanpanya. Jika tidak, tidak menjadi masalah sama ada ia ada.

Anda boleh menggunakan skema litar pada gambar terakhir sebagai panduan untuk memasang lampiran tukang kasut anda di papan wap. Anda boleh mempunyai seberapa banyak atau sesedikit bentuk soket IC yang anda mahukan, sambungkan pin yang sesuai selari dengan Pi dan kristal. N. B. jika anda menggunakan gambar prototaip saya sebagai panduan, perhatikan bahawa saya telah menambahkan beberapa pin header dan soket tambahan sehingga saya dapat mengakses pin pada Pi untuk alasan yang tidak berkaitan.

Langkah 2: Memasang dan Menggunakan Avrdude

Memasang dan Menggunakan Avrdude
Memasang dan Menggunakan Avrdude
Memasang dan Menggunakan Avrdude
Memasang dan Menggunakan Avrdude
Memasang dan Menggunakan Avrdude
Memasang dan Menggunakan Avrdude
Memasang dan Menggunakan Avrdude
Memasang dan Menggunakan Avrdude

Untuk memasang avrdude pada Pi anda, ketik sahaja

sudo apt-get install avrdude

Anda kemudian perlu mengaktifkan antara muka SPI, jika belum dihidupkan. Terdapat kaedah baris perintah untuk melakukan ini, tetapi lebih mudah menggunakan alat konfigurasi Raspberry Pi. Jenis

sudo raspi-config

dan pergi ke Pilihan Antaramuka untuk menghidupkan SPI.

Untuk menyalakan cip anda, pasangkan kabel pita dari Pi anda ke penyambung pada litar perfboard dan masukkan cip ke soket IC yang sesuai (pastikan ia menghadap ke arah yang betul).

Semasa mem-flash program, anda juga mesti memastikan bahawa sekering di cip dengan betul. Ini sebenarnya hanya bit dalam cip yang anda tetapkan untuk memberitahunya kelajuan jam untuk berjalan, sama ada untuk menghapus EEPROM semasa menulis cip, dll. Anda boleh membaca spesifikasi AVR penuh untuk mengetahui cara menetapkan setiap bit, tetapi lebih mudah menggunakan kalkulator fius yang disediakan di engbedded.com/fusecalc. Pilih nama bahagian AVR yang anda gunakan dan pilih pilihan yang anda mahukan di kawasan "Pemilihan Ciri". Saya biasanya memastikan tetapan jam betul dan membiarkan perkara lain lalai. Anda hampir selalu mahu meninggalkan "Pengaturcaraan bersiri diaktifkan" DIPERIKSA dan "Tetapkan Semula Dinyahdayakan" TIDAK DITETAPKAN - jika tidak, anda tidak akan dapat memprogramkan semula cip tersebut. Apabila anda mempunyai tetapan yang tepat, anda boleh menatal ke bawah kawasan "Tetapan Semasa" dan menyalin argumen AVRDUDE seperti yang ditunjukkan dalam gambar.

Untuk menetapkan sekering, masukkan perintah

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

di mana nama bahagian sepadan dengan cip yang anda gunakan. Anda boleh mendapatkan senarai nama bahagian dengan memasukkan jenis sudo ardude -c linuxspi -p? Untuk mem-flash program anda, pastikan itu ada di direktori semasa anda dan masukkan

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

Selepas kedua-dua arahan, LED akan menyala semasa cip sedang diubah.

Langkah 3: Mendapatkan Program Arduino Ke AVR

Mendapatkan Program Arduino Ke AVR
Mendapatkan Program Arduino Ke AVR
Mendapatkan Program Arduino Ke AVR
Mendapatkan Program Arduino Ke AVR
Mendapatkan Program Arduino Ke AVR
Mendapatkan Program Arduino Ke AVR

Fokus utama arahan ini adalah memancarkan program yang sudah disusun ke cip, bukan cara menulis atau menyusunnya. Walau bagaimanapun, saya ingin menerangkan bagaimana anda dapat menyusun binari menggunakan Arduino IDE dan memasukkannya ke cip AVR kosong menggunakan kaedah ini, kerana Arduino agak mudah dipelajari dan terdapat begitu banyak tutorial dan contoh.

Pertama, anda perlu menambahkan maklumat mengenai cip AVR yang akan anda flash sehingga IDE tahu bagaimana menyusunnya. James Sleeman sangat membantu mengumpulkan beberapa fail persediaan, yang terdapat di github. Untuk menggunakannya, buka menu "Keutamaan" di Arduino IDE dan klik kotak di sebelah medan "URL Pengurus Papan Tambahan". Salin dan tampal URL berikut di kotak dialog yang muncul:

Kemudian, pergi ke menu "Alat" dan cari pilihan "Pengurus Papan …" di submenu "Papan". Tatal ke bawah senarai di kotak dialog Pengurus Papan dan pasang papan DIY ATmega dan DIY ATtiny.

Untuk menyusun program anda, pastikan terlebih dahulu anda memilih cip yang betul di menu "Processor", serta Speed Processor yang betul. Pilih pilihan "Gunakan Bootloader: Tidak", kerana kami akan memuat naik langsung dengan Pi dan dengan demikian dapat menggunakan ruang tambahan yang biasanya akan diambil oleh bootloader Arduino. Sekarang, klik butang "Sahkan" (tanda semak). Ini akan menyusun program anda tanpa cuba memuat naiknya (kerana anda melakukan langkah itu sendiri).

Dengan andaian semuanya berjalan lancar, anda sekarang perlu mendapatkan program yang disusun ke Pi anda. IDE menyembunyikannya di lokasi sementara, kerana ia dirancang untuk memuat naik program itu sendiri. Pada Windows, itu ada di AppData / Local / Temp di direktori pengguna anda, dalam folder yang dimulai dengan 'arduino_build'. Cari fail.hex - itulah program anda! Hantarkannya ke Pi anda melalui FTP atau dengan tongkat USB, dan anda berniaga.

Melakukan ini memerlukan anda mempunyai PC Windows atau Mac untuk menyusun program anda, yang kemudian anda hantar ke Pi. Sangat sukar untuk melakukan ini pada Pi sendiri, tetapi sayangnya versi rasmi dari Arduino IDE yang terdapat di repositori Raspbian agak lama dan tidak mempunyai Pengurus Dewan. Tanpa ini, menambahkan tetapan yang sesuai untuk menyusun AVR kosong agak sukar. Terdapat tutorial di luar sana untuk menyusun versi Arduino yang lebih baru pada Pi anda - jika itu yang anda mahu lakukan, cari mereka! Saya juga merasakan bahawa IDE menggunakan pengaturcara linuxspi untuk mengeluarkan cip dari dalam IDE itu sendiri (iaitu menggunakan butang "muat turun"), tetapi ini melebihi tahap kesabaran dan kemahiran saya - jika anda mengetahui caranya, hantarkan di komen! Terakhir, anda hanya boleh menulis program secara langsung dalam AVR-C dan menyusunnya di Pi dengan avr-gcc, memberikan anda platform pengembangan AVR lengkap di Raspberry Pi. Saya telah melakukan sedikit perkara itu, dan jika anda ingin pergi ke sana, saya memberi salam. Berkelip!

Disyorkan: