Memprogram ATMega328P dan menggunakannya tanpa papan Arduino

13

Saya ingin menggunakan ATMega328P untuk proyek saya, saya berharap dapat melakukannya tanpa papan Arduino.

Saya tahu dengan Arduino IDE dan papan Arduino saya dapat memprogram mikrokontroler. Namun, apakah mungkin setelah saya memprogram dan men-debug program dengan papan Arduino IDE + Arduino, untuk mengambil mikrokontroler dari papan Arduino dan menggunakan ATMega328P secara terpisah, tanpa papan?

Jika ya, konfigurasi tambahan apa yang harus saya lakukan ATMega328P agar berfungsi dengan benar di papan tempat memotong roti?

George
sumber
Gunakan ATMEGA328 P-PU dengan Arduino UNO bootloader .... Anda dapat menemukannya di toko hobi dan online dan lainnya and
Arthur
Menggunakan chip telanjang benar-benar layak dan tidak ada masalah apa pun.
dannyf
Ini bukan pertanyaan yang sama dengan Anda tetapi Anda mungkin mendapatkan sedikit informasi dari itu. arduino.stackexchange.com/questions/32970/…
Code Gorilla
Anda dapat mengikuti jawaban dari Pertanyaan Ini
Rashedul Islam Emon

Jawaban:

7

Anda dapat menghapus ATMEGA dari Arduino dan menggunakannya di papan Anda sendiri, namun ketika digunakan pada papan Arduino khas, chip tersebut akan menyatu untuk kristal eksternal sebagai sumber jam, daripada jam internal (lebih sederhana tapi kurang akurat).

Anda tidak dapat mengubah sumber jam dari ISP kecuali jika sumber jam yang diharapkan oleh chip saat ini adalah operasional, jadi jika Anda ingin mengubah pilihan jam Anda ingin melakukannya sebelum mengeluarkan chip dari Arduino.

Namun, Anda juga dapat menyediakan kristal jam dan dua kapasitornya (atau resonator pengganti yang sering memiliki built in ini) di papan eksternal Anda.

Biasanya chip (bahkan yang sudah di-flash dengan bootloader sebagai kenyamanan) lebih murah daripada board, jadi tidak jelas mengapa Anda ingin memindahkan chip yang sama dari Arduino daripada menggunakan yang lain. Anda tetap menginginkan adaptor serial level USB-logis, dan begitu Anda memilikinya, Anda dapat melakukan pengembangan pada chip kosong di papan Anda, bahkan jika Anda melakukan pengujian awal pada Arduino. Dalam keadaan darurat jika Anda tidak memiliki konverter USB, Anda dapat menarik keluar chip dari papan Arduino dan menjalankan kabel dari D1 dan D0, atau menahan chip on-board di reset untuk memungkinkan Anda meminjam garis serial tanpa gangguan.

Chris Stratton
sumber
1
Ide saya adalah hanya menggunakan mikrokontroler tanpa papan. Karena mudah memprogram Arduino, saya pikir saya dapat memilih ATMega. Jadi, saya punya Arduino uno, ide saya adalah membeli hanya satu ATMega dan memprogram dan men-debug menggunakan uno board. Namun, saya baru saja menyadari bahwa jika saya memisahkan ATMega dari Arduino, saya perlu menambahkan komponen (kristal, tarik resitances ..). Bisakah Anda jelaskan apa yang Anda maksud pada paragraf terakhir dari posting Anda? Apakah ada cara sederhana untuk memprogram secara langsung ATMega (atau mikrokontroler lainnya) tanpa menggunakan arduino IDE? Terima kasih.
George
Meskipun Anda dapat melewatkan IDE, menggunakannya atau tidak pada dasarnya tidak relevan dengan kompleksitas sirkuit Anda, karena Anda dapat menggunakan IDE atau tidak dengan sirkuit yang memiliki atau tidak memiliki jam eksternal dan menggunakan USB. serial pada papan target Anda, pada kabel, atau dengan memprogram sketsa Anda dengan programmer ISP. Mencabut chip dari papan memberi Anda apa-apa dibandingkan dengan hanya membeli chip baik dengan bootloader atau tanpa dan memuatnya sendiri, berpotensi menggunakan Arduino Anda yang utuh sebagai programmer ISP, atau menggunakan ISP untuk langsung memuat sketsa Anda tanpa bootloader.
Chris Stratton
7

Ya, Anda dapat menggunakan ATMega328Ptanpa arduino board. Saya selalu menggunakan IC tanpa Arduino. Ada dua cara untuk melakukannya.

  1. Anda dapat menggunakan papan Arduino dengan IC. Program IC dan kemudian keluarkan dan gunakan di sirkuit Anda. Anda harus menggunakan 16MHZ Oscillatorkapasitor.
  2. Jika Anda tidak memiliki papan Arduino, Anda dapat menggunakan programer lain USBaspuntuk memprogram Atmega328p. Dalam hal ini, jangan gunakan tombol unggah langsung melainkan gunakan unggah menggunakan opsi programmer dari menu file. Jangan lupa untuk memilih board as Arduino Pro or Pro Mini (5v, 16mhz) With ATmega328dan programmer as USBasp.

CATATAN : Lihat Atmega328p Pin Mapping dan program perangkat Anda sesuai. Nikmati!

Pesawat terbang
sumber
2

Telusuri "Bangun Arduino" - Anda akan menemukan banyak artikel tentang cara melakukan hal itu. Anda harus dapat menyolder koneksi pada papan sirkuit tercetak (dan bahkan jika Anda ingin menggunakan papan tempat memotong roti tanpa solder), tetapi ini sangat mudah. Anda bahkan dapat membangunnya terlebih dahulu dan memprogram MCU pada PCB menggunakan kabel FTDI. Saya menggunakan papan Arduino dan papan tempat memotong roti tanpa solder untuk bereksperimen dengan bagian-bagian yang tidak dikenal, tetapi saya biasanya langsung pergi ke papan buatan tangan begitu saya terbiasa dengan semua komponen yang akan saya gunakan.

Prototyping dengan papan Arduino memungkinkan Anda mengumpulkan banyak bagian dan membuat sesuatu bekerja dengan cepat, dan jika Arduino lebih mampu daripada target akhir Anda - f / ex, Mega 2650 - Anda untuk sementara waktu dapat mengabaikan memori dan kendala I / O perangkat yang lebih kecil.

JRobert
sumber
0

Cukup mudah untuk menggunakan chip Arduino mandiri. Satu hal yang rumit tentang chip yang digunakan untuk papan resmi adalah bahwa mereka digabungkan untuk menggunakan osilator eksternal yang lebih cepat (dan lebih akurat) yang dipasang di papan. Ini berlaku bahkan ketika Anda membeli chip yang longgar, karena sebagian besar dijual kembali dengan maksud dipasang di papan Arduino untuk menggantikan yang terbakar, dengan pengecualian mungkin yang dari Digikey.

Peringatan: Arduino dirancang sebagai papan prototyping, dan beberapa hal lebih baik daripada yang dilakukannya pada tugas ini. Anda mungkin ingin meninggalkan chip di papan Arduino sampai Anda selesai merancang dan menguji sirkuit Anda. Hanya dengan begitu Anda menghubungkannya secara langsung. Ini dapat digunakan di tempat jika Anda memiliki sirkuit jam di tempat, atau Anda dapat mengubah sekering (lihat nanti) dan memprogram ulang Arduino dengan adaptor ISP dan kecepatan clock 8mhz (PlatformIO memungkinkan Anda melakukan ini ( dan memungkinkan langsung impor sketsa Arduino) - periksa halaman dokumen mereka untuk plugin Atmel AVR, tetapi Anda juga dapat mencari sejumlah panduan tentang cara menambahkan file papan ke Arduino untuk meminta agar menggunakan opsi 8mhz untuk chip kosong)

Jika Anda melepas chip untuk digunakan di sirkuit yang berbeda, itu membutuhkan sirkuit clock yang ditambahkan kembali, atau untuk mengganti sekeringnya (saya akan membahasnya dalam satu menit). Ini juga akan sulit diprogram, karena beberapa alasan, jadi Anda ingin membeli sedikit perangkat keras yang cukup murah:

Memprogram chip mandiri: CPU Arduino tidak dirancang untuk berbicara dengan komputer. Anda membutuhkan perantara. Di Uno, ini dilakukan melalui chip Atmel kedua yang memiliki kemampuan USB, dan bootloader pada chip utama. Apa yang dilakukan, adalah bahwa ia menggunakan UART untuk mengunggah program sementara chip USB mengubah pesan PC menjadi sinyal UART. Karena bootloader agak menyebalkan ketika chip itu sendiri (karena UART pilih-pilih dan menginstalnya menetapkan chip untuk menggunakan jam eksternal sebagai hasilnya), Anda akan ingin membeli programmer ISP untuk Arduino (atau ikuti sketsa Arduino-sebagai-ISP dan instruksi untuk membuatnya sendiri, yang membutuhkan Arduino dengan chip yang hadir, jadi Anda akan memerlukan satu detik untuk diprogram).

Ini dapat memprogram ATMega 328 langsung melalui SPI, tanpa bootloader (ada banyak instruksi di Internet; cari "program telanjang ATMega 328P dengan USBAsp", misalnya). Ini membuatnya lebih mudah untuk mengubah dan men-debug program Anda di luar dari mengeluarkan chip dan kembali ke papan Arduino asli. Anda juga memerlukan satu untuk mengubah pengaturan jam jika Anda tidak ingin menggunakan kristal eksternal.

Jika Anda ingin men - debug chip, ada baiknya juga membeli adaptor FTDI atau konverter USB-ke-UART lainnya. Perhatikan bahwa tanpa bagian sirkuit reset papan (atau lagi, menambahkan Anda sendiri), ini masih tidak akan membiarkan Anda memprogram ATMega bahkan dengan bootloader. Untuk itu, sambungkan pin ground, RX, dan TX ke adaptor. Anda mungkin atau mungkin tidak ingin menghubungkan jalur VCC, tetapi disarankan untuk tidak melakukannya jika ada banyak hal yang terhubung ke chip dan / atau memiliki catu daya sendiri. Perhatikan bahwa RX dan TX perlu ditukar ketika Anda menghubungkannya; yaitu, RX ke TX dan TX ke RX - Anda ingin chip untuk RX (menerima) apa adaptor TX (mentransmisikan), dan sebaliknya.

Sirkuit clock tidak sulit untuk dibuat, tetapi membutuhkan beberapa komponen yang mungkin tidak Anda miliki. Jadi, untuk mengubah sumber jam , buka http://www.engbedded.com/fusecalc/ dan pilih ATMega 328P. Standarnya baik, tetapi Anda mungkin ingin mengaktifkan EEPROM keep-on-erase dan menonaktifkan clock divide-by-8 atau menyesuaikan pengaturan brownout. Jangan menyentuh yang lain (menonaktifkan reset atau SPI atau mengaktifkan DebugWire menghasilkan "kesenangan" yang membutuhkan pemrogram HV untuk memperbaikinya). Setelah selesai, rekatkan perintah yang disediakannya ke perintah AVRDude. Anda perlu mengubah opsi -c (-p sudah diatur ke ATMega 328P, tetapi akan gagal untuk non-P 328s - jangan beli itu), dan mungkin tambahkan opsi -P (untuk Port). Jangan hilangkan opsi huruf kecil -u, atau itu akan menolak untuk memperbarui sekering.

avrdude -p m328p -v -c usbasp -B 100 -u [add extras here: (-P <PORT>) <fuse set command here>]

Perhatikan bahwa jika Anda membeli USBASP (pastikan memiliki tiga set jumper!), Untuk semua itu mereka adalah programmer favorit saya, mereka mungkin tidak memiliki firmware yang diperbarui yang mendukung opsi -B (yang mungkin Anda perlukan). Itu berarti bahwa Anda perlu melampirkannya ke Arduino melalui port pemrograman enam-pin, dengan cara yang sama persis dengan yang Anda gunakan untuk memprogram bootloader Arduino, tetapi kemudian gunakan sketsa Arduino-as-ISP untuk memprogram yang baru firmware ke programmer (cari "perbarui firmware usbasp melalui arduino-as-isp")! Untuk referensi, itu biasanya berarti bahwa kabel menghadap jauh dari badan papan, dan Anda mungkin harus memprogram sketsa sebelumnyamenghubungkan kabel. Juga aktifkan jumper power-from-programmer pada USBASP (5V), dan "program mandiri". (lihat https://forum.arduino.cc/index.php?topic=560719.0 untuk lokasi power dan program jumper (JP2)).

RDragonrydr
sumber