背景:
????這一年在做開(kāi)關(guān)磁阻電機(jī)項(xiàng)目,采用TMS320F28069芯片;近期開(kāi)始啟用看門(mén)狗模塊。
分析:
????程序跑飛后電機(jī)相繞組很可能無(wú)法正常關(guān)斷、并持續(xù)導(dǎo)通,繼而造成該導(dǎo)通相的功率開(kāi)關(guān)管燒毀。為避免該現(xiàn)象的發(fā)生,需要及時(shí)復(fù)位已經(jīng)跑飛的程序并且確保整個(gè)過(guò)程中開(kāi)關(guān)管不被燒毀。而看門(mén)狗模塊就可以起到復(fù)位程序的作用。
????看門(mén)狗的原理是:其模塊計(jì)數(shù)器WDCNTR不停地在自增,當(dāng)自增到最大值溢出時(shí)就會(huì)復(fù)位DSP(程序自然就會(huì)重啟),如果為了避免DSP復(fù)位,需要定期清零WDCNTR,清零的方式就是向WDKEY寄存器寫(xiě)入正確的數(shù)值;程序一旦跑飛而無(wú)法執(zhí)行到WDKEY賦值語(yǔ)句,DSP就會(huì)在WDCNTR溢出時(shí)自動(dòng)復(fù)位。這一過(guò)程就可以保證程序跑飛時(shí)可以被復(fù)位。
????上一段中說(shuō)的“定期”清零WDCNTR,比較理想的是在定時(shí)器中斷函數(shù)中,以固定周期清零WDCNTR;但該方式存在缺陷,因?yàn)槿绻绦蚺茱w,主循環(huán)跑飛的可能性較大,中斷函數(shù)跑飛的可能性很?。蝗绻谥袛嗪瘮?shù)中清零WDCNTR,很可能出現(xiàn)一種情況:程序主循環(huán)已經(jīng)跑飛,中斷函數(shù)卻一直在正常執(zhí)行并且定期清零WDCNTR,即主循環(huán)跑飛而無(wú)法及時(shí)復(fù)位。因此,主循環(huán)中必須插入WDCNTR清零的語(yǔ)句。
????從主循環(huán)跑飛至看門(mén)狗復(fù)位DSP存在時(shí)間差,很可能程序跑飛后功率開(kāi)關(guān)管因?yàn)殚L(zhǎng)時(shí)間大電流導(dǎo)通而燒毀。而如果ADC中斷函數(shù)中存在電流最大值限制功能,就可以較大程度保證功率開(kāi)關(guān)管的安全。
????為了保證ADC中斷函數(shù)的正常執(zhí)行,則需要在其跑飛后立即復(fù)位DSP??梢圆捎玫姆绞接校?jiǎn)⒂肞WM模塊,在PWM中斷函數(shù)函數(shù)中向看門(mén)狗的WDCR寄存器的WDCHK寫(xiě)入錯(cuò)誤數(shù)值,即可立即復(fù)位DSP;而ADC中斷函數(shù)中可以不斷清零PWM模塊的TBCTR寄存器以避免PWM中斷函數(shù)的到來(lái)。
拙文拋磚引玉,歡迎交流。文中如有錯(cuò)誤,也歡迎大家批評(píng)指正。
本文原創(chuàng),轉(zhuǎn)載請(qǐng)注明出處。
知乎、新浪微博、新浪博客同名。