Saya punya dua PCB. Satu memiliki dsPIC30F6012a, yang lain dsPIC30F6015. Keduanya diprogram dari proyek HEX mandiri yang terpisah di MPLAB X, menggunakan PICkit 3. Kedua firmware telah diterapkan ke puluhan unit sebelum titik ini tanpa kesulitan. Saat ini, firmware beroperasi dengan benar ketika diprogram dari semua PC kecuali satu. Pada satu PC itu, mulai kemarin , keduanya firmware program tanpa kesalahan yang jelas, tetapi dijalankan pada kecepatan normal sekitar 1/20. Sebelum kemarin, PC itu juga memprogram papan ini tanpa masalah.
Layar splash memakan waktu dua menit, bukan lima detik, lampu berkedip sangat lambat, dan selain itu semuanya beroperasi dengan benar. Ini hampir seolah-olah bit konfigurasi osilator telah diubah, tetapi saya tidak mengetahui adanya MPLAB X yang dapat dilakukan untuk proyek mandiri.
Jadi dua firmware yang berbeda, pada dua chip yang berbeda, pada banyak contoh dari desain PCB yang sama, berjalan pada kecepatan yang berbeda tergantung hanya pada PC yang digunakan untuk memprogram mereka. Pemrograman ulang papan lambat pada PC "baik" memperbaiki masalah; memprogram ulang papan yang sama pada PC "jahat" mengembalikannya. Yang bisa saya pikirkan adalah bahwa pada satu PC seseorang menekan tombol "make it go slow", tetapi saya tidak dapat menemukan apa pun yang diberi label itu. (Teknisi kami cukup kreatif.) Saat ini saya mencopot MPLAB X, menghapus pengaturan pengguna, dan menginstal ulang versi yang lebih baru. (Pergi dari 1,3 ke 1,6.) Tetapi bahkan jika itu memperbaikinya, saya masih tidak senang tidak tahu apa yang terjadi. Apakah ada yang punya wawasan tentang masalah ini?
sumber
Jawaban:
Dalam MPLAB X, bit konfigurasi tidak dapat diatur secara terpisah dari kode (seperti MPLAB 8 yang digunakan untuk membiarkan Anda melakukannya). Satu-satunya cara bit konfigurasi bisa 'salah' adalah jika seseorang memodifikasi kode. Karena Anda menggunakan proyek file HEX mandiri, ini tidak mungkin.
Anda belum mengatakan apakah memprogram ulang salah satu papan 'buruk' pada PC 'berfungsi' benar-benar memperbaiki masalah. Cobalah.
Hal lain yang dapat Anda lakukan (jika Anda tidak menggunakan kode proteksi) adalah membaca kembali file HEX dari pengaturan 'berfungsi' dan mem-flash-nya ke salah satu papan yang tidak berfungsi. Ini harus menghilangkan perubahan kode sebagai salah satu ketidakpastian.
Skenario lain (tidak mungkin) adalah bahwa stok dsPIC Anda mencakup banyak revisi, dan perubahan bertahap entah bagaimana membuat kode Anda batal. Pastikan nomor komponen IC sudah benar, dan ketika PICkit3 terhubung, Anda akan melihat kode revisi yang dapat Anda rujuk silang ke revisi silikon.
EDIT: Sekarang saatnya untuk memastikan bahwa berbagai instalasi MPLAB X cocok pada semua PC - apakah mereka revisi yang sama? Apakah ini revisi terbaru?
Setiap kali ada versi baru MPLAB X, firmware PICkit3 cenderung ditingkatkan - mungkin ada bug atau ketidakcocokan dengan firmware PICkit3 yang lebih lama dan file HEX Anda.
Saya memiliki situasi yang sama baru-baru ini (sekarang baru saja saya sadar - duh) di mana file HEX yang saya hasilkan pada mesin saya dengan MPLAB X dan XC16 akan memprogram dengan benar pada mesin saya, tetapi tidak pada mesin lain menggunakan MPLAB 8 v8. 50 - kode tampaknya berjalan lebih lambat (LED inisialisasi tampak lambat). Ketika PC itu diperbarui dengan MPLAB 8 v8.88, menggunakan programmer yang sama dan file HEX yang sama, semuanya mulai berfungsi lagi. Aneh.
sumber