Bagaimana cara lulus dari Arduino untuk menggunakan mikrokontroler secara langsung?

19

Saya telah mengerjakan proyek Arduino. Setelah saya mendapatkan semuanya berfungsi menggunakan Arduino, saya ingin pindah ke solusi yang TIDAK menggunakan Arduino. Artinya, saya ingin menggunakan mikrokontroler tanpa melibatkan papan Arduino. Ini akan memungkinkan satu papan, tidak ada solusi perisai.

Saya tahu ada metode untuk membuat Arduino saya sendiri di atas papan tempat memotong roti, tetapi itu bukan yang sebenarnya saya coba lakukan.

Saya tidak begitu yakin bagaimana melakukan ini.

Kecuali ada pilihan yang lebih baik, saya cenderung menggunakan ATmega328, yang digunakan oleh Arduino. Saya mengerti bahwa alat pengembangan tersedia gratis atau setidaknya tidak terlalu mahal.

Untuk keperluan pertanyaan ini, anggap saya bisa mendapatkan + 5V ke sirkuit saya.

Pertanyaan pertama saya adalah bagaimana memprogram MCU. Saya percaya ada dua opsi:

  1. Beli programmer, program MCU, dan kemudian tempatkan chip di sirkuit saya.
  2. Rancang sirkuit saya untuk memasukkan dukungan untuk pemrograman dalam-sirkuit.

Saya berasumsi bahwa jika saya menggunakan opsi # 1, semudah memasukkan chip yang diprogram di sirkuit saya; Saya tidak butuh yang lain. Tentu saja mengubah perangkat lunak akan merepotkan.

Tetapi untuk opsi # 2, saya tidak yakin apa yang saya butuhkan. Dari sedikit bacaan yang telah saya lakukan, saya pikir saya perlu kabel pemrograman, dan konektor di papan saya (tipe apa?). Lalu saya kira saya (benar) memasang konektor ke pin tertentu pada ATmega.

Either way, saya akan membutuhkan Atmel studio.

Kedua, selain catu daya, apakah ada sesuatu di Arduino yang benar-benar saya butuhkan? Saya kira mungkin saklar reset?

Rick
sumber
2
Anda dapat menggunakan Arduino untuk memprogram AVR. Saya pribadi suka menggunakan alat baris perintah dan makefile, daripada IDE.
jippie
1
Pertanyaan ini mungkin lebih cocok untuk Arduino Stack Exchange. arduino.stackexchange.com Sekarang dalam Beta Publik
akellyirl
4
Tapi tujuan saya adalah desain tanpa arduino.
Rick
"Apakah ada sesuatu pada arduino yang benar-benar kubutuhkan?" Saya pikir Anda akan memerlukan pin UART (alias port serial), itu berguna untuk debugging.
Pergilah
Atmel studio sama sekali tidak diperlukan. Saya memprogram chip saya dari baris perintah (dan editor teks). Meskipun dikabulkan untuk proyek-proyek besar, Atmel studio pasti akan membuatnya lebih mudah
Chris Laplante

Jawaban:

10

Selamat datang di dunia Atmel yang indah. Izinkan saya menawarkan beberapa jawaban untuk pertanyaan Anda berdasarkan hobi dan pengalaman profesional saya.

Jangan repot-repot dengan apa pun TAPI pemrograman dalam sirkuit. Kecuali jika Anda adalah pembuat kode yang sempurna, mengeluarkan sebuah chip setiap kali Anda ingin memprogramnya adalah mimpi buruk. Saya merekomendasikan AVRISPmkII sebagai alat pemrograman tingkat pemula. Kerugiannya adalah tidak ada debug hardware yang didukung. Alternatif adalah naga tetapi saya tidak punya pengalaman dengan itu. Saya dapat mengatakan bahwa JTAGICEmk3 adalah alat debug yang bagus.

Atmel studio bagus untuk pemrograman. Ini sebenarnya lingkungan pengembangan tertanam favorit saya. Anda dapat menggunakan alat CLI seperti AVRDUDE dan AVR-GCC tetapi IDE yang menangani itu untuk Anda.

SINGKATNYA:

Beli AVRISP hanya untuk pemrograman (lebih mudah, pasang & mainkan) atau DRAGON (Saya tidak bisa memberikan saran).

Di papan Anda, keluarkan pin ICSP ke header ganda 6-pin 0,100 "- koneksi dijelaskan dalam lembar data ini .

Reset switch tidak diperlukan.

HL-SDK
sumber
1
Saya sudah mendapatkan hasil yang sangat baik dengan EvUSBasp.
Ignacio Vazquez-Abrams
Setelah saya mengeluarkan pin ICSP di papan saya, apakah saya harus mendedikasikannya untuk pemrograman dalam sirkuit, atau bisakah saya masih menggunakannya sebagai pin GPIO?
Ricardo
2
Anda dapat menggunakannya sebagai GPIO karena mereka berbagi fungsi dengan SPI. Programmer meletakkan chip di reset kemudian berkomunikasi dengannya.
HL-SDK
1
Seri tutorial terkait tentang memulai pemrograman mikrokontroler . Mereka menggunakan AVRMega dan melalui proses pengkabelan ISP, dan kode C mewah untuk berkedip LED.
MDMoore313
1
@ HL-SDK benar bahwa hanya pin RESET yang benar-benar perlu didedikasikan untuk ICSP, tetapi beberapa kehati-hatian diperlukan untuk pin lain juga, yaitu mereka mungkin harus digunakan sebagai pin output daripada pin input (jadi sinyal tidak t terganggu oleh sirkuit luar dalam mode ICSP), dan apa pun yang melekat padanya harus dirancang untuk tidak bereaksi negatif terhadap kombinasi sinyal acak apa pun yang dikirim lalu lintas pemrograman oleh mereka.
microtherion
10

Anda tidak harus "lulus" sekaligus. Inilah cara saya mengonversi:

Sebagai permulaan, saya terus menggunakan Arduino tetapi mengubah panggilan ke perpustakaan Arduino menjadi register baca dan tulis, satu baris pada satu waktu, melihat apakah program saya masih berfungsi. Dengan cara ini saya terbiasa menggunakan register dan melihat bahwa mereka tidak secara radikal terputus dengan cara Arduino dalam melakukan sesuatu. Fungsi Arduino seperti digitalWrite () cukup memanipulasi register - Anda bebas membaca dan menulis secara langsung di sketsa Anda.

Langkah saya selanjutnya adalah menempatkan ATTiny 85 di atas papan tempat memotong roti dan memprogramnya dengan Arduino sebagai ISP ( http://highlowtech.org/?p=1695 ). Jika Anda membeli catu daya papan tempat memotong roti dan menggunakan osilator internal ATTiny, ini membutuhkan kabel yang sangat sedikit. Saya menggunakan Arduino IDE untuk mengkompilasi tetapi tetap menggunakan register sebanyak yang saya bisa.

Kemudian, saya menginstal toolchain baris perintah Crosspack gratis dan menyusun program blinky. Setelah beberapa percobaan dan kesalahan lagi, saya berhasil memprogram ATTiny dengan avrdude saja, tetap sepenuhnya di luar ekosistem Arudino.

Setelah Anda mencapai blinky hanya dengan alat-alat baris perintah, Anda bebas dari Arduino. Jelajahi berbagai periferal dan register mereka dan segera itu akan benar-benar alami.

Setelah semua ini, saya sering menemukan diri saya menggunakan Arduino karena lebih cepat. Saya telah menemukan bahwa meneliti deskripsi register agak menyebalkan; tidak masuk akal melakukan itu jika Anda tidak perlu. Meskipun demikian, ada baiknya untuk mengetahui caranya.

pengguna24505
sumber
8

Saya setuju dengan komentar HL-DSK di atas. Saya akan menghabiskan uang ekstra dan mendapatkan seorang programmer dengan kemampuan debug. Saya menggunakan JTAGICE3, sekitar $ 110 untuk digi-key.

Baca di pemrograman ISP sini . Ini akan menunjukkan kepada Anda bagaimana mengeluarkan koneksi SPI. Koneksi SPI pada chip Anda akan ada dalam lembar data ATmega. Lihat halaman 2 untuk pin MISO / MOSI / SCK / RESET. Programmer harus dapat mengendalikan garis reset. Ingatlah untuk menggunakan resistor pull-up pada garis reset sehingga chip Anda akan berjalan setelah programmer terputus.

Dapatkan tajuk 2x3 di sini . Atau buat sendiri menggunakan header yang memisahkan diri.

qce88
sumber
2
Saya akan mendapatkan programmer kedua dengan dukungan debug. Awal bulan ini saya dilempar ke dalam proyek PIC32 tanpa pengalaman tingkat rendah sebelumnya. Bahkan dengan orang lain yang menulis fungsionalitas menggedor bit level terendah, saya bahkan tidak ingin memikirkan betapa sulitnya mencari tahu di mana masalah saya jika yang harus saya lihat di dalamnya adalah satu LED merah / hijau.
Dan Neely
Ini, setelah Anda memiliki alat profesional, tidak ada jalan untuk kembali.
Matt Young
7

Perbedaan antara Arduino dan ATmega328 yang telanjang hanyalah dua hal. Arduino Bootloader, dan perpustakaan Arduino. Anda dapat mengode Arduino dengan bare C atau C ++ tanpa menggunakan pustaka apa pun. Anda juga bisa menggunakan rakitan. Bootloader memungkinkan Anda memuat kode baru melalui serial tanpa melalui (sedikit) pemrograman dalam rangkaian yang lebih rumit (pada dasarnya SPI).

Anda dapat menggunakan perpustakaan pemrograman standar dan avr-gcc dengan hampir semua ide. Berlawanan dengan apa yang orang lain katakan, pengkodean Arduino pada dasarnya seperti pengkodean mikrokontroler telanjang, dengan beberapa kemudahan tambahan dengan mengorbankan beberapa kinerja.

Pejalan kaki
sumber
4
Tetapi Anda juga dapat menggunakan bootloader dan pustaka Arduino dengan ATmega328 yang kosong.
Ignacio Vazquez-Abrams
@ IgnacioVazquez-Abrams yang mengubahnya menjadi arduino tanpa tulang, natch.
Pejalan kaki
5

Saya membeli chip Atmega328P pre-bootload dan memprogram mereka di-sirkuit dengan kabel FTDI dan avrdude, identik dengan bagaimana saya memprogram Arduino. Saya suka Eclipse IDE tetapi Anda dapat menggunakan lingkungan yang Anda suka - Atmel Studio, Arduino IDE, emacs, atau bertelanjang kaki pada baris perintah.

Papan ini sedang dibangun pada titik di mana cukup lengkap untuk menguji dengan program Hello, menggunakan kabel untuk pemrograman, daya, dan terminal. Masih perlu catu daya - LM2936 regulator tegangan arus ultra-rendah dan konektor baterai, dalam kasus saya - dan apa pun komponen on-board dan koneksi off-board lain yang dibutuhkan proyek:

NotDuino

Karena Anda memiliki Arduino, Anda bisa menghemat sedikit uang dan menggunakan chip yang tidak terprogram, menggunakan Arduino untuk menginstal bootloader. Label pin-out biru yang bagus membantu menurunkan tingkat kesalahan saya! Saya menggunakan kristal 16MHz tetapi jika Anda dapat menjalankannya dengan osilator internal, jumlah komponen Anda turun sebanyak 3 (kapasitor xtal dan 2).

JRobert
sumber
2

Untuk pindah dari Arduino di mana perangkat keras disediakan dan perangkat lunaknya adalah overlay bahasa C, saya ingin membuat beberapa saran. Saya melihat orang telah memposting beberapa jawaban yang berguna tetapi saya telah berada di tempat Anda berada dan saya akan melakukan hal-hal yang sedikit berbeda.

  1. Pilih debugger. Debuggers memberi Anda kemampuan untuk memprogram mikrokontroler serta debug yang mencakup pemrosesan 'langkah demi langkah', 'breakpoints' yang memungkinkan Anda untuk menjeda program pada baris kode tertentu untuk memeriksa kode apa yang sedang dibuat. ISP (In-Circuit Programming) adalah antarmuka serial, menggunakan 3 pin yang baik tetapi tidak menyediakan fungsionalitas penuh yang diinginkan seorang pemula. Antarmuka JTAG menggunakan 4 pin yang pada dasarnya memberi Anda fungsionalitas penuh dalam hal menggunakan breakpoints dan lainnya. Orang-orang biasanya lebih condong ke ISP karena 'relatif' lebih mudah untuk setup tetapi jika Anda bertanya kepada saya JTAG tidak sulit untuk setup, tetapi juga turun ke preferensi pribadi. Dan ada Kawat Debug antarmuka yang ingin saya lewati dalam diskusi ini karena Anda lebih suka menggunakan ISP daripada men-debug kawat.
  2. Beli debugger yang memiliki fungsionalitas ISP dan JTAG. Saya pikir Anda membeli satu kali tetapi membeli barang bagus yang akan membantu Anda di masa depan jika Anda ingin mengubah desain Anda. Saya merekomendasikan AVR Dragon atau JTAGICE. Keduanya terhubung ke PC melalui USB dan keduanya menyediakan ISP dan JTAG. JTAGICE sedikit lebih mahal daripada AVR Dragon tapi saya merekomendasikan AVR Dragon.
  3. Anda akan menemukan bahwa kebanyakan mikrokontroler Atmel memiliki fungsionalitas ISP tetapi tidak banyak yang memiliki JTAG. Mikrokontroler kecil seperti seri AT90S2313 atau ATTINY menggunakan seri ISP karena ukurannya kecil. Tetapi jika Anda ingin tidak hanya berkedip beberapa LED tetapi ingin antarmuka dengan mengatakan layar LCD atau keypad atau apa pun yang Anda miliki maka saya sarankan untuk masuk untuk mikrokontroler yang sedikit lebih besar. Jika Anda menggunakan persediaan 5V, saya sarankan Anda ATMega8 atau bahkan ATMega16 atau ATMega128 (fav saya). ATMega16 dan ATMega128 memiliki antarmuka ISP dan JTAG.
  4. Sejauh menyangkut IDE, saya dulu menggunakan Visi kode dan AVR Studio tapi saya sarankan menggunakan Atmel Studio 6.0 atau yang lebih baru yang melayani semua kebutuhan Anda.

Saya punya beberapa ide skematis yang saya pelajari sendiri sehingga Anda memiliki antarmuka yang bersih dan halus untuk mikro Anda. Beri tahu saya jika Anda membutuhkan bantuan.

David Norman
sumber
1

Nasihat Jujur

Arduino adalah untuk pemula, ada dua cara untuk pergi dari sini

Cara 1: Memahami cara kerja pengontrol mikro / prosesor (pendekatan yang lebih disukai)

Atmel 8051

Maksud saya belajar arsitektur dan kode perakitan (atau logam kosong) untuk micro p / c. Jika Anda memerlukan titik awal untuk ini saya akan menyarankan Atmel 8051 yang merupakan pengontrol mikro 8 bit dengan arsitektur dan perakitan instruksi set yang paling sederhana. Prosesor 32bit atau 64bit modern lainnya memiliki bentuk arsitektur yang diturunkan darinya. Pengontrol mikro ini masih digunakan sebagai bagian dari kursus pascasarjana saya karena ini merupakan titik awal yang baik dan banyak literatur tersedia.

Oh dan kit untuk membuat papan ISP Anda dijual (kit yang dirakit lengkap dengan proseso, komponen solder ke kit papan dan Anda dapat membuat papan pengembangan sendiri hanya membutuhkan beberapa kabel / soket IC dan RS-232)

Karena teknologi rendah semua komponen akan murah.

Cara 2: Lompat ke pendekatan perangkat keras-perangkat lunak (kurang disukai)

Raspberry Pi Beagle bone Black

Ini adalah pendekatan untuk pemalas yang telah menyelami sedikit perakitan dan "mengetuk" ATAU orang yang ingin beralih ke lebih banyak perangkat lunak daripada perangkat keras. Saya akan menyarankan pindah ke papan hobi lain seperti Raspberry Pi atau BeagleBoneBlack dengan prosesor ARM dan mulai melakukan proyek dan kreativitas mereka.

Dexobox
sumber
0

Anda dapat menggunakan papan Arduino, tanpa menggunakan perpustakaan dan lingkungan kotak pasir, Anda dapat memprogram semuanya sendiri secara langsung. Jika Anda ingin menggunakan bootloader mereka melalui serial / uart untuk memprogram, itu berfungsi dengan baik. Tetapi sebagian besar / semua bagian avr juga dapat diprogram dengan cara lain, dengan bagian diadakan di reset yang berarti itu tidak brickable. cukup mudah untuk menggigit bang spi dari arduino atau mikrokontroler lainnya atau dengan ftdi keluar dari rasa. sparkfun memiliki arduino dan papan non-arduino (32u misalnya) yang header spi jelas. dan papan breakout ftdi yang Anda dapat dengan mudah bitbang menggunakan perpustakaan ftdi atau perpustakaan ftdi yang datang dengan linux.

Dokumentasi untuk setiap bagian menunjukkan opsi booting dan opsi pemrograman flash. ya tidak sulit untuk hanya membeli beberapa bagian juga dan membuat papan breakout Anda sendiri. Saya tidak akan melakukan itu sampai Anda telah menggunakan breakout yang ada atau papan eval sederhana dan kemudian mengkloning itu jika perlu. Idealnya mulai dengan bagian dengan osilator rc internal, pada dasarnya pin daya, pentanahan, dan pemrograman ...

old_timer
sumber