Hal aneh terjadi pada papan Arduino mandiri yang saya desain dan bangun. Papan (yang skemanya di bawah) memiliki fitur berikut:
- Ini memiliki ATmega328P dengan regulator tegangan 5V dan sirkuit biasa ketika diatur sebagai pengontrol mandiri.
- Ini mengontrol papan skor dengan beberapa digit 7-display yang terhubung melalui konektor di sebelah kanan (JP1 hingga JP12).
- Ini memiliki tombol kursor diterjemahkan menggunakan tangga tegangan melalui ANALOG_0 (A0).
- Ini memiliki Jam Real Time untuk menjaga waktu ketika dimatikan.
- Ini memiliki modul penerima RF.
- Memiliki header UART (JP17) sehingga saya dapat memprogram board menggunakan port serial.
- Memiliki speaker yang terpasang pada pin digital 3 (D3).
Saya mengunggah sketsa ke sana menggunakan adaptor RS232-to-TTL yang saya juga buat (skema juga di bawah) dan kabel Serial-to-USB. Saat memprogramnya, papan berperilaku seperti papan Severino .
Yang aneh adalah, ketika saya mengunggah sketsa, prosesnya dijeda di tengah dan kemudian pembicara mulai berbunyi bip terus-menerus. Itu dijeda dengan pesan avrdude berikut:
avrdude: Versi 5.11, disusun pada 2 Sep 2011 di 19:38:36 Hak cipta (c) 2000-2005 Brian Dean, http://www.bdmicro.com/ Hak cipta (c) 2007-2009 Joerg Wunsch
System wide configuration file is "C:\arduino-1.0.3\hardware/tools/avr/etc/avrdude.conf"
Using Port : \\.\COM1
Using Programmer : arduino
Overriding Baud Rate : 115200
Ketika saya menekan reset di papan tulis, avrdude terus menampilkan pesan-pesannya (seperti di bawah), bunyi bip berhenti, unggahan berlanjut dan sketsa diunggah dengan sukses ke papan tulis.
avrdude: Send: 0 [30] [20]
avrdude: Send: 0 [30] [20]
avrdude: Send: 0 [30] [20]
... messages and upload continue and completes successfully.
Saya tidak memiliki sisa pesan yang berguna di sini, tetapi saya harap Anda mendapatkan idenya.
Jadi, pertanyaan saya adalah:
- Apa yang membuat proses pengunggahan terhenti?
- Mengapa bel berbunyi saat proses jeda?
Jawaban:
Nah, mengingat semua komentar yang dibuat di bawah pertanyaan Anda, ini pasti yang rumit. Anda mungkin ingin mencoba untuk menambahkan kapasitor decoupling seperti yang disarankan oleh @jfpoilpret, meskipun skema Anda terlihat baik-baik saja bagi saya ... (mungkin bertanya review tentang itu pada EE SE ).
Saya juga menyarankan Anda untuk menyalin
avrdude
perintah dari output Arduino IDE (Anda akan menemukannya di bagian atas), dan menjalankannya di shell perintah dengan bitrate lebih rendah:semakin tinggi
-B
nilainya semakin rendah bitrate Anda. dan-b
baudrate yang tepat untuk bootloader Anda (apakah Anda yakin ini adalah 115200? ini lebih umum untuk dilihat 57600).Apakah Anda juga mengatur sekering dengan benar? Anda mungkin juga ingin memeriksa nilai-nilai sekering untuk melihat apakah jam sudah diatur dengan benar:
yang akan menampilkan nilai-nilai sekering. Kemudian untuk membuat nilai dapat dibaca, letakkan nilai di bagian bawah formulir di situs kalkulator sekering , setelah memilih
Atmega328P
MCU dari daftar dropdown.Periksa kembali bahwa:
Itu karena ketika prosesor tidak memiliki pengaturan output, nilai-nilai dalam register berada dalam keadaan yang tidak ditentukan dan tidak dapat diprediksi. Yang berarti bahwa biasanya ia menyimpan nilai terakhir sebelum reset, atau mengubah keadaan karena keanehan elektrostatik, atau memberikan beberapa output PWM aneh karena pengaruh jam di dekatnya.
Jadi pada dasarnya, ada sesuatu yang salah terjadi ketika Anda mengunggah kode Anda dan hal yang salah itu memiliki efek tidak langsung pada audio. Saya tidak akan terlalu khawatir tentang hal itu, tetapi lebih banyak tentang penyebab jeda.
Sayangnya, saya tidak punya jawaban langsung untuk Anda, tetapi paling tidak beberapa jalur Anda harus menyelidiki lebih lanjut. HTH
sumber
Saya akhirnya menemukan apa yang menyebabkan masalah: sinyal reset dari pin 4 (DTR - Data Terminal Ready) pada konektor DB9-Female melonjak hingga 10V sebelum pergi ke 0V dan memicu pemrograman tegangan tinggi pada ATmega. Di bawah ini adalah bidikan lingkup yang menunjukkan situasi:
Jejak kuning adalah
DTR
sinyal sedangkan jejak hijau adalahRESET
sinyal pada ATmega.Menurut Atmel's Atmel AVR042: Catatan aplikasi Pertimbangan Desain Perangkat Keras AVR , seseorang harus menambahkan dioda ESD antara ATmega
RESET
danVcc
untuk mencegah sinyal reset memicu mode pemrograman tegangan tinggi, seperti:Setelah menambahkan dioda sinyal kecil (1N4148) seperti catatan aplikasi yang disarankan, saya memperbaiki masalahnya. Lihat di bawah lingkup pengambilan yang diambil setelah dioda ditambahkan.
Sekarang puncak 10V hilang.
Itu yang sulit !! Tetapi saya tidak akan pernah menemukan apa yang salah tanpa penelitian dan alat yang tepat. Uang pada ruang lingkup adalah uang yang dihabiskan dengan baik !!
sumber
Saya tidak yakin tetapi masalahnya mungkin juga terkait dengan fitur reset-otomatis papan konverter.
Saya menyalin desain papan konverter dari Arduino Severino dan sesuai dengan manualnya , komunikasi serial harus diatur ke 19.200 bps agar fitur pengaturan ulang otomatis berfungsi.
Yah, saya menggunakan 115.200, jadi itu pasti masalah.
sumber