Saya menggunakan MCU 16-bit, PIC24HJ64GP504 , untuk menulis aplikasi berbasis CAN. Pada dasarnya ini adalah komunikasi antara papan saya dan satu simpul lain yang terus mengirim data ke papan saya menggunakan CAN pada 1 Mbit / s. Saya mengkonfigurasi modul ECAN di PIC24 saya untuk bekerja pada 1 Mbit / s. Saya telah menulis kode sedemikian rupa sehingga untuk 10 ms pertama modul ECAN akan menerima semua pesan yang datang dari sisi lain, dan setelah itu saya mengkonfigurasi ulang modul ECAN untuk menerima hanya pesan-pesan dengan pesan ID 0x13.
Sekarang inilah masalahnya .. Node lain dan papan saya dinyalakan pada saat yang sama. Node lain mulai mengirimkan pesan setelah 40 ms atau lebih setelah powerup. Tetapi saya tidak bisa mendapatkan pesan apa pun dari itu di papan tulis saya. Sekarang jika saya menyalakan papan saya terlebih dahulu, berikan waktu untuk mengkonfigurasi ulang modul ECAN dengan filter baru dan menetap dan kemudian nyalakan node lain, maka semuanya bekerja dengan sempurna.
Sekarang bagian yang paling aneh .. Jika saya memiliki alat analisa bus CAN yang terhubung antara board saya dan node lainnya dan bahkan jika saya menyalakan kedua node secara bersamaan, semuanya berfungsi dengan baik ... tidak perlu menyalakan board saya terlebih dahulu. Saya telah mencoba ini dengan tiga penganalisa bus yang berbeda dari pabrikan yang berbeda dan mendapatkan hasil yang sama.
Bagi saya tampaknya selama konfigurasi ulang modul ECAN, perlu beberapa waktu untuk menyelesaikannya. Dan dengan diperkenalkannya penganalisa bus di bus, kali ini entah bagaimana dipersingkat sehingga semuanya bekerja dengan sempurna. Tapi saya tidak yakin apa sebenarnya masalahnya.
Saya telah berjuang dengan masalah ini selama tujuh hari terakhir.
PS: Hari ini saya memeriksa dengan lingkup dan menemukan bahwa jika node lain mulai mentransmisikan setelah 170 ms setelah powerup, maka semuanya bekerja dengan baik. Sebelum itu, perangkat saya tidak akan menerima pesan apa pun darinya kecuali penganalisa bus terhubung. Bagian terburuknya adalah saya tidak bisa menunda transmisi node lain, firmware dari node itu adalah hak milik.
Saya juga membaca di forum hari ini bahwa BISA membutuhkan resistor 120 at pada node untuk membuatnya berfungsi (meskipun node saya tidak memiliki satu dan berfungsi dengan baik, asalkan diberi waktu untuk menyelesaikan setelah konfigurasi ulang). Saya menduga pengenalan bus analyzer entah bagaimana mengubah parameter listrik beberapa jaringan sehingga waktu yang dibutuhkan oleh simpul saya untuk menyelesaikan setelah konfigurasi ulang terpotong. Tapi saya tidak yakin .. :(