New Microsoft Office Word Document

30
Page 1 8-bit Mikrokontroler Catatan Aplikasi AVR132: Menggunakan Watchdog Timer Ditingkatkan Fitur Sistem Watchdog Reset Sumber Parameter Backup Sebelum Sistem Watchdog Reset Wakeup Timer dari semua Moda Tidur Menggunakan Watchdog untuk Baik dan Sistem Reset Wakeup Penanganan Bendera Watchdog Reset Mengubah Konfigurasi Watchdog Flowchart untuk Operasi Watchdog Contoh Kode Sumber Wahyu 2551C-AVR-06/08 1 Pendahuluan "Yah dirancang pengawas api timer off setiap hari, diam-diam menyelamatkan sistem dan kehidupan tanpa harga yang ditawarkan kepada pahlawan manusia -. "Jack Ganssle. Tidak ada bagian dari perangkat lunak, menyimpan sangat terkecil, bebas dari bug. Aplikasi bisa terjebak dalam loop tak berujung. kode kesalahan tak terduga dapat menyebabkan serius masalah jika tidak ditangani dengan benar. Listrik kebisingan atau urutan yang tidak biasa peristiwa eksternal dapat menempatkan sistem dalam keadaan tidak dipikirkan oleh para desainer. Semua kasus-kasus ini berpotensi menggantung sistem selamanya atau menyebabkan kerusakan serius nya sekitarnya. Otomatis penanganan dan pemulihan kasus tersebut adalah pekerjaan dari pengawas timer. The Enhanced Watchdog Timer (wdt) berjalan independen dari sisa sistem, menyebabkan sistem me-reset setiap kali kali keluar. Namun, perangkat lunak aplikasi

Transcript of New Microsoft Office Word Document

Page 1: New Microsoft Office Word Document

Page 18-bitMikrokontrolerCatatan AplikasiAVR132: Menggunakan Watchdog Timer DitingkatkanFitur• Sistem Watchdog Reset Sumber• Parameter Backup Sebelum Sistem Watchdog Reset• Wakeup Timer dari semua Moda Tidur• Menggunakan Watchdog untuk Baik dan Sistem Reset Wakeup• Penanganan Bendera Watchdog Reset• Mengubah Konfigurasi Watchdog• Flowchart untuk Operasi Watchdog• Contoh Kode SumberWahyu 2551C-AVR-06/081 Pendahuluan"Yah dirancang pengawas api timer off setiap hari, diam-diam menyelamatkan sistem dan kehidupantanpa harga yang ditawarkan kepada pahlawan manusia -. "Jack Ganssle.Tidak ada bagian dari perangkat lunak, menyimpan sangat terkecil, bebas dari bug. Aplikasibisa terjebak dalam loop tak berujung. kode kesalahan tak terduga dapat menyebabkan seriusmasalah jika tidak ditangani dengan benar. Listrik kebisingan atau urutan yang tidak biasaperistiwa eksternal dapat menempatkan sistem dalam keadaan tidak dipikirkan oleh para desainer. Semuakasus-kasus ini berpotensi menggantung sistem selamanya atau menyebabkan kerusakan seriusnya sekitarnya. Otomatis penanganan dan pemulihan kasus tersebut adalah pekerjaan daripengawas timer.The Enhanced Watchdog Timer (wdt) berjalan independen dari sisa sistem,menyebabkan sistem me-reset setiap kali kali keluar. Namun, perangkat lunak aplikasiharus memastikan bahwa tidak pernah terjadi timeout dengan mengatur ulang wdt secara berkala sebagaiSelama perangkat lunak dalam keadaan sehat diketahui. Jika sistem hang atau programeksekusi rusak, yang wdt tidak akan menerima ulang berkala, dan akanakhirnya waktu keluar dan menyebabkan reset sistem.Para wdt di semua perangkat AVR baru ini juga memiliki kemampuan untuk menghasilkan interrupt bukandari ulang perangkat. Sejak wdt berjalan dari jam independen sendiri, dapat

Page 2: New Microsoft Office Word Document

digunakan untuk membangunkan AVR dari semua modus tidur. Hal ini membuat sebuah bangun yang idealtimer, mudah dikombinasikan dengan operasi biasa sebagai sumber reset sistem. Theinterupsi juga dapat digunakan untuk mendapatkan peringatan dini dari Watchdog mendatangSistem Reset, sehingga parameter penting bisa mundur ke memori non-volatile.

Page 22AVR1322551C-AVR-06/082 Teori operasiKetika Enhanced Watchdog Timer (wdt) periode telah kedaluwarsa, timeout wdtterjadi. Batas waktu disesuaikan menggunakan prescaler dikonfigurasi, yang membelahosilator wdt jam dengan faktor konstan. Melaksanakan WDR (Reset Watchdog)instruksi me-reset nilai timer. Perangkat lunak aplikasi menggunakan wdt harusdirancang sehingga mengeksekusi instruksi WDR berkala setiap kali memutuskan bahwasistem masih beroperasi dengan benar. Nilai timer secara otomatis dijalankan pada sistemreset dan ketika melumpuhkan wdt tersebut.The Enhanced Watchdog Timer memiliki tiga mode operasi. Ketika beroperasi diSistem wdt Reset Mode, batas waktu wdt menyebabkan reset sistem. Jika wdt InterruptMode dan interrupt global diaktifkan, timeout wdt menetapkan wdt Interrupt Benderadan mengeksekusi Interrupt handler wdt, bukan ulang sistem. Jika kedua wdtSistem Reset Mode dan wdt Interrupt Mode diaktifkan, timeout wdt pertama adalahditangani seakan-akan hanya wdt Interrupt Mode telah diaktifkan. Kemudian Mode Interrupt wdt adalahdinonaktifkan secara otomatis dan wdt ini kembali hanya dalam Sistem Reset modus wdt.Gambar 2-1 menunjukkan apa yang terjadi ketika timeout wdt terjadi. The kotak bertitikmenjelaskan tindakan yang dilakukan oleh sistem. Kotak berbaris padat menjelaskan tindakandilakukan oleh aplikasiBila menggunakan Enhanced Watchdog Timer itu adalah penting untuk mengetahui bahwa jikaWatchdog Selalu Aktif (WDTON) sekering diprogram, yang mungkin operasi hanyaMode wdt Sistem Reset Mode. Fitur keamanan mencegah perangkat lunak dari

Page 3: New Microsoft Office Word Document

memungkinkan wdt Interrupt Mode tidak sengaja, yang bisa menonaktifkan wdt yangReset Sistem fungsionalitas. Bila sekering WDTON adalah unprogrammed, wdt yangInterrupt Mode dapat digunakan seperti yang dijelaskan dalam dokumen ini.Sebagaimana disebutkan di atas, wdt adalah independen dari sisa sistem. Hal ini yang128 kHz internal sendiri osilator, yang berjalan sebagai sepanjang salah satu operasi wdtmode diaktifkan. Hal ini memastikan operasi yang aman bahkan jika osilator CPU utama gagal.Perhatikan bahwa, bahkan jika para desainer perangkat lunak tidak pernah dimaksudkan untuk menggunakan wdt, itu bisadiaktifkan secara tidak sengaja, misalnya dengan pointer pelarian atau-out kondisi cokelat. Jika wdt yangdiaktifkan secara tidak sengaja akan tetap aktif sampai firmware menonaktifkan itu sejakSistem Reset disebabkan oleh wdt tidak akan menonaktifkan WDR tersebut. Sistem Mereset tidakdisebabkan oleh wdt akan menginisialisasi ulang wdt ke konfigurasi default sesuai denganpengaturan sekering. Otomatis "ulang memungkinkan" dari wdt dalam kasus Sistem wdtReset adalah fitur keamanan untuk memastikan fungsi Watchdog handal. Oleh karena itukode startup harus selalu memeriksa Flags Reset dan mengambil tindakan yang sesuai jikaSistem wdt Reset telah terjadi, bahkan jika aplikasi tidak menggunakan wdt tersebut.Berbagai pengaturan dan fungsi dapat dikombinasikan untuk menggunakan wdt untuk berbedatujuan. Yang paling penting setup dijelaskan di bagian berikut.

Page 3AVR132Gambar 2-1. Urutan Event ketika keluar waktu wdt.Wdt timeoutWdt Interrupt Flag setWdt InterruptMode diaktifkan?Global interupsidiaktifkan?Wdt Interrupt FlagdibersihkanSistem wdt Reset

Page 4: New Microsoft Office Word Document

Reset wdt Flag setTerusYaTidak adaYaTidak adaJalankan wdtInterrupt HandlerSistem wdt ResetMode diaktifkanSistem wdt ResetMode diaktifkan?Wdt Interrupt ModecacatYaTidak adaBendera tidak dihapus jikainterupsi globalcacatKonfigurasi wdt untuk bekerja sebagai sumber system reset saja, sangatlah mudah.Aktifkan Sistem wdt Reset Mode, menetapkan batas waktu tunda yang wajar dan pergilah.Jika rutinitas inisialisasi Anda memakan waktu lebih lama daripada periode timeout wdt, mereka harusmengeksekusi instruksi WDR di pos pemeriksaan yang tepat selama eksekusi. Jika tidak,kode tidak akan pernah mencapai loop utama sebelum wdt me-reset sistem.Batas waktu harus dipilih sehingga lebih panjang dari yang terpanjang mungkineksekusi jalan melalui loop utama dari aplikasi Anda. Ini termasuk diharapkaninterrupt handler juga. Jika loop utama Anda sangat besar, beberapa pemeriksaan dapatdimasukkan di dalam loop untuk memungkinkan waktu timeout yang lebih pendek.Memilih batas waktu yang benar memerlukan pengetahuan yang terperinci waktunyakarakteristik loop utama Anda. Dalam banyak aplikasi, yang kuat pendekatan yang paling32551C-AVR-06/08

Page 44AVR132dapat memilih periode batas waktu beberapa detik. Ini akan setidaknya me-resetsistem jika terjebak dalam infinite loop.

Page 5: New Microsoft Office Word Document

Kebanyakan sistem embedded terdiri dari beberapa kode inisialisasi dan loop utama. Inikonstruksi juga setup paling efektif untuk digunakan dengan seorang pengawas. Contoh untukmenggunakan wdt dengan sistem seperti ditunjukkan pada Gambar 2-2.Gambar 2-2. Main loop bila menggunakan modus Sistem wdt Reset.Semuanya ok?Tidak adaYaWDRInisialisasi1 RutinRutin 2Rutin 3Interrupt HandlerSTARTUPWDRTungguSistem wdt ResetPerhatikan bahwa jika jangka waktu timeout dipilih sangat ketat, jumlah yang tidak biasa interruptbisa menyebabkan wdt Sistem Reset. Ini harus dipertimbangkan ketikamemilih jangka waktu timeout.The 'Semuanya ok? " cek pada akhir loop adalah bagian dari loop memutuskanapakah aplikasi beroperasi dengan benar atau tidak. Salah satu solusinya adalah dengan menggunakan bendera yangditetapkan dalam bagian yang berbeda dari loop utama untuk menunjukkan 'kesehatan yang baik', atau bahwa bagian-bagian penting darikode telah dikunjungi. Pemeriksaan akhir tes semua flag dan me-reset wdt danbendera jika semuanya berjalan dengan baik. Jika tidak, timeout akhirnya akan terjadi.Kode inisialisasi harus memeriksa wdt Reset Bendera dan mengambil yang sesuaitindakan. Hal ini dibahas secara lebih rinci dalam bagian 2.4.2551C-AVR-06/08

Page 5AVR1322.1 Backup Parameter Sebelum wdt Sistem ResetMetode yang dijelaskan pada bagian sebelumnya tidak memberikan peringatan dari datangSistem wdt Reset. Aplikasi ini tidak memiliki cara penanganan timeout dalam perangkat lunaksebelum ulang sistem terjadi. Namun, dengan menggunakan wdt Interrupt Mode,aplikasi dapat menggunakan Interrupt handler wdt untuk membuat cadangan parameter vital sebelum

Page 6: New Microsoft Office Word Document

reset sebenarnya.Dengan mengaktifkan kedua wdt Sistem Reset Mode dan wdt Interrupt Mode, timeout pertamaakan menonaktifkan wdt Interrupt Mode dan menjalankan interrupt handler. Yang keduatimeout kemudian menyebabkan reset sistem. The interrupt handler kemudian memiliki satu timeoutperiode untuk membuat cadangan parameter, misalnya, untuk EEPROM. Urutan peristiwaditunjukkan dalam Gambar 2-3. Kotak-kotak bertitik menjelaskan tindakan yang dilakukan oleh sistem.Kotak berbaris padat menjelaskan tindakan yang akan dilakukan oleh aplikasi.Gambar 2-3. Parameter Backup Sebelum wdt Reset Sistem.Backup pentingparameter1 wdt timeoutWdt Interrupt Modecacat2 wdt timeoutSistem wdt ResetSTARTUPSet Write Bendera LengkapInfinite loopReset wdt Flag setSistem wdt ResetMode diaktifkanBendera Lengkap Menulis bisa menjadi byte dalam EEPROM menunjukkan apakah cadanganoperasi selesai sebelum reset sistem. bendera ini diperiksa di startupkode jika wdt Reset Flag diatur, dan parameter Facebook didukung dapat digunakan untukmemulihkan keadaan sistem atau keperluan debugging. bendera harus dibersihkan selamainisialisasi untuk membatalkan parameter jika jenis lain ulang terjadi.Perhatikan bahwa tidak ada jaminan bahwa interrupt handler dijalankan sebelum suatu wdtSistem Reset. Jika interupsi cacat terlalu lama, interrupt handler tidak akan pernahdijalankan sebelum timeout kedua. Runaway pointer atau suara listrik juga bisasengaja menonaktifkan wdt Interrupt Mode. Oleh karena itu Tulis Bendera Complete adalahberarti kita mengetahui apakah parameter yang disimpan berlaku atau tidak.Loop tak terbatas pada akhir interrupt handler mencegah kode utama dariberpotensi menyebabkan kerusakan lebih.5

Page 7: New Microsoft Office Word Document

2551C-AVR-06/08

Page 66AVR1322.2 Menggunakan Mode Interrupt wdtSeperti dijelaskan di atas, wdt memiliki osilator internal sendiri berjalan secara independendari jam CPU utama. Hal ini memungkinkan untuk menggunakan Interrupt wdt sebagaiwakeup sumber dari semua modus tidur. Dengan mengaktifkan hanya wdt Interrupt Mode, sebuahtimeout akan menghasilkan permintaan interupsi, tetapi tidak menyebabkan me-reset sistem pada lebih lanjuttimeout.Memiliki sumber bangun tanpa menjalankan jam CPU utama adalah cara yang sangat baikmenghemat daya. Menggunakan daya-down mode tidur dengan wdt sebagai sumber bangun3μA menarik sekitar ketika menjalankan di 3V tegangan suplai. Sebuah contoh tentang cara menggunakanWdt sebagai sumber wakeup ditunjukkan dalam Gambar 2-4.Gambar 2-4. Menggunakan wdt sebagai timer bangun.Siap untuk tidurAktifkan mode tidur jikabelum diaktifkanAktifkan interupsi jika tidaksudah diaktifkanAktifkan Interrupt wdtModusTIDURWdt timeout wakeupNonaktifkan Interrupt wdtModusTerusSet timeout wdt periodeJika wakeups periodik lebih disukai, atas penonaktifan dari wdt Interrupt Mode dapat dibiarkankeluar. Para wdt kemudian akan menghasilkan interrupt pada setiap timeout, bangun CPU jikaberada dalam modus tidur.Perhatikan bahwa Sistem wdt Reset Mode tidak harus diaktifkan saat menggunakan wdtsemata-mata sebagai timer bangun. Jika diaktifkan, sistem reset akan terjadi pada berikutnya

Page 8: New Microsoft Office Word Document

timeout. Menggunakan wdt baik sebagai timer bangun dan sumber reset sistemdijelaskan dalam bagian berikut.2.3 Menggunakan wdt dalam Operasi TerpaduHal ini juga memungkinkan untuk mengatur wdt untuk bekerja sebagai timer bangun tidur saat memasukkanmodus, dan beralih ke wdt Reset Sistem operasi ketika kembali dalam modus aktif. Dengansetup ini tidak ada kebutuhan untuk menonaktifkan wdt Interrupt Mode, karena secara otomatisdinonaktifkan oleh perangkat keras. Untuk menggunakan wdt sebagai sumber bangun periodik,Oleh karena itu aplikasi harus mengaktifkan wdt Interrupt Mode sebelum memasuki tidurmodus setiap kali.2551C-AVR-06/08

Page 7AVR132Re-memungkinkan wdt Interrupt Mode dalam interrupt handler tidakdirekomendasikan, karena dapat menyebabkan wdt untuk terjebak dalam wdt Interrupt Mode, jikabeberapa bagian kode gagal.Ketika CPU kembali dalam modus aktif, instruksi WDR digunakan untuk mengatur ulangWdt di dalam loop utama seperti yang dijelaskan sebelumnya. Dengan wdt Interrupt Mode cacat,fungsi wdt sama seperti yang dilakukannya tanpa fungsi wakeup.Jika timeout peringatan sebelum me-reset sistem yang diperlukan untuk backup dll parameter,Interrupt handler wdt kebutuhan beberapa perubahan sedikit. The interrupt handler harus menggunakanbendera untuk memutuskan apakah harus melayani bangun sebuah interupsi atau peringatan timeoutinterupsi. Interrupt handler contoh ditunjukkan pada Gambar 2-5.Gambar 2-5. Interrupt handler Dual wdt tujuan.Backup pentingparameterWdt Interrupt HandlerWdt Interrupt ModecacatSet Write Bendera LengkapInfinite loopWakeup Benderamengatur?Hapus Wakeup Bendera

Page 9: New Microsoft Office Word Document

KembaliTidak adaYaMengaktifkan kembali wdtInterrupt ModeTIDURSet Wakeup BenderaTerusBagian dari kode utamadimana memasuki tidurPerhatikan bahwa bendera bangun harus diatur secara manual sebelum memasuki mode tidur untukmemastikan bahwa bagian yang benar dari handler dijalankan pada bangun. The wdt InterruptMode harus diaktifkan kembali di luar interrupt handler setelah melayani bangun yanginterupsi.Cabang kanan diagram alur dijelaskan di bagian 2.1.2.4 Startup PertimbanganKetika merancang untuk perangkat memiliki Enhanced Watchdog Timer, adalah penting untukmengevaluasi wdt Reset Bendera dalam kode startup. Hal ini berlaku bahkan jika aplikasitidak pernah berniat untuk menggunakan wdt tersebut. Jika wdt Sistem Reset Mode sengaja harusdiaktifkan dan menyebabkan reset sistem, wdt Reset Flag akan ditetapkan dan wdtSistem Reset Mode disimpan diaktifkan setelah reset sistem. Oleh karena itu startupkode harus memeriksa wdt Reset Flag dan menonaktifkan Sistem wdt Reset Mode jikaitu diaktifkan tapi tidak pernah digunakan. Pertimbangan ini berlaku pada saat sekering WDTON adalahunprogrammed saja. Jika sekering WDTON diprogram, yang wdt Sistem ResetMode selalu diaktifkan. Bagaimana mengubah pengaturan sekering dijelaskan dalam perangkatlembar data.72551C-AVR-06/08

Page 88AVR1322551C-AVR-06/08Jika wdt tersebut sengaja digunakan dalam aplikasi dan sistem reset terjadi,

Page 10: New Microsoft Office Word Document

kode startup harus memiliki skema untuk menangani wdt Reset Bendera. Yang paling mudahsolusinya adalah dengan hanya mengabaikan bendera dan terus seperti biasa. Pendekatan ini akan menyimpansistem dari bug muncul kadang-kadang, tetapi tidak memiliki cara penanganan yang berulang ataugigih kesalahan.Sebuah kemungkinan perpanjangan adalah untuk menjaga sistem reset wdt counter di memori non-volatile.Kode startup kemudian harus mematikan sistem dengan aman dan memberitahu operator jikacounter ini melebihi batas yang telah ditentukan. Menggunakan semacam kutu jam sistem (didukungdi memori non-volatile), kode startup juga dapat mencoba untuk mendeteksi me-reset ulangselama periode waktu yang tetap.Jika backup parameter digunakan, kode startup harus memeriksa Write bendera Lengkapdijelaskan dalam bagian Backup Parameter dan mencoba untuk mengembalikan sistem untuk yang amannegara, atau setidaknya dapat menyediakan beberapa informasi debugging ke operator.2.5 Mengubah Konfigurasi wdtUntuk mencegah perubahan disengaja pada konfigurasi wdt, urutan timed khususdiperlukan untuk menonaktifkan wdt Sistem Reset Mode atau mengubah jangka waktu timeout.Untuk menonaktifkan Sistem wdt Reset Mode, Watchdog Enable Ubah bit harusditetapkan dalam waktu empat jam siklus CPU sebelum menonaktifkan. Jika tidak, Sistem Reset wdtMode akan tetap diaktifkan. Jika sekering WDTON adalah memprogram wdt Sistem ResetMode selalu diaktifkan.Untuk mengubah batas waktu, yang Watchdog Perubahan Aktifkan bit harus diatur dalamCPU clock siklus empat sebelum mengubah nilai timeout. Namun itu tidakdisarankan untuk mengubah batas waktu selama operasi normal. Ini harusdilakukan sekali dalam kode inisialisasi.Jika sekering WDTON adalah unprogrammed pada ATtiny13 dan attiny2313, adalah mungkin untukmengubah jangka waktu timeout wdt tanpa mengikuti urutan waktunya.Mengubah wdt Interrupt Mode memungkinkan pengaturan atau Sistem wdt Reset Modetidak memerlukan pertimbangan khusus.

Page 11: New Microsoft Office Word Document

Interupsi harus dinonaktifkan ketika mengubah konfigurasi. Hal ini menjamin bahwa tidak adainterupsi terjadi, menyebabkan siklus batas 4 berakhir.Flowchart untuk mengubah konfigurasi wdt diperlihatkan pada Gambar 2-6.

Page 9AVR132Gambar 2-6. Urutan Jangka waktu untuk mengubah konfigurasi wdt.Nonaktifkan wdt Sistem ResetModusNonaktifkan interupsiSet WatchdogUbah Aktifkan bitHapus Sistem wdtReset Aktifkan bit dalam4 siklusAktifkan interupsiTerusUbah timeout wdt periodeNonaktifkan interupsiSet WatchdogUbah Aktifkan bitUbah prescaler wdtsetting dalam 4 siklusAktifkan interupsiTerus3 ImplementasiAplikasi catatan ini menyediakan contoh kode tiga ditulis dalam C. Mereka semuadirancang untuk perangkat ATtiny13 ditempatkan pada STK®500 pembangunan papan atauserupa. Para PB0 pelabuhan dan PB1 tersambung ke siap-LED dan-kegagalan LEDmasing, dan PB2, PB3 dan PB4 tersambung ke tiga dari switch STK500.Perhatikan bahwa mengendarai sebuah output yang rendah berputar pada LED, dan menekan tombol drivesesuai masukan rendah. Setup ditunjukkan dalam Gambar 3-1.Gambar 3-1. Circuit diagram untuk contoh aplikasi.ATtiny13VCCGNDPB0PB1PB2PB3PB4

Page 12: New Microsoft Office Word Document

RESETSiapKegagalanCommand1Perintah2Command3Reset92551C-AVR-06/08

Page 1010AVR1322551C-AVR-06/08Contoh-contoh menunjukkan konsep berikut:• Menggunakan wdt sebagai sumber system reset (bagian 3.1).• Menggunakan wdt sebagai Timer Wakeup (bagian 3.2).• Menggunakan wdt sebagai Timer Wakeup gabungan dan sistem sumber reset denganparameter backup (bagian 3.3).Catatan:Sekering WDTON harus unprogrammed saat menjalankan contoh menggunakanMode wdt Interrupt.3.1 Menggunakan wdt sebagai Sumber Reset SistemContoh ini menerapkan struktur yang dijelaskan pada Gambar 2-2, dengan inisialisasi sebuahrutin dan lingkaran utama dengan tiga rutinitas dan cek kesehatan di akhir. Setiaprutin kesehatan sendiri bendera untuk menunjukkan bahwa semuanya ok. Tiga rutinitas mendapatkanperintah, parse dan jalankan, masing-masing.3.1.1 InisialisasiRutin inisialisasi memiliki dua tujuan utama: menginisialisasi peripheral dan penangananreset flag. flowchart adalah ditunjukkan dalam Gambar 3-2. Bagian-bagian di dalam frame melesathanya digunakan dalam contoh kode Operasi Terpadu dan kita diskusikan nanti.

Page 11AVR132Gambar 3-2. Inisialisasi rutin bila menggunakan wdt sebagai sumber Reset Sistem.Setiap resetmengatur flag?InisialisasiSimpan MCU status register

Page 13: New Microsoft Office Word Document

dan jelas reset flagAktifkan WatchdogInterrupt ModeInfinite loop menungguSistem wdt ResetTidak adaYaWdt ResetMengatur flag?YaTidak adaKenaikan WatchdogReset counterMenulisLengkap Benderamengatur?YaTidak adaKembalikan Parameterdan jelas TulisLengkap BenderaResetbatas jumlahmelebihi?YaTidak adaKembali dengan kode kesalahanPower-upatau Ext. ResetMengatur flag?Clear WatchdogReset counterYaTidak adaKembaliAktifkan Reset Sistem wdtMode dan waktu timeout yang mengaturHanya bila menggunakanParameter BackupHanya bila menggunakanParameter Backup112551C-AVR-06/08

Page 12

Page 14: New Microsoft Office Word Document

12AVR1322551C-AVR-06/08Cabang kondisional pertama menangani kasus di mana tidak ada bendera reset ditetapkan padastartup. Karena bendera reset selalu dibersihkan dalam rutin inisialisasi, ini hanyaterjadi ketika kode melarikan diri membungkus kembali ke alamat 0 dan menjalankan kode startupsekali lagi tanpa reset. Ini jelas menunjukkan bug atau kesalahan dalam perangkat lunak danditangani seperti wdt System Reset. Rutin inisialisasi saja memasuki infinite loopdan menunggu wdt untuk mengatur ulang perangkat dengan benar.Kode kemudian memeriksa wdt Reset Bendera. Jika sudah diatur, kenaikan yang rutinWdt Reset counter dan memeriksanya terhadap batas yang telah ditentukan. Jika batas ini dilampaui,aplikasi mengasumsikan bahwa ada kesalahan mengulangi permanen dan menunjukkan inidengan menyalakan indikator kegagalan LED dan menghentikan eksekusi. Dengan memasukkan tak terbatasloop dengan instruksi di dalam WDR, pelaksanaan secara efektif dihentikan sampai eksternalreset terjadi.Facebook atau eksternal reset peristiwa-Power dianggap manual intervensi danWdt Reset counter dihapus. Hal ini memungkinkan operator manusia untukmanual reset aplikasi yang telah dihentikan oleh terlalu banyak Sistem wdt Mereset.Operator harus tentu saja mencoba untuk menemukan sumber Sistem wdt Mereset sebelumulang. Membabi buta ulang dan berharap untuk hal-hal untuk memperbaiki diri bukansolusi yang direkomendasikan. Sisanya flowchart harus cukup jelas.3.1.2 Berkomunikasi CommandRutinitas yang mendapat perintah adalah contoh buruk yang dirancang komunikasirutin. Ini LED berkedip 10 kali dan kemudian menunggu untuk tombol apapun yang akan ditekan. TheMasalah muncul ketika pengguna menunggu terlalu lama. Sebuah desain yang kuat harus melaksanakan beberapasemacam cek timeout dan kembali dengan kode kesalahan jika kali komunikasi keluar.Namun, rutin ini tidak, dan wdt akan mengatur ulang perangkat jika tidak ada tombolditekan dalam waktu timeout wdt. Para flowchart untuk komunikasi rutinditunjukkan dalam Gambar 3-3.

Page 15: New Microsoft Office Word Document

Page 13AVR132Gambar 3-3 dan. Flash LED menunggu pengguna menekan tombol.Setiap tombolditekan?Berkomunikasi ()LED flash 10 kaliTidak adaYaSimpan tombol bitMatikan LED dan menunggusejumlah siklusSet kesehatan bendera untukini rutinTombol Kembali bitPotensi wdt timeout di sini jikauser menunggu terlalu lama sebelummenekan tombol perintahJika tombol perintah ditekan dalam waktu, rutinitas set bendera kesehatan dan mengembalikantekan tombol pola bit.3.1.3 Parse CommandPerintah parser menggunakan kata kunci switch dalam C untuk mengkonversi bit tekan tombolpola kode perintah. Pola ini dibandingkan dengan masker bit untuk masing-masingtombol-tombol perintah. Bila ditemukan kecocokan, kode perintah diatursesuai dan bendera kesehatan bagi rutin ini diatur.The flowchart untuk parser ditunjukkan dalam Gambar 3-4.132551C-AVR-06/08

Page 1414AVR132Gambar 3-4. Mengubah pola tekan tombol untuk kode perintah.Tombolbit cocokButton1?Parse ()Tidak adaSet perintah kode untuk1 dan bendera kesehatan menetapkanuntuk ini rutinYaTombol

Page 16: New Microsoft Office Word Document

bit cocokTombol2?Set perintah kode untuk2 dan bendera kesehatan menetapkanuntuk ini rutinTombolbit cocokButton3?Set perintah kode untuk3 dan bendera kesehatan menetapkanuntuk ini rutinTidak adaYaTidak adaYaKembali perintah kodePerhatikan bahwa jika dua atau lebih tombol perintah yang ditekan secara bersamaan, parser akantidak pernah menemukan kecocokan dan bendera kesehatan tidak pernah diatur. Karena jika ini, cek kesehatan diloop utama tidak akan mengatur ulang wdt, dan reset sistem dapat terjadi jika loop utamatidak dilaksanakan dengan sukses dan cukup cepat kedua kalinya. Ini adalah contohmenunjukkan bahwa input tidak terduga dapat menyebabkan masalah jika tidak ditangani oleh kasus defaultdi blok switch.3.1.4 Jalankan PerintahDalam rutin ini, kode perintah yang memutuskan untuk melakukan tindakan.1 perintah tidak memiliki tindakan tertentu, namun itu membuat loop utama berjalan sehat denganmenjadi perintah yang valid. Perintah lain yang menunjukkan berbagai bug yang dapatterjadi dalam aplikasi kehidupan nyata.Perintah 2 memungkinkan EEPROM Siap Interrupt. interupsi ini dilaksanakanterus menerus selama modul EEPROM siap, yang berarti selalu dalam hal inikasus, karena EEPROM tidak pernah digunakan setelah rutin inisialisasi. EEPROMSiap Interrupt melaksanakan berulang memperlambat loop utama jauh, dansebuah wdt Sistem Reset akhirnya akan terjadi. Oleh karena itu perintah 2 contohmenunjukkan bagaimana terlalu banyak atau buruk interupsi dikonfigurasi dapat memperlambat loop utamaterlalu banyak.Komando 3 memberi contoh kode pelarian. Contoh ini hanya memanggil fungsi di

Page 17: New Microsoft Office Word Document

alamat yang tidak digunakan. Program counter berjalan ke ujung memori program danmembungkus kembali ke alamat 0. Tidak ada bendera reset akan ditetapkan dan kesalahan ini terjebak dengan aman diinisialisasi rutin.2551C-AVR-06/08

Page 15AVR132Untuk mensimulasikan fungsi panggil buruk, fragmen kode berikut digunakan: "((Void (*)())0x1FF) ();"The 0x1FF integer dikonversi menjadi suatu-pointer ke fungsi-, danfungsi dipanggil. Mengacu pada ANSI C standar untuk rincian lebih lanjut tentang fungsi pointerdan tipe konversi.3.2 Menggunakan wdt sebagai Timer WakeupContoh ini hanya menggunakan wdt Interrupt Mode, dan rutin inisialisasi dengan demikiancukup berkurang. Seperti dijelaskan sebelumnya adalah penting untuk menonaktifkan wdt Sistem ResetMode pada startup bahkan jika wdt Sistem Reset Mode tidak pernah digunakan. Therutin inisialisasi ditunjukkan pada Gambar 3-5.Gambar 3-5. Inisialisasi rutin bila menggunakan wdt sebagai Wakeup Timer.InisialisasiNonaktifkan wdtSistem Reset ModeSet timeout wdt periodeSet Sleep ModeKembaliAktifkan wdtInterrupt ModeLingkaran utama dari contoh ini berkedip LED terhubung ke PB0 10 kali untuk menunjukkanbahwa itu adalah terjaga. Kemudian me-reset wdt tersebut, memungkinkan wdt Interrupt Mode dan masukmodus tidur. Jika waktu wdt keluar, bangun CPU lagi. Yang menggangguInterrupt handler wdt Menonaktifkan Mode, sehingga tidak ada interupsi yang tidak perludihasilkan jika loop utama berjalan jauh sebelum memasuki modus tidur sekali lagi.3.3 Gabungan OperasiContoh ketiga menunjukkan cara menggunakan wdt baik sebagai Timer Wakeup dan sistem

Page 18: New Microsoft Office Word Document

reset sumber dengan cadangan parameter. Ini adalah versi panjang dari kode pertamaMisalnya, sekarang menggunakan Command 1 untuk masuk ke modus tidur.Dalam contoh ini, rutin inisialisasi termasuk bagian ditampilkan dalam bingkai berlari didiagram alur. Ini berarti bahwa wdt Interrupt Mode diaktifkan dan didukungparameter dikembalikan jika bendera Lengkap Tulis diatur pada startup.Parameter yang akan didukung adalah nilai dari Timer/Counter1. Ia tidak memilikikhusus fungsi dalam aplikasi ini, tetapi berfungsi sebagai contoh parameter yangdibersihkan di reset dan perlu diperbaiki.152551C-AVR-06/08

Page 1616AVR1322551C-AVR-06/08The wdt Interrupt handler diimplementasikan seperti yang dijelaskan dalam tujuan wdt DualInterrupt Handler. Bit Aktifkan Tidur digunakan sebagai bendera Wakeup. Ketika Perintah 1dijalankan, aplikasi me-reset wdt terbenam bit Aktifkan Tidur dan kemudianmemasuki mode tidur. The interrupt handler dijalankan saat timeout wdt terbangunup CPU, dan bendera Wakeup memutuskan tindakan apa yang harus diambil. Jika sudah dibersihkan,kesalahan telah terjadi dan kegagalan LED menyala. Sisa dari interrupt handlerpelaksanaan sesuai dengan diagram alur.Sisanya kode sama seperti yang dijelaskan dalam contoh pertama.4 Literatur Referensi• Michael Barr - Pengantar Watchdog Timerhttp://www.embedded.com/story/OEG20010920S0064• Niall Murphy - Watchdog Timerhttp://www.embedded.com/2000/0011/0011feat4.htm• Jack Ganssle - Lahir Gagalhttp://www.embedded.com/design_library/OEG20021211S0032• Kernighan & Ritchie - "The C Programming Language", 2nd edition.

Page 17PenolakanMarkas besarInternasionalAtmel CorporationOrchard 2325 ParkwaySan Jose, CA 95131Amerika Serikat

Page 19: New Microsoft Office Word Document

Tel: 1 (408) 441-0311Fax: 1 (408) 487-2600Atmel AsiaKamar 1219Chinachem Golden Plaza77 Tsimshatsui Jalan ModyKowloon TimurHong KongTel: (852) 2721-9778Fax: (852) 2722-1369Produk KontakAtmel EropaLe Krebs8, Timbaud Jean-Pierre RueBP 30978054 Saint-Quentin-en-Yvelines CedexPerancisTel: (33) 1-30-60-70-00Fax: (33) 1-30-60-71-11Atmel Jepang9f, Bldg Shinkawa Tonetsu.1-24-8 ShinkawaChuo-ku, Tokyo 104-0033JepangTel: (81) 3-3523-3551Fax: (81) 3-3523-7581Situs webwww.atmel.comDukungan [email protected] Penjualanwww.atmel.com / kontakSastra Permintaanwww.atmel.com / literaturDisclaimer: Informasi dalam dokumen ini diberikan sehubungan dengan produk Atmel. Tidak ada lisensi, tersurat maupun tersirat, oleh estoppel atau sebaliknya, untuk setiaphak kekayaan intelektual yang diberikan oleh dokumen ini atau sehubungan dengan penjualan produk-produk Atmel AS. KECUALI DITETAPKAN DALAM ATMEL'S ISTILAH DANPERSYARATAN PENJUALAN terletak PADA SITUS WEB'S ATMEL, ATMEL BERASUMSI KEWAJIBAN TIDAK APAPUN DAN MENOLAK SETIAP TERSURAT, TERSIRAT

Page 20: New Microsoft Office Word Document

ATAU JAMINAN MENURUT UNDANG-UNDANG TENTANG PRODUK PERUSAHAAN TERMASUK, NAMUN TIDAK TERBATAS PADA, JAMINAN TERSIRAT TENTANG KELAYAKAN UNTUK DIPERDAGANGKAN,KESESUAIAN UNTUK TUJUAN TERTENTU, ATAU NON-PELANGGARAN. DALAM KONDISI APAPUN, ATMEL BERTANGGUNG JAWAB ATAS KERUSAKAN LANGSUNG, TIDAK LANGSUNG,KONSEKUENSIAL, DENDA, KHUSUS ATAU KERUSAKAN INSIDENTAL (TERMASUK, TANPA TERBATAS PADA, GANTI RUGI ATAS HILANGNYA KEUNTUNGAN,GANGGUAN USAHA, ATAU HILANGNYA INFORMASI) YANG TIMBUL DARI PENGGUNAAN ATAU KETIDAKMAMPUAN UNTUK MENGGUNAKAN DOKUMEN INI, BAHKAN JIKA TELAH ATMELTELAH DIBERITAHU TENTANG KEMUNGKINAN KERUSAKAN TERSEBUT membuat. Atmel tidak memberikan pernyataan atau jaminan sehubungan dengan ketepatan atau kelengkapan dariisi dokumen ini dan berhak untuk melakukan perubahan pada spesifikasi dan deskripsi produk sewaktu-waktu tanpa pemberitahuan. Atmel tidak membuatkomitmen untuk memperbarui informasi yang tercantum di sini. Kecuali bila ditentukan lain, produk Atmel tidak cocok untuk, dan tidak akan digunakan dalam,aplikasi otomotif., produk Atmel tidak dimaksudkan, resmi, atau dibenarkan untuk digunakan sebagai komponen dalam aplikasi dimaksudkan untuk mendukung atau mempertahankan hidup.© 2008 Atmel Corporation. All rights reserved. Atmel ®, logo dan kombinasi daripadanya, AVR ®, STK ® dan lain-lain, adalah terdaftarmerek dagang atau merek dagang terdaftar dari Atmel Corporation atau anak perusahaan.Istilah lainnya dan nama produk mungkin merupakan merek dagang orang lain.2551C-AVR-06/08

Page 21: New Microsoft Office Word Document
Page 22: New Microsoft Office Word Document
Page 23: New Microsoft Office Word Document
Page 24: New Microsoft Office Word Document

Teks asli Inggris

• Parameter Backup Prior to Watchdog System Reset Sarankan terjemahan yang lebih baik