Пейсмейкър за Raspberry Pi; Част 4 софтуер за микроконтролер; Хелмут Каргер
Helmut Karger> Проекти> Наблюдение на Raspberry Pi> Пейсмейкър за Raspberry Pi - Част 4: Софтуер за микроконтролер

В предишната статия описах как създадохме среда за програмиране на микроконтролера ATtiny 13A. След като успешно преминахме първата си скица на µC, вече сме готови за действителната Софтуер за пейсмейкър. Тази статия е за Софтуерна част, този на Микроконтролер бягане. ATtiny трябва да слуша редовна промяна на сигнала на Raspberry Pi чрез свързващ щифт. Ако този сърдечен ритъм не се появи за дадено време, трябва да приемем, че Raspberry Pi вече не е активен. Той се е обесил или е в безкраен цикъл, от който вече не може да се освободи - във всеки случай вече не изпълнява задачата си. В този момент микроконтролерът се намесва и за кратко изключва захранването на Raspberry Pi. След това RasPi може да се рестартира, да възобнови функцията си и микроконтролерът от своя страна ще започне да наблюдава отново.
Функция на софтуера на пейсмейкъра
Във въведението вече грубо описах какво прави пейсмейкъра. За напомняне, ето отново блоковата диаграма. Микроконтролерът има две основни задачи:
- мониторинг на таймаут и
- Спиране на тока в случай на изчакване
Точно това прави основната част от програмата, както ще видим след малко.
Софтуер за пейсмейкър
За микроконтролер софтуерът обикновено не се пише на Python, както при Raspberry Pi, а в Език за програмиране C. Arduino IDE вече разполага с всички компоненти на борда, за да компилира програмата C и да я мига към микроконтролера.
Ето моята Програма за пейсмейкър в C:
Както можете да видите, програмата е доста компактна. Нека да го разгледаме един по един. В началото ще има такива параметър Определени са:
- BOOT TIME означава времето в милисекунди, на което е разрешено да се стартира Raspberry Pi. Тук 30-те.
- AUSZEIT е продължителността на прекъсването на захранването за задействане на рестартиране. Тук 5s.
- OUTPUT е обозначението на щифта за връзката за изключване на захранването. Тук PB3 = номер на пин 2.
- INPUT е обозначението на щифта за въвеждане на сърдечния ритъм. Тук PB1 = пин номер 6.
- waitTime е максималното време, което може да премине без пулс, преди да се задейства рестартиране. Тук щедри 60-те
Разбира се, времената могат да се коригират, ако например рестартирането отнема повече от 30 секунди.
В допълнение, променлива последен сърдечен ритъм е дефинирана в началото на програмата, което спестява времето на последната открита промяна на сигнала.
Входовете и изходите се дефинират и свързват във функцията setup (). OUTPUT е зададен на LOW. Трябва да помним, че сме тук с a Обратна логика трябва да направите, защото MOSFET инвертира сигнала. Прилага се следното:
- OUTPUT = LOW: включване
- ИЗХОД = ВИСОКО: изключване на захранването
След това променливата последен сърдечен ритъм е предварително зададена с текущото време и a Обработка на прекъсвания обзаведена с линията:
attachInterrupt (digitalPinToInterrupt (INPUT), isr, CHANGE);
Това означава, че INPUT връзката се наблюдава непрекъснато и функцията isr се извиква в случай на промяна на полярността (CHANGE). Тази функция, както можете да видите по-долу в програмата, не прави нищо друго, освен да предостави на променливата последен пулс отново текущото време. Сега това се случва автоматично при всяка промяна от HIGH на LOW и от LOW до HIGH на INPUT щифта .
Последното действие на функцията setup () е включване на захранването с помощта на функцията stromAn (). Намираме ги в края на програмата. stromAn () първо настройва OUTPUT на LOW, за да включи захранването на Raspberry Pi и след това изчаква времето за стартиране. След това на променливата последен сърдечен ритъм отново се присвоява текущото време.
Аналогично на stromAn () има и функцията stromOff (). Той не прави нищо друго, освен да зададе OUTPUT на HIGH, за да изключи захранването на Raspberry Pi и да изчака определеното OFF TIME.
The Основна програма loop () вече свързва всички функции и все още е доста прост. Той проверява дали TimeOut изтече е. Това е случаят, когато разликата между текущото време и времето на последния открит сърдечен ритъм е по-голяма от определеното време на изчакване. Едва след това stromAus () и stromAn () се извикват един след друг, за да принудят Raspberry Pi да стартира. В противен случай има само 100 ms изчакване и след това започнете отначало.
Flash софтуер за пейсмейкър
За да стартирате програмата на a ATtiny 13A копираме изходния текст на тази страница и го поставяме в нова страница на IDE на Arduino а. Не забравяйте да спестите! Когато хардуерът за програмиране (виж схемата) е готов, скицата може лесно да бъде мигана на ATtiny чрез натискане на Клавиш Shift и в същото време щракнете върху иконата с стрелка надясно. Индикаторите на програмиста (Nano) ще мигат за кратко, след което процесът на светкавица е завършен. Ако Arduino IDE не издава никакви грешки, ATtiny може да бъде премахнат от макетната плоча и вмъкнат в действителната пейсмейкър верига.