ICSP atau Mikrokontroler Praprogram

11

Saya telah merancang PCB untuk produksi skala kecil; Saat ini saya menyolder tangan mereka dalam batch 20 sekaligus. PCB ini menggunakan mikrokontroler ATMEGA168 yang saya program sebelum menyolder ke papan - metode ini bekerja dengan baik untuk saya saat ini.

Saya melihat ada 200 papan yang diproduksi dan dirakit untuk saya karena produk yang saya rancang tampaknya cukup populer. Apakah akan lebih baik untuk memasukkan header ICSP ke papan tulis atau terus memprogram sendiri IC? Pemrograman ulang papan setelah pembuatan atau perakitan bukanlah fitur yang dimaksudkan atau diperlukan.

Saya tidak yakin bagaimana ini dilakukan dalam lingkungan produksi skala yang lebih besar? Menambahkan header ICSP akan meningkatkan biaya pembuatan sedikit, jadi apakah pra-pemrograman merupakan praktik standar?

edcs
sumber

Jawaban:

18

Saya sarankan selalu menyertakan header dalam jumlah seperti itu (kecil). Jika Anda mendapatkan jumlah yang lebih besar, Anda dapat mempertimbangkan pembalut untuk pin pogo (Anda harus membuat fixture untuk menahan PCB agar sejajar) atau, dalam jumlah Anda, Anda dapat menggunakan salah satu kabel Tag Connect yang hanya membutuhkan lubang dan tidak berpenghuni. bantalan (mereka membentur papan).

masukkan deskripsi gambar di sini

Selain memungkinkan Anda pulih dari kebutuhan untuk pembaruan pemrograman, ini akan memungkinkan Anda untuk memiliki rumah perakitan yang mengisi papan sebelum pemrograman, yang dapat meningkatkan logistik.

Pra-pemrograman jelas merupakan suatu pilihan, bahkan dalam jumlah produksi (Anda bahkan dapat meminta distributor untuk melakukannya), tetapi tampaknya sebagian besar digunakan dalam aplikasi yang paling sederhana. Biasanya chip on board diprogram (atau dapat diprogram) pasca-perakitan.

Spehro Pefhany
sumber
Ini terlihat seperti solusi yang bagus - terima kasih atas bantuan Anda, kabel-kabel itu terlihat sangat berguna!
edcs
1
Tag-Connect berfungsi dengan baik untuk ini. Anda juga bisa mendapatkan versi tanpa pin pengunci (plastik hitam di sebelah kanan gambar) yang sebagai gantinya mengandalkan tekanan atau pelat belakang yang menangkap pin. Perhatikan bahwa kabel gambar adalah sekitar $ 50. Di sisi positifnya, kontak PCB sekitar $ 0.
Ben Jackson
20

Jika Anda memiliki ruang untuk tajuk, itu mungkin pilihan terbaik, dan pin yang agak terhuyung-huyung direkomendasikan oleh Majenko adalah cara yang baik untuk menahan konektor di tempatnya tanpa menambah kerumitan.

Tapi inilah pendekatan alternatif, untuk papan di mana Anda tidak memiliki ruang untuk memasukkan header, atau header standar tidak menyelesaikan semua tugas pemrograman / pengaturan / pengujian papan Anda.

Diberi faktor bentuk PCB kecil seperti di sini (diameter 33mm) masukkan deskripsi gambar di sini

Anda dapat meletakkannya dengan titik uji (berlabel di bagian belakang) masukkan deskripsi gambar di sini

dan buat perlengkapan uji untuk itu (menggunakan Pin Pogo ) masukkan deskripsi gambar di sini

Ini membutuhkan beberapa kemampuan pemesinan dan setidaknya bor pilar (karena pin pogo harus persis vertikal). Namun jika Anda bersedia mengambil risiko prototipe PCB, Anda dapat menjepitnya ke selembar bahan dan "melihat" melalui lubang testpoint untuk mendapatkan pin pogo di tempat yang tepat. (Saya mendapatkan 10 PCB dengan harga yang sangat murah dari Itead, jadi kehilangan satu bukan masalah besar).

Dengan mesin bubut dan penggilingan, membuat pilar dan klem untuk menemukan PCB di tempat yang tepat adalah cara yang mudah, tetapi tidak terlalu sulit dengan alat yang lebih sederhana.

Kemudian Anda cukup memasang setiap PCB, memprogram dan mengujinya. Konektor longgar biasanya pergi ke pin header pada Launchpad TI, digunakan untuk pemrograman MPU ini (TI MSP430) melalui antarmuka SBW, tetapi prinsip yang sama akan berlaku untuk JTAG atau antarmuka lainnya. (Kabel cokelat di bagian atas adalah kabel ko-kap yang membawa sinyal kalibrasi ke penghitung frekuensi). masukkan deskripsi gambar di sini

Basis mahoni yang dipoles adalah opsional; Kebetulan saya lebih suka gaya steampunk untuk perlengkapan tes saya.

Brian Drummond
sumber
Ini adalah jawaban yang bagus dan terima kasih telah meluangkan waktu untuk memberikan tanggapan terperinci yang bermanfaat! Saya tidak menandainya sebagai jawaban karena dalam kasus saya, saya memiliki ruang untuk memasukkan header ICSP tetapi itu adalah sesuatu yang akan saya ingat jika saya harus membuat sesuatu yang kecil.
edcs
2
Itu jig cantik (atau itu fixture?). Apakah ada sesuatu untuk kunci sudut PCB-bijaksana atau hanya berbaris dengan mata?
Spehro Pefhany
Saya melihat pin pogo melalui lubang testpoint yang terlihat sebelum saya mendorong ke bawah dan mengayunkan klem. Mentah tetapi bekerja. Pada PCB yang lebih besar saya akan merekomendasikan beberapa pin lokasi, misalnya di lubang pemasangan PCB.
Brian Drummond
13

Saya selalu menambahkan ruang untuk header ICSP, bahkan jika itu tidak diisi. Saya memiliki tiga cara untuk melakukannya saat ini tergantung pada situasinya.

Salah satu desain saya memiliki header pitch yang sangat baik untuk yang saya bangun adaptor (kawat inti padat 0.6mm sangat cocok untuk itu):

masukkan deskripsi gambar di sini

Saya menggunakan konektor ini ketika ruang berada pada premi absolut. (Maaf kabur, kamera ponsel saya tidak ada).

Pengaturan kedua yang sering saya gunakan adalah memasukkan ICSP ke header lain. Jika pin ICSP juga dapat digunakan sebagai pin GPIO, dan Anda dapat menggunakannya dengan koneksi yang dapat dilepas, maka itu cukup sederhana untuk menyertakan koneksi ICSP lain yang mungkin Anda perlukan (MCLR, misalnya) dengan biaya minimal. Kemudian Anda cukup pasang programmer Anda ke header itu dengan adaptor yang harus dibuat cukup sederhana.

Cara ketiga adalah menyediakan tapak tajuk "terhuyung-huyung" atau "offset" untuk ICSP. Saya menggunakan ini terutama pada papan pengembangan di mana pengguna akhir mungkin ingin melakukan ICSP tetapi tidak ingin merusak papan mereka dengan menyolder header secara permanen. Jejak ini memungkinkan header standar untuk push-fit dan melakukan kontak solid yang baik tanpa solder:

masukkan deskripsi gambar di sini

Ketika Anda mulai berurusan dengan jumlah yang jauh lebih besar tentu saja akan lebih hemat biaya untuk membuat produsen chip memprogram terlebih dahulu chip tersebut untuk Anda dengan firmware Anda. Saya pikir semua produsen utama menyediakan fasilitas itu.

Majenko
sumber
Terima kasih atas jawaban terinci - informasi pasti bermanfaat di sini! Saya tidak menerima jawaban Anda karena saya akan menggunakan kabel Tag Connect yang disarankan, meskipun metode pin yang terhuyung-huyung juga akan berhasil.
edcs
Atmel jelas menyediakannya sebagai opsi.
Ignacio Vazquez-Abrams
2
Jejak header terhuyung-huyung adalah murni genious. +1
Vladimir Cravero
5

Jika seseorang menggunakan prosesor yang dapat diprogram ulang dalam rangkaian, saya akan sangat merekomendasikan bahwa papan dirancang sedemikian rupa untuk memungkinkan penggunaannya, bahkan jika benar-benar menggunakan fitur akan membutuhkan membuat bangunan fixture untuk tujuan tertentu dan yang lain tidak. berencana membangunnya. Jika masalah firmware ditemukan setelah membuat sejumlah besar papan, membangun fixture yang dapat memprogram ulang papan tersebut mungkin jauh lebih murah daripada harus mengerjakan ulang atau membangunnya kembali.

Dalam beberapa kasus, pendekatan yang baik mungkin untuk memilih tata letak I / O papan sehingga pin pengontrol yang diperlukan untuk pemrograman ulang dalam sirkuit diberikan untuk tujuan yang "secara alami" mengakibatkan mereka terkena titik kontak yang mudah diakses. Sebagai contoh, papan yang dirancang untuk digunakan dengan kontak kubah logam mungkin memiliki kontak sendiri kabel ke pin pemrograman di-sirkuit. Desain seperti itu tidak akan membutuhkan pengabdian pada ruang di tata letak untuk konektor pemrograman, tetapi - terutama jika kontak baterai juga berukuran umumnya, memungkinkan konektor pemrograman untuk bertahan dengan kontak pegas sederhana.

Perhatikan bahwa tidak masalah apakah kode tersebut tampaknya telah diuji dengan baik; perubahan dari satu batch chip ke yang berikutnya masih dapat menyebabkan masalah yang tidak terduga. Sebagai contoh, saya mendesain produk yang seharusnya mematikan dirinya sendiri di bawah kendali prosesor dengan membuat output prosesor "tinggi" pada pin ketika seharusnya "menyala". Pada batch pertama sebanyak 10.000 unit semuanya bekerja dengan baik, tetapi pada batch berikutnya prosesor akan mulai tidak berfungsi ketika tegangannya mencapai sekitar 2 volt, dan dapat mengalihkan pin itu kembali ke "tinggi"; 2-volt "high" output hampir tidak cukup untuk menghidupkan kembali unit. Karena prosesor ditentukan untuk tetap dalam mode tidur ke IIRC 1,6 volt, adalah mungkin untuk memperbaiki masalah dengan memprogram ulang unit-unit sehingga mereka akan memasuki mode tidur ketika mengaktifkan kondisi shutdown mereka. Seandainya pemrograman ulang seperti itu tidak mungkin dilakukan, pengerjaan ulang yang jauh lebih mahal (atau pembatalan dan pembangunan kembali) akan diperlukan.

supercat
sumber