Пејсмејкер за малина Пи; Дел 4 софтвер за микроконтролер; Хелмут Каргер
Хелмут Каргер> Проекти> Мониторинг на малина Пи> Пејсмејкер за Raspberry Pi - Дел 4: Софтвер за микроконтролер

Во претходната статија опишав како воспоставивме програмско опкружување за микроконтролерот ATtiny 13A. Откако успешно ја спуштивме нашата прва скица на μC, сега сме подготвени за вистинската Софтвер за пејсмејкер. Оваа статија е за Софтверски дел, оној на Микроконтролер трчање ATtiny треба да слуша редовна промена на сигналот на Raspberry Pi преку игла за поврзување. Ако ова чукање на срцето не се случи за дадено време, треба да претпоставиме дека Малината Пи веќе не е активна. Тој се обеси или е во бесконечна јамка, од која веќе не може да се ослободи - во секој случај, тој веќе не ја работи својата работа. Во овој момент, микроконтролерот интервенира и накратко го исклучува напојувањето на Raspberry Pi. Тогаш RasPi може да се рестартира, да продолжи со својата функција и микроконтролерот пак ќе започне да следи повторно.
Функција на софтверот за пејсмејкер
Во воведот веќе грубо опишав што работи пејсмејкерот. За потсетување, еве го блок-дијаграмот повторно. Микроконтролерот има две главни задачи:
- следење на тајмаут и
- Прекин на струја во случај на тајмаут
Токму тоа го прави главниот дел од програмата, како што ќе видиме за момент.
Софтвер за пејсмејкер
За микроконтролер, софтверот обично не е напишан во Python како кај Raspberry Pi, туку во Програмски јазик В.. Arduino IDE веќе ги има сите компоненти за да ја состави програмата C и да ја трепка на микроконтролерот.
Еве мој Програма на пејсмејкер во Ц.:
Како што можете да видите, програмата е прилично компактна. Ајде да го поминеме еден по еден. На почетокот ќе има некои параметар Дефинирани се:
- BOOT TIME се залага за времето во милисекунди што е дозволено да се подигне Raspberry Pi. Еве 30-ти.
- AUSZEIT е времетраењето на прекинот на напојувањето за да се активира рестартирање. Еве 5-ти.
- OUTPUT е ознака на пинот за врската за исклучување на напојувањето. Тука PB3 = пин број 2.
- INPUT е ознака на пинот за влез на срцевиот ритам. Тука PB1 = пин број 6.
- waitTime е максималното време што може да помине без чукање на срцето пред да се активира рестартирање. Тука дарежлива 60-тите години
Времето секако може да се прилагоди ако, на пример, рестартирањето трае подолго од 30 секунди.
Покрај тоа, променливото последно чукање на срцето е дефинирано на почетокот на програмата, што заштедува време на последната откриена промена на сигналот.
Влезовите и излезите се дефинирани и поврзани во функцијата поставување (). OUTPUT е поставено на LOW. Треба да запомниме дека сме тука со а Обратна логика треба да се направи, бидејќи MOSFET го превртува сигналот. Следното се применува:
- ИЗЛЕЗ = НИСКО: вклучено
- ИЗЛЕЗ = ВИСОК: исклучено
Тогаш променливото последно чукање на срцето е претходно поставено со моменталното време и а Ракување со прекини опремено со линија:
attachInterrupt (digitalPinToInterrupt (INPUT), isr, CHANGE);
Ова значи дека врската INPUT постојано се следи и функцијата isr се повикува во случај на промена на поларитетот (ПРОМЕНА). Оваа функција, како што можете да видите подолу во програмата, не прави ништо друго освен повторно да ја снабди променливата последна ритам на срцето со тековното време. Ова сега се случува автоматски со секоја промена од HIGH во LOW и од LOW во HIGH на пинот INPUT .
Последното дејство на функцијата поставување () е вклучување на напојувањето со помош на функцијата stromAn (). Ги наоѓаме на крајот од програмата. stromAn () прво го поставува ИЗЛОУВАЕТО на НИСКО за да го вклучи напојувањето за Raspberry Pi и потоа чека за ВРЕМЕТО НА ЧИЗАЕ. Тогаш на променливата последна работа на срцето повторно му се доделува тековното време.
Аналогно на stromAn () постои и функцијата stromOff (). Не прави ништо друго освен да го поставите ИСКЛУЧОКОТ ВО ВИСОК со цел да го исклучите напојувањето на Raspberry Pi и да чекате за одреденото време на ИСКЛУЧЕНО.
На Главна програма јамка () сега ги поврзува сите функции и сè уште е прилично едноставна. Проверува дали TimeOut истече е Ова е случај кога разликата помеѓу тековното време и времето на последното откриено чукање на срцето е поголема од одреденото време на чекање. Само тогаш се нарекуваат stromAus () и stromAn () еден по друг да го принудат Raspberry Pi да се пробие. Инаку, има само 100мс чекање, а потоа започнете одново.
Софтвер за флеш-пејсмејкер
Да ја стартувате програмата на a ATtiny 13A ние го копираме изворниот текст на оваа страница и го вметнуваме во нова страница на Arduino IDE а Не заборавајте да заштедите! Кога хардверот за програмирање (видете коло) е подготвен, скицата може лесно да се трепка на ATtiny со притискање на Копче за префрлување и истовремено кликнете на иконата со стрелка надесно. Светлата на програмерот (Нано) ќе трепкаат кратко, а потоа процесот на блиц е завршен. Ако Arduino IDE не фрли грешки, ATtiny може да се отстрани од лебната плоча и да се вметне во вистинското коло на пејсмејкерот.