Mikrokontroler - apakah status keluaran konstan atau multipleks?

14

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.

sherrellbc
sumber
4
+1 Pertanyaan menarik meskipun pernyataan pertama Anda salah dan gagasan tentang PWM perangkat keras adalah agar prosesor tidak harus terlibat sepanjang waktu. Tetapi biarkan seperti itu dan saya yakin seseorang akan memiliki penjelasan yang baik tentang bagaimana semuanya bekerja.
PeterJ
Saya pikir PWM sedemikian rupa sehingga prosesor mengubah waktu siklus TINGGI / RENDAH. Dengan cara itu, tampaknya prosesor terlibat langsung - setidaknya waktu di mana keadaan diubah.
sherrellbc
1
Untuk mengubah siklus tugas dari katakanlah 10% menjadi 20% CPU harus dilibatkan tetapi hanya beberapa siklus saja untuk mengubah register. Untuk perangkat keras, katakanlah sekali PWM diubah menjadi 20% bahkan jika frekuensi perangkat keras PWM adalah 1MHz tidak lagi mempengaruhi prosesor.
PeterJ
Apakah Anda memiliki tautan yang baik ke dokumentasi tentang cara kerja mikrokontroler di tingkat yang lebih rendah? Saya tidak mengerti referensi Anda ke register sehingga tidak bisa sepenuhnya menghargai jawaban ini.
sherrellbc
1
Tidak terlalu membingungkan. Berusaha lebih keras!
radagast

Jawaban:

16

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.

Kris Bahnsen
sumber
Inilah tepatnya pertanyaan saya, walaupun tampaknya ada banyak mikrokontroler yang tidak saya sadari bahwa saya tidak mengerti.
sherrellbc
3
Pertahankan hidung Anda dalam lembar data, bereksperimen, dan ajukan pertanyaan. Anda akan terbiasa.
Kris Bahnsen
11

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.

radagast
sumber
Dan kami membuat kemajuan! Terima lebih masuk akal sekarang. Terima kasih!
sherrellbc
10

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:

masukkan deskripsi gambar di sini

Oli Glaser
sumber
Saya tidak menyadari komponen periferal seperti itu ada. Jadi, apakah komponen-komponen ini merupakan prosesor yang agak kecil? Sangat masuk akal hal-hal seperti itu ada.
sherrellbc
Bukan prosesor, tidak - periferal lebih seperti blok perangkat keras khusus yang dirancang khusus untuk melakukan tugas tertentu. Misalnya mikro khas akan ada di peripheral papan seperti ADC, PWM, Timer, UART, SPI, dll.
Oli Glaser
Saya pasti akan mempelajari lebih dalam tentang hal ini, meskipun pemahaman saya tentang sistem ini jika bias. Saya mendapat kesan bahwa UC akan melakukan semua pemrosesan. "Instruksi" yang diberikan kepada periferal harus ditafsirkan. Saya kira ini adalah di mana saya tidak sepenuhnya memahami.
sherrellbc
2
Saya menambahkan diagram mikro yang khas - tempat yang baik untuk mulai membaca adalah lembar data, yang juga saya tautkan.
Oli Glaser
@sherrellbc, di situlah prosesor dan mikroprosesor berbeda. Dalam μC, Anda dapat melihat bahwa mis. RAM, ROM, ALU, Serial Port dll semuanya terintegrasi ke dalam chip yang sama. Di PC, Anda tahu bahwa prosesor terhubung secara eksternal ke sirkuit seperti itu.
chwi
5

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
Saya mengerti komentar Anda tentang interupsi timer PWM - itu masuk akal. Dengan cara ini prosesor hanya terlibat pada saat itu mengubah keadaan output. Meskipun, Anda mengatakan pin I / O adalah multiplexed - jadi artinya jika saya memprogram controller untuk mengeluarkan pin HIGH dan kemudian melakukan beberapa perhitungan yang tidak terkait lainnya, maka pin tersebut sebentar-sebentar diatur ke RENDAH sementara proses seperti itu dilakukan?
sherrellbc
@sherrellbc Anda mengendalikan bagaimana pin di-multipleks. Biasanya Anda mengonfigurasinya saat boot dan tidak mengubahnya setelah itu. Jadi itu tidak akan "sebentar rendah", kecuali jika Anda secara khusus mengatakannya untuk melakukan itu.
Saya mohon maaf jika dengan menambahkan contoh PWM saya membingungkan pembaca. Maksud dari pertanyaan ini adalah untuk menentukan apakah atau tidak pin I / O yang diinstruksikan ke HIGH adalah multiplexing oleh pengontrol (yaitu karena ia harus terus-menerus "menyegarkan" status pin dan hanya melakukan satu hal pada satu waktu). Namun, sekarang saya menyadari ada banyak mikrokontroler yang tidak saya mengerti (peripheral). Jadi saya kira jawabannya adalah tidak, pin output diatur ke status dan tetap dalam kondisi itu hingga berubah.
sherrellbc
1

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.

Peter Bennett
sumber
Mereka akan multiplexing jika prosesor mengatur nilai, menghapus nilai itu, melakukan instruksi lain dan kemudian berputar dan mengatur nilai asli lagi. Ini adalah inti dari pertanyaan saya. Namun, dari jawaban di atas ada berbagai perihperals yang membentuk fungsi-fungsi ini dan prosesor tidak ada hubungannya dengan itu sampai diperintahkan untuk melakukan sebaliknya; Saya tidak tahu tentang ini. Banyak yang harus dipelajari. Terima kasih atas jawabannya.
sherrellbc
1

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.

Dan
sumber