Cara Implementasi Fungsi Watchdog Timer Menggunakan Mikrokontroler I/O

"Desainer sering menghadapi dua masalah I/O mikrokontroler. Masalah pertama adalah mikrokontroler terbaik untuk aplikasi tidak memiliki kombinasi kemampuan I/O yang tepat. Masalah kedua adalah I/O perlu ditambahkan ke lini produk yang telah diperkenalkan.

"

Pengarang: Jacob Beningo

Desainer sering menghadapi dua masalah I/O mikrokontroler. Masalah pertama adalah mikrokontroler terbaik untuk aplikasi tidak memiliki kombinasi kemampuan I/O yang tepat. Masalah kedua adalah I/O perlu ditambahkan ke lini produk yang telah diperkenalkan.

Saat masalah pertama muncul, pengembang sering kali harus membeli mikrokontroler yang lebih mahal dan lebih bertenaga. Saat menghadapi masalah kedua, biaya dan waktu yang diperlukan untuk beralih ke mikrokontroler baru dan migrasi perangkat lunak yang menyertainya bisa menjadi penghalang.

Untuk mengatasi kedua masalah ini, salah satu solusi potensial adalah menggunakan perangkat ekspansi I/O eksternal, yang biasanya dihubungkan ke bus SPI atau I2C mikrokontroler. Ini menghindari penetapan mikrokontroler yang berlebihan dalam hal jumlah pin dan mungkin kinerja serta pengemasan. Pada saat yang sama, pendekatan ini memungkinkan desain produk berwawasan ke depan sebagai respons terhadap fitur seperti creep fitur, perluasan pasar target, permintaan fitur pelanggan, dan pemilihan mikrokontroler yang buruk, yang terjadi dari waktu ke waktu.

Artikel ini akan membahas persyaratan I/O mikrokontroler tipikal, memperkenalkan beberapa perangkat ekspansi eksternal yang sesuai, dan kemudian menunjukkan cara menggunakan sumber daya di luar chip ini untuk menambahkan input dan output tujuan umum, penyimpanan memori, modulasi lebar pulsa (PWM), dan bahkan pengawas fungsi Timer.

Pilih antarmuka ekstensi

Mikrokontroler dilengkapi dengan beberapa antarmuka periferal on-chip berbeda yang dapat digunakan untuk berkomunikasi dengan perangkat eksternal. Bergantung pada mikrokontroler, antarmuka ini mungkin termasuk (untuk beberapa nama):

• Antarmuka Periferal Serial (SPI)
• Antar Terintegrasi sirkit (I2C) bis
• Bus Serial Universal (USB)
• Penerima/Pemancar Asinkron Universal (UART)
• Jaringan Area Pengontrol (CAN)
Wi-Fi

Antarmuka yang paling cocok untuk berkomunikasi dengan perangkat ekspansi eksternal adalah I2C dan SPI.

I2C adalah bus dua kabel yang secara tradisional beroperasi pada 100 kilobit per detik (kb/dtk) atau 400 kb/dtk, tetapi ada beberapa perangkat berkecepatan tinggi yang dapat mendukung 1 Mb/dtk atau lebih cepat. Salah satu jalur adalah pin jam khusus, sedangkan jalur lainnya digunakan untuk komunikasi dua arah antara perangkat master dan slave. Biasanya, mikrokontroler bertindak sebagai master dan perangkat eksternal bertindak sebagai budak. Budak dapat dialamatkan menggunakan skema pengalamatan 7-bit atau 10-bit.

SPI adalah antarmuka bus tiga kabel yang beroperasi antara 1 Mb/s dan 12 Mb/s. Bus SPI telah mendedikasikan jalur data output master, jalur data output slave, dan sebuah jam. Mikrokontroler juga dikonfigurasi sebagai perangkat master dan berkomunikasi dengan perangkat slave menggunakan jalur "slave select". Setiap perangkat pendukung yang terhubung ke mikrokontroler memerlukan pin keluaran khusus untuk memilihnya untuk komunikasi. Tidak sulit untuk membayangkan bahwa jika pengembang memiliki banyak perangkat eksternal yang ingin mereka sambungkan, mereka mungkin akan segera kehabisan jalur I/O dan memilih perangkat pendukung.

Misalnya, jika pengembang menggunakan STM32L011D4P7 STMicroelectronics, total 11 jalur I/O tersedia. Tiga jalur I/O diperlukan untuk data dan jam SPI saja, dan delapan jalur sisanya diperlukan untuk melakukan semua fungsi lain yang diperlukan oleh sistem selain untuk berkomunikasi dengan perangkat pendukung. Meskipun ini sangat memadai untuk banyak aplikasi, di beberapa titik perancang mungkin masih perlu memperluas I/O.

Secara umum, aturan praktisnya sangat sederhana: gunakan bus I2C saat menambahkan:

• masukan/keluaran
• PWM
• EEPROM
• Pengawas Timer
• Bus SPI harus digunakan untuk menambah fungsi seperti menyediakan akses memori berkecepatan tinggi untuk kartu SD.
• I/O tujuan umum yang diperluas
• Ada beberapa sirkuit terintegrasi yang mendukung perluasan input dan output melalui antarmuka I2C. Berikut beberapa contoh menarik:
• TCA9534PWR dari Texas Instruments
• PCA8574 dari NXP Semiconductors
• SX1520I087TRT dari Semtech Corporation

PCA8574 adalah perangkat yang sangat menarik karena hanya berisi satu register untuk melakukan input dan output. Satu register sangat mengurangi jumlah perangkat lunak yang diperlukan untuk mengonfigurasi perangkat dan membaca serta menulis pin (Gambar 2). Mikrokontroler berkomunikasi dengan PCA8574 melalui I2C dan memberi alamat perangkat sesuai dengan konfigurasi pin A0 ke A2. Fitur ini meningkatkan fleksibilitas desain, sehingga pengembang dapat memilih alamat slave untuk PCA8574 dan dapat menggunakan banyak alamat slave dalam satu desain.


Gambar 2: PCA8574 NXP adalah ekspander I/O I8C 2-bit kuasi-dua arah. Ekspander hanya memiliki satu register I2C untuk membaca dan menulis untuk menjalankan fungsi I/O pada pinnya, menjadikannya perangkat yang sangat sederhana dan ringkas. (Kredit gambar: Semikonduktor NXP)

Secara default, P0 hingga P7 dikonfigurasikan sebagai input saat penyalaan. Membaca satu register internal menetapkan status setiap pin pada perangkat, apakah pin itu dikonfigurasi sebagai input atau output. PCA8574 memungkinkan pin untuk digunakan sebagai input dan output, jadi menulis ke register juga mengatur output bit yang sesuai.

Drive output ditarik oleh internal yang lemah Penghambat yang mudah kelebihan beban oleh nilai masukan. Jika status salah satu input berubah, pin INT akan beralih rendah, memberi tahu mikrokontroler bahwa status input telah berubah. Mikrokontroler kemudian dapat memanggil I2C untuk membaca nilai baru.

PWM yang diperluas

Ekspander PWM adalah perangkat ekspansi yang sangat berguna. Perangkat ini sangat berguna saat mengemudikan LED. Ketika mikrokontroler tidak melakukan apa-apa, mikrokontroler dapat dialihkan ke mode tidur, di mana ekspander PWM bertanggung jawab untuk menggerakkan status LED.

Contoh sempurna tentang cara menggunakan ekspander PWM sering ditemukan di rangkaian tombol RGB menggunakan tombol E-Switch PV6F240SSG RGB atau Schurter Elektronik komponen' Tombol 3-101-399 SPST RGB (Gambar 3).

Tombol RGB Schurter menampilkan LED merah, hijau, dan biru di sekitar tombol SPST, memungkinkan pengembang membuat pola berwarna cerah. Jenis aplikasi ini ideal untuk chip ekspansi PWM.

pepatah MAX7315 Integrated adalah chip ekspansi PWM untuk antarmuka I2C. MAX7315 memiliki 8 port PWM dengan kontrol intensitas LED, yang dengan mudah mencakup 3 saluran yang diperlukan untuk menggerakkan sakelar RGB, memungkinkan satu perangkat untuk menggerakkan beberapa sakelar dan beberapa LED individual. Selain itu, MAX7315 memiliki port kesembilan yang dapat digunakan sebagai interupsi deteksi transisi atau output tujuan umum.

Antarmuka MAX7315 I2C sedikit lebih kompleks daripada PCA8574 NXP karena berisi banyak register. Oleh karena itu, pengembang harus mengalamatkan perangkat slave, memberikan alamat memori yang ingin dibaca atau ditulisnya, lalu melakukan penulisan atau pembacaan. Peta memori MAX7315 ditunjukkan pada Gambar 4.


Gambar 4: Pengontrol MAX7315 PWM menampilkan delapan port keluaran, termasuk fungsi intensitas LED. Peta register perangkat sangat sederhana, memungkinkan akses mudah ke fungsi PWM tingkat lanjut. (Kredit gambar: Maxim Terintegrasi)

Peta register MAX7315 sangat sederhana, memungkinkan akses mudah ke fungsi PWM tingkat lanjut.

Combo Expander dengan WDT, EEPROM dan PWM

Seperti yang ditunjukkan, ekspander I/O I2C-bus bisa sangat bertenaga bila digunakan sebagai perangkat yang berdiri sendiri. Artinya, expander hanya menyertakan fungsi khusus seperti I/O atau PWM. Contohnya adalah Cemara semikonduktorCY8C9520A multiport I/O expander, yang berisi beberapa ekspansi periferal dalam satu IC kemasan. CY8C9520A memiliki tiga ekstensi: ekstensi 20-bit, 40-bit atau 60-bit. Pin ini kemudian dapat dikonfigurasi sebagai input, output, atau PWM (Gambar 5).


Gambar 5: Cemara SemikonduktorCY8C9520 adalah ekspander I/O 20-, 40-, atau 60-bit dengan EEPROM. Ekspander ini memungkinkan pin ekspansi dikonfigurasi sebagai input, output, atau PWM. (Kredit gambar: Cemara Semikonduktor)

Selain perluasan I/O, CY8C9520 juga memiliki fitur EEPROM yang dapat digunakan untuk menyimpan pengaturan aplikasi penting seperti nomor seri, serta parameter konfigurasi penting lainnya.

Melihat lebih dekat pada Gambar 5, Anda dapat melihat pin WD6 pada GPort 2. Pin ini adalah pin output pengawas waktu dan dapat digunakan untuk mengatur ulang mikrokontroler ketika mikrokontroler tidak dapat berkomunikasi, dan untuk mengoperasikan pengawas CY8C9529. Pengaturan pengawas sepenuhnya dapat dikonfigurasi dan dapat digunakan untuk menambahkan ketahanan tambahan pada kode aplikasi.

Tips dan Trik Memperluas Kemampuan Mikrokontroler

Ada banyak teknologi yang membantu memperluas kemampuan mikrokontroler. Berikut adalah beberapa tip dan trik bermanfaat:

Gunakan I2C untuk menghubungkan perangkat eksternal. Antarmuka hanya membutuhkan dua pin dan mendukung banyak perangkat budak.

Sebelum mendesain bagian menjadi perangkat keras, beli papan pengembangan, atau solder chip ke papan ekspansi, dan uji apakah sesuai dengan kebutuhan sistem Anda.

Menggunakan alat bus I2C untuk berinteraksi dengan perangkat ekspansi dan melihat cara kerjanya dapat mempercepat pengembangan perangkat lunak secara dramatis.

Selama pengembangan perangkat lunak, gunakan bus analyzer untuk memantau komunikasi dengan perangkat eksternal guna meminimalkan waktu debug.

Jika memungkinkan, pilih perangkat dengan pengawas waktu eksternal sebagai alat untuk menambah ketahanan pada desain sistem.

Saat menghubungkan memori off-chip untuk mendapatkan data (bukan data konfigurasi), harap gunakan antarmuka berkecepatan tinggi seperti SPI.

Jika perangkat mengembalikan sinyal negatif (NAK), atau bus diseret, pastikan driver I2C mikrokontroler dapat menangani masalah tersebut. Tidak jarang driver ini mengabaikan kesalahan dan memasuki loop tak terbatas ketika mereka menerima respons yang tidak terduga.

Kesimpulannya

Saat desain berkembang ke titik di mana mikrokontroler tidak dapat lagi menyediakan lebih banyak I/O, pengembang tidak perlu meruntuhkan desain yang ada. Sebagai gantinya, mereka dapat menggunakan chip periferal untuk menambahkan fungsionalitas ekstra ke sistem.

Pengarang: Jacob Beningo

Desainer sering menghadapi dua masalah I/O mikrokontroler. Masalah pertama adalah mikrokontroler terbaik untuk aplikasi tidak memiliki kombinasi kemampuan I/O yang tepat. Masalah kedua adalah I/O perlu ditambahkan ke lini produk yang telah diperkenalkan.

Saat masalah pertama muncul, pengembang sering kali harus membeli mikrokontroler yang lebih mahal dan lebih bertenaga. Saat menghadapi masalah kedua, biaya dan waktu yang diperlukan untuk beralih ke mikrokontroler baru dan migrasi perangkat lunak yang menyertainya bisa menjadi penghalang.

Untuk mengatasi kedua masalah ini, salah satu solusi potensial adalah menggunakan perangkat ekspansi I/O eksternal, yang biasanya dihubungkan ke bus SPI atau I2C mikrokontroler. Ini menghindari penetapan mikrokontroler yang berlebihan dalam hal jumlah pin dan mungkin kinerja serta pengemasan. Pada saat yang sama, pendekatan ini memungkinkan desain produk berwawasan ke depan sebagai respons terhadap fitur seperti creep fitur, perluasan pasar target, permintaan fitur pelanggan, dan pemilihan mikrokontroler yang buruk, yang terjadi dari waktu ke waktu.

Artikel ini akan membahas persyaratan I/O mikrokontroler tipikal, memperkenalkan beberapa perangkat ekspansi eksternal yang sesuai, dan kemudian menunjukkan cara menggunakan sumber daya di luar chip ini untuk menambahkan input dan output tujuan umum, penyimpanan memori, modulasi lebar pulsa (PWM), dan bahkan pengawas fungsi Timer.

Pilih antarmuka ekstensi

Mikrokontroler dilengkapi dengan beberapa antarmuka periferal on-chip berbeda yang dapat digunakan untuk berkomunikasi dengan perangkat eksternal. Bergantung pada mikrokontroler, antarmuka ini mungkin termasuk (untuk beberapa nama):

• Antarmuka Periferal Serial (SPI)
• Bus Inter-Integrated Circuit (I2C).
• Bus Serial Universal (USB)
• Penerima/Pemancar Asinkron Universal (UART)
• Jaringan Area Pengontrol (CAN)
• Wifi

Antarmuka yang paling cocok untuk berkomunikasi dengan perangkat ekspansi eksternal adalah I2C dan SPI.

I2C adalah bus dua kabel yang secara tradisional beroperasi pada 100 kilobit per detik (kb/dtk) atau 400 kb/dtk, tetapi ada beberapa perangkat berkecepatan tinggi yang dapat mendukung 1 Mb/dtk atau lebih cepat. Salah satu jalur adalah pin jam khusus, sedangkan jalur lainnya digunakan untuk komunikasi dua arah antara perangkat master dan slave. Biasanya, mikrokontroler bertindak sebagai master dan perangkat eksternal bertindak sebagai budak. Budak dapat dialamatkan menggunakan skema pengalamatan 7-bit atau 10-bit.

SPI adalah antarmuka bus tiga kabel yang beroperasi antara 1 Mb/s dan 12 Mb/s. Bus SPI telah mendedikasikan jalur data output master, jalur data output slave, dan sebuah jam. Mikrokontroler juga dikonfigurasi sebagai perangkat master dan berkomunikasi dengan perangkat slave menggunakan jalur "slave select". Setiap perangkat pendukung yang terhubung ke mikrokontroler memerlukan pin keluaran khusus untuk memilihnya untuk komunikasi. Tidak sulit untuk membayangkan bahwa jika pengembang memiliki banyak perangkat eksternal yang ingin mereka sambungkan, mereka mungkin akan segera kehabisan jalur I/O dan memilih perangkat pendukung.

Misalnya, jika pengembang menggunakan STM32L011D4P7 STMicroelectronics, total 11 jalur I/O tersedia. Tiga jalur I/O diperlukan untuk data dan jam SPI saja, dan delapan jalur sisanya diperlukan untuk melakukan semua fungsi lain yang diperlukan oleh sistem selain untuk berkomunikasi dengan perangkat pendukung. Meskipun ini sangat memadai untuk banyak aplikasi, di beberapa titik perancang mungkin masih perlu memperluas I/O.

Secara umum, aturan praktisnya sangat sederhana: gunakan bus I2C saat menambahkan:

• masukan/keluaran
• PWM
• EEPROM
• Pengawas Timer
• Bus SPI harus digunakan untuk menambah fungsi seperti menyediakan akses memori berkecepatan tinggi untuk kartu SD.
• I/O tujuan umum yang diperluas
• Ada beberapa sirkuit terintegrasi yang mendukung perluasan input dan output melalui antarmuka I2C. Berikut beberapa contoh menarik:
• TCA9534PWR dari Texas Instruments
• PCA8574 dari NXP Semiconductors
• SX1520I087TRT dari Semtech Corporation

PCA8574 adalah perangkat yang sangat menarik karena hanya berisi satu register untuk melakukan input dan output. Satu register sangat mengurangi jumlah perangkat lunak yang diperlukan untuk mengonfigurasi perangkat dan membaca serta menulis pin (Gambar 2). Mikrokontroler berkomunikasi dengan PCA8574 melalui I2C dan memberi alamat perangkat sesuai dengan konfigurasi pin A0 ke A2. Fitur ini meningkatkan fleksibilitas desain, sehingga pengembang dapat memilih alamat slave untuk PCA8574 dan dapat menggunakan banyak alamat slave dalam satu desain.


Gambar 2: PCA8574 NXP adalah ekspander I/O I8C 2-bit kuasi-dua arah. Ekspander hanya memiliki satu register I2C untuk membaca dan menulis untuk menjalankan fungsi I/O pada pinnya, menjadikannya perangkat yang sangat sederhana dan ringkas. (Kredit gambar: Semikonduktor NXP)

Secara default, P0 hingga P7 dikonfigurasikan sebagai input saat penyalaan. Membaca satu register internal menetapkan status setiap pin pada perangkat, apakah pin itu dikonfigurasi sebagai input atau output. PCA8574 memungkinkan pin untuk digunakan sebagai input dan output, jadi menulis ke register juga mengatur output bit yang sesuai.

Penggerak keluaran ditarik ke atas oleh resistor internal yang lemah yang mudah kelebihan beban oleh nilai masukan. Jika status salah satu input berubah, pin INT akan beralih rendah, memberi tahu mikrokontroler bahwa status input telah berubah. Mikrokontroler kemudian dapat memanggil I2C untuk membaca nilai baru.

PWM yang diperluas

Ekspander PWM adalah perangkat ekspansi yang sangat berguna. Perangkat ini sangat berguna saat mengemudikan LED. Ketika mikrokontroler tidak melakukan apa-apa, mikrokontroler dapat dialihkan ke mode tidur, di mana ekspander PWM bertanggung jawab untuk menggerakkan status LED.

Contoh sempurna tentang cara menggunakan ekspander PWM sering ditemukan di rangkaian tombol RGB menggunakan tombol E-Switch PV6F240SSG RGB atau Schurter Elektronik Tombol SPST RGB 3-101-399 Komponen (Gambar 3).

Tombol RGB Schurter menampilkan LED merah, hijau, dan biru di sekitar tombol SPST, memungkinkan pengembang membuat pola berwarna cerah. Jenis aplikasi ini ideal untuk chip ekspansi PWM.

MAX7315 Maxim Integrated adalah chip ekspansi PWM untuk antarmuka I2C. MAX7315 memiliki 8 port PWM dengan kontrol intensitas LED, yang dengan mudah mencakup 3 saluran yang diperlukan untuk menggerakkan sakelar RGB, memungkinkan satu perangkat untuk menggerakkan beberapa sakelar dan beberapa LED individual. Selain itu, MAX7315 memiliki port kesembilan yang dapat digunakan sebagai interupsi deteksi transisi atau output tujuan umum.

Antarmuka MAX7315 I2C sedikit lebih kompleks daripada PCA8574 NXP karena berisi banyak register. Oleh karena itu, pengembang harus mengalamatkan perangkat slave, memberikan alamat memori yang ingin dibaca atau ditulisnya, lalu melakukan penulisan atau pembacaan. Peta memori MAX7315 ditunjukkan pada Gambar 4.


Gambar 4: Pengontrol MAX7315 PWM menampilkan delapan port keluaran, termasuk fungsi intensitas LED. Peta register perangkat sangat sederhana, memungkinkan akses mudah ke fungsi PWM tingkat lanjut. (Kredit gambar: Maxim Terintegrasi)

Peta register MAX7315 sangat sederhana, memungkinkan akses mudah ke fungsi PWM tingkat lanjut.

Combo Expander dengan WDT, EEPROM dan PWM

Seperti yang ditunjukkan, ekspander I/O I2C-bus bisa sangat bertenaga bila digunakan sebagai perangkat yang berdiri sendiri. Artinya, expander hanya menyertakan fungsi khusus seperti I/O atau PWM. Contohnya adalah CY8C9520A multiport I/O expander dari Cypress Semiconductor, yang berisi beberapa ekspansi periferal dalam satu paket IC. CY8C9520A memiliki tiga ekstensi: ekstensi 20-bit, 40-bit atau 60-bit. Pin ini kemudian dapat dikonfigurasi sebagai input, output, atau PWM (Gambar 5).


Gambar 5: CY8C9520 Cypress Semiconductor adalah ekspander I/O 20-, 40-, atau 60-bit dengan EEPROM. Ekspander ini memungkinkan pin ekspansi dikonfigurasi sebagai input, output, atau PWM. (Kredit gambar: Cypress Semiconductor)

Selain perluasan I/O, CY8C9520 juga memiliki fitur EEPROM yang dapat digunakan untuk menyimpan pengaturan aplikasi penting seperti nomor seri, serta parameter konfigurasi penting lainnya.

Melihat lebih dekat pada Gambar 5, Anda dapat melihat pin WD6 pada GPort 2. Pin ini adalah pin output pengawas waktu dan dapat digunakan untuk mengatur ulang mikrokontroler ketika mikrokontroler tidak dapat berkomunikasi, dan untuk mengoperasikan pengawas CY8C9529. Pengaturan pengawas sepenuhnya dapat dikonfigurasi dan dapat digunakan untuk menambahkan ketahanan tambahan pada kode aplikasi.

Tips dan Trik Memperluas Kemampuan Mikrokontroler

Ada banyak teknologi yang membantu memperluas kemampuan mikrokontroler. Berikut adalah beberapa tip dan trik bermanfaat:

Gunakan I2C untuk menghubungkan perangkat eksternal. Antarmuka hanya membutuhkan dua pin dan mendukung banyak perangkat budak.

Sebelum mendesain bagian menjadi perangkat keras, beli papan pengembangan, atau solder chip ke papan ekspansi, dan uji apakah sesuai dengan kebutuhan sistem Anda.

Menggunakan alat bus I2C untuk berinteraksi dengan perangkat ekspansi dan melihat cara kerjanya dapat mempercepat pengembangan perangkat lunak secara dramatis.

Selama pengembangan perangkat lunak, gunakan bus analyzer untuk memantau komunikasi dengan perangkat eksternal guna meminimalkan waktu debug.

Jika memungkinkan, pilih perangkat dengan pengawas waktu eksternal sebagai alat untuk menambah ketahanan pada desain sistem.

Saat menghubungkan memori off-chip untuk mendapatkan data (bukan data konfigurasi), harap gunakan antarmuka berkecepatan tinggi seperti SPI.

Jika perangkat mengembalikan sinyal negatif (NAK), atau bus diseret, pastikan driver I2C mikrokontroler dapat menangani masalah tersebut. Tidak jarang driver ini mengabaikan kesalahan dan memasuki loop tak terbatas ketika mereka menerima respons yang tidak terduga.

Kesimpulannya

Saat desain berkembang ke titik di mana mikrokontroler tidak dapat lagi menyediakan lebih banyak I/O, pengembang tidak perlu meruntuhkan desain yang ada. Sebagai gantinya, mereka dapat menggunakan chip periferal untuk menambahkan fungsionalitas ekstra ke sistem.

Lihat lebih banyak: modul IGBT | Layar LCD | Komponen Elektronik