Мазмуну:
- 1 -кадам: Бул күзөтчү таймер деген эмне?
- 2 -кадам: Watchdog таймерин кантип иштетсе болот?
- 3 -кадам: Программаңызды иштетиңиз
- 4 -кадам: мисал колдонуу
- 5 -кадам: Watchdog Timer маселелери
- 6 -кадам: ырахат алыңыз
Video: Arduino Hang Guardian - Arduino Watchdog Timer үйрөткүчү: 6 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:39
Салам баарына, Ал бизге бардык болот. Сиз долбоорду куруп, бардык сенсорлорду шыктануу менен туташтырасыз, жана күтүлбөгөн жерден Arduino илинип турат жана эч кандай киргизүү иштетилбейт.
"Эмне болуп жатат?", Сиз сурап, кодуңузду казып баштайсыз, ошондо чексиз укурукка түшүп калганыңызды түшүнөсүз. Кудайга шүгүр, Arduino алыскы жерде эмес, сиздин отургучта болчу.
Бүгүн биз муну болтурбоо үчүн Arduinoдогу күзөт таймерин кантип колдонууну карап чыгабыз.
1 -кадам: Бул күзөтчү таймер деген эмне?
Arduino күзөтчү таймери, аты айтып тургандай, тактадагы негизги CPUдан өзүнчө иштеген таймер. Бул таймер тактанын абалын мезгил -мезгили менен текшерип туруу үчүн колдонулушу мүмкүн жана такта программалык камсыздоого илинип калганда же жабдуулардын иштебей калышына байланыштуу болгон учурда, күзөтчү таймери Arduino -ны баштапкы абалга келтирип, кайра башынан баштай алат.
Демейки боюнча, бул таймер бардык долбоорлордо өчүрүлгөн жана биз аны иштеткенде гана, биз такта күтүлгөндөй иштеп жатса, тактайыбызды баштапкы абалга келтирбөө үчүн мезгил -мезгили менен айтып туруубуз керек.
Күзөтчү таймерин колдоно алуу үчүн, адегенде Arduino эскизибизге avr/wdt.h файлын кошушубуз керек. Бул көзөмөлдөөчү иш -аракеттерди камтыган стандарттык китепкана.
2 -кадам: Watchdog таймерин кантип иштетсе болот?
Таймерди иштетүү үчүн, биз "wdt_enable" функциясын колдонобуз, анда биз тактаны баштапкы абалга келтире турган босоголук интервалда өтүшүбүз керек. Колдонуубузга жараша, бул 15 миллисекунддан 8 секундага чейин күзөтчү китепканасында камтылган алдын ала аныкталган жөндөөлөрдө болушу мүмкүн.
БЕШИК - ДАЙЫМ АТЫ
15 ms WDTO_15MS 30 ms WDTO_30MS 60 ms WDTO_60MS 120 ms WDTO_120MS 250 ms WDTO_250MS 500 ms WDTO_500MS 1s WDTO_1S 2s WDTO_2S 4s WDTO_4S 8s WDTO_8S
3 -кадам: Программаңызды иштетиңиз
Эми, таймер иштетилгенде, биздин Arduino'бузду баштапкы абалга келтирбеш үчүн, чектик интервал бүткөнгө чейин, күзөтчү таймерин баштапкы абалга келтирүү үчүн маал -маалы менен "wdt_reset" функциясын чакырып турушубуз керек.
Баштапкы абалга келтирүүнү тандоодо, маалыматтарды окуу же жөнөтүү же тышкы сенсорлорго туташуу сыяктуу узун операцияларды эске алуу өтө маанилүү. Кокусунан баштапкы абалга келтирбөө үчүн, баштапкы абалга келтирүү босогосу бул убакыттан кеминде бир жарым эсе жогору болушу керек.
4 -кадам: мисал колдонуу
Бул жерден жүктөп алсаңыз боло турган мисал программасында, биз адегенде кайтаруу аралыгы 4 секунд болгон күзөтчү таймерин орнотконбуз. Андан кийин, биз орнотуу функциясында экенибизди билүү үчүн, биз LEDди 3 эсе тез күйгүзөбүз, андан кийин негизги циклде таймерди баштапкы абалга келтиребиз, акырындык менен узунураак диодду күйгүзүп, анан өчүрөбүз. Кийинки цикл таймерди кайра күйгүзүү убактысы 4 секунддан узагыраак абалга келтирет.
Мындай болгондо, көзөмөлдөөчү таймер тактаны баштапкы абалга келтирет жана орнотуу кайра ишке ашырылат.
5 -кадам: Watchdog Timer маселелери
Ардуинонун жүктөгүчүнө жараша күзөтчү таймеринин мүмкүн болгон бир көйгөйү, эгерде күзөтчү таймеринин мааниси өтө төмөн болсо жана жүктөгүч жаңы кодду жүктөөдө таймерди баштапкы абалга келтирбесе, анда сиз Arduino тактаңызга зыян келтиришиңиз мүмкүн. ал дайыма жүктөө баскычында калат. Жүктөгүч баштоого аракет кылат, бирок таймер тактаны баштапкы абалга келтире берет жана эч качан анын туура башталышына жол бербейт. Мындай көйгөйлөрдү алдын алуу үчүн, ар дайым 2 секунд же андан көп босоголук интервалдарды колдонууну тактаңыз.
6 -кадам: ырахат алыңыз
Эгерде сизде реалдуу проектте күзөтчү таймерин кайда колдонгонуңуздун мисалы бар болсо, комментарийлерде мага билдириңиз, видеону жактырууну унутпаңыз жана жазылууну унутпаңыз.
Салам жана окуу/көрүү үчүн рахмат!
Сунушталууда:
Raspberry Pi - TMD26721 Инфракызыл санариптик жакындык детектору Java үйрөткүчү: 4 кадам
Raspberry Pi-TMD26721 Infrared Digital Proximity Detector Java үйрөткүчү: TMD26721-бул инфрақызыл санариптик жакындык детектору, ал толугу менен жакындыкты аныктоо тутумун жана санариптик интерфейстин логикасын бир 8 пиндүү беттик монтаждоо модулунда камтыйт. тактык. А про
AVR Assembler үйрөткүчү 2: 4 кадам
AVR Assembler Tutorial 2: Бул окуу куралы " AVR Assembler Tutorial 1 " Эгерде сиз 1 -үйрөтмөдөн өтпөсөңүз, анда азыр токтоп, муну биринчи кылыңыз. Бул окуу куралында биз atmega328p ассемблердик программалоо боюнча изилдөөбүздү улантабыз
AVR Assembler үйрөткүчү 8: 4 кадам
AVR Assembler үйрөткүчү 8: Үйрөткүч 8ге кош келиңиз! Бул кыска сабакта биз прототиптештирүүчү компоненттерибизди кантип өзүнчө " басылган " райондук плата. The
LoRa GPS Tracker үйрөткүчү - Dragino жана TTN менен LoRaWAN: 7 кадам
LoRa GPS Tracker үйрөткүчү | LoRaWAN Dragino жана TTN менен: Эй, эмне болду, балдар! Akarsh бул жерде CETech.A. Долбоорлордун бир нечеси биз Драгинонун LoRaWAN шлюзун карап көрдүк. Биз ар кандай түйүндөрдү шлюзга туташтырдык жана TheThingsNetworkтун жардамы менен түйүндөрдөн шлюзга маалыматтарды бердик
K40 Laser Cooling Guard үйрөткүчү: 12 кадам
K40 Laser Cooling Guard үйрөткүчү: K40 Laser Cooling Guard - K40 Co2 Laser муздатуучу суюктугунун агымын жана температурасын сезүүчү түзмөк. Эгерде агымдын ылдамдыгы белгилүү бир өлчөмгө түшсө, Cooling Guard лазерди алмаштырып, лазер түтүгүнүн ысып кетишине жол бербейт