PWM jelas membutuhkan sumber daya komputasi (dan karenanya tidak dapat dilakukan bersamaan dengan proses lain), tetapi jika saya menetapkan pin sebagai output 5V atau 0V, apakah status ini tetap konstan atau berulang kali "disegarkan" saat mikrokontroler bekerja pada proses lain ?
Ini sulit dijelaskan dalam teks jadi saya memikirkan analogi dengan pertanyaan saya. Bayangkan saya memiliki gelas di tangan saya dan diperintahkan untuk meletakkannya di atas meja. Kemudian saya diperintahkan untuk duduk di kursi.
Kaca di atas meja adalah negara. Apakah saya meninggalkan gelas di atas meja, atau saya mengambilnya kembali dan duduk dan ulangi dengan sangat cepat sehingga Anda tidak menyadari gelas itu pernah dikeluarkan dari meja?
Atau mungkin lebih sederhana, apakah mikrokontroler "lupa," jika Anda mau, tentang keadaan pin kecuali jika Anda secara eksplisit memprogram perubahan negara?
Semoga saya membuat itu membingungkan mungkin.
sumber
Jawaban:
Cara saya menafsirkan pertanyaan tidak ada hubungannya dengan PWM, maaf jika saya jauh dari dasar, tapi sepertinya Anda menggunakannya hanya sebagai contoh.
Hampir setiap jenis mikrokontroler dan perangkat dengan I / O menggunakan kait / FF untuk menggerakkan sirkuit output mereka. Apa ini artinya, ketika Anda mengatur keadaan, itu tetap dalam keadaan itu. Ini tidak seperti DRAM di mana statistik output harus terus-menerus "disegarkan" agar tetap pada keadaan mereka.
Dengan contoh gelas Anda, saya belum pernah melihat perangkat keras yang akan mengambil dan meletakkan gelas di atas meja berulang kali. Itu hanya akan pernah meletakkan gelas di atas meja, dan meninggalkannya di sana sampai perubahan negara diminta.
Kembali ke PWM (kalau-kalau Anda benar-benar bertanya tentang PWM). Apakah Anda bitbang atau mikrokontroler Anda memiliki perangkat keras khusus seperti yang diuraikan di pos lainnya, blok I / O hanya diakses dan dimodifikasi jika perubahan keadaan diminta dengan menjalankan kode atau perangkat PWM.
sumber
Mikrokontroler tidak perlu me-refresh output. Begitu diatur, mereka mempertahankan statusnya tanpa batas (hingga daya dilepas). Sementara pada prosesor yang lebih lama, jam diperlukan untuk mempertahankan status prosesor, prosesor saat ini adalah yang disebut sepenuhnya statis. Itu berarti bahwa jam benar-benar dapat dihentikan dan semuanya akan tetap dalam keadaan saat ini. Itu karena semua register (termasuk I / O) dibuat menggunakan sandal jepit.
sumber
Kebanyakan mikrokontroler modern memiliki perangkat PWM perangkat keras khusus yang menangani PWM, analogi yang sangat kasar mungkin:
Inti prosesor memberi tahu periferal untuk: "beralih pin ini pada 10kHz dan siklus kerja 50% sampai saya katakan sebaliknya". Kemudian intinya bebas melakukan hal-hal lain. Ini dapat mengatur interupsi, yaitu meminta perangkat untuk memberi tahu kapan sesuatu yang menarik terjadi.
Anda mungkin bisa menganggap inti sebagai "bos" dan periferal sebagai pekerja spesialis. Inti mengelola seluruh program (membaca setiap instruksi dan menindaklanjutinya) dan "meminta" periferal untuk melakukan berbagai tugas dan memberitahukannya ketika mereka telah menyelesaikannya.
Dalam analogi Anda, itu akan seperti orang lain memegang gelas, Anda memerintahkan mereka untuk meletakkannya di atas meja sementara Anda bebas untuk duduk di kursi.
Jika mikro tidak memiliki periferal khusus, maka mikro harus melakukannya secara "manual" (yaitu sendiri) dan melacak status pin dan pengaturan waktu antara beralih. Ini berarti banyak siklus yang didedikasikan untuk hal-hal sederhana yang mudah ditangani oleh perangkat sederhana.
Berikut adalah diagram tata letak mikrokontroler 8-bit yang populer, PIC16F690 . Perhatikan perangkat yang diatur di bagian bawah:
sumber
Anda membuat beberapa asumsi yang tidak sepenuhnya valid. Juga, ya, Anda membuat pertanyaan itu membingungkan mungkin. Serius.
PWM dapat dilakukan bersamaan dengan proses lain. Jika dilakukan dalam perangkat lunak, Anda menggunakan penghenti waktu untuk menghasilkan sinyal PWM pada pin GPIO. Interupsi lain dapat berjalan, dan proses utama adalah melakukan hal-hal yang tidak terkait. Juga, banyak MCU dapat melakukan PWM langsung di perangkat timer, membebaskan MCU untuk melakukan hal-hal lain.
Adapun Pin I / O, mereka multiplexed. Tapi Anda mengendalikan bagaimana mereka digandakan, jadi itu bukan masalah.
sumber
Sebagian besar pin I / O pada mikrokontroler adalah multi-fungsi, tetapi saya tidak akan menyebutnya multiplexed.
Misalnya, beberapa pin pada AVR dapat digunakan sebagai input digital, output digital, atau input analog. Anda biasanya akan memilih fungsi yang diinginkan sebagai bagian dari inisialisasi program, dan tidak mengubahnya nanti (walaupun saya mungkin melihat beberapa alasan untuk mengubah input analog ke input digital untuk melihat sinyal yang sama.)
Untuk output digital, setelah pin ditetapkan menjadi output, mereka akan memegang nilai terakhir yang ditulis prosesor kepada mereka - tidak perlu "menyegarkan" secara berkala.
sumber
Dalam contoh sederhana perangkat PWM perangkat keras mikrokontroler, penghitung 8 bit mungkin terhubung ke komparator digital 8 bit. Mikrokontroler akan memuat nomor ke komparator dan menambah penghitung dengan jam sistem atau beberapa versi terbagi prescale itu. penghitung kemudian akan berjalan bebas, dihitung dari 0 hingga 255 dan kembali ke nol berulang kali. Komparator akan memiliki output yang menunjukkan apakah nilai penghitung lebih besar atau kurang dari nilai pembanding. Ini akan menjadi output PWM. Periode PWM akan menjadi berapa lama penghitung untuk menyelesaikan siklus hitungan dan siklus tugas akan menjadi apa fraksi dari jumlah total diwakili oleh nilai komparator. Kode mikrokontroler tidak akan ada hubungannya kecuali mengatur perangkat keras pada awalnya dan mengubah data komparator ketika perubahan PWM diinginkan. PWM akan menghasilkan aliran pulsa PWM terus menerus tanpa perhatian prosesor.
sumber