Pacemaker a Raspberry Pi számára; 4. rész mikrovezérlő szoftver; Helmut Karger

Helmut Karger> Projektek> Raspberry Pi monitorozás> Pacemaker a Raspberry Pi számára - 4. rész: Mikrovezérlő szoftver

rész

Az előző cikkben leírtam, hogyan állítottunk be programozási környezetet az ATtiny 13A mikrovezérlőhöz. Miután sikeresen felvillantottuk az első vázlatot a µC-n, készen állunk a ténylegesre Pacemaker szoftver. Ez a cikk a Szoftver rész, az a Mikrovezérlő futás. Az ATtiny-nek egy csatlakozócsapon keresztül hallgatnia kell a Raspberry Pi rendszeres jelváltását. Ha ez a szívverés egy adott ideig nem fordul elő, akkor azt kell feltételeznünk, hogy a Raspberry Pi már nem aktív. Felakasztotta magát, vagy egy végtelen hurokban van, ahonnan már nem tudja megszabadítani magát - mindenesetre már nem a munkáját végzi. Ezen a ponton a mikrovezérlő beavatkozik, és röviden kikapcsolja a Raspberry Pi tápellátását. Ezután a RasPi újraindulhat, folytathatja működését, és a mikrovezérlő viszont újra elkezd figyelni.

A pacemaker szoftver funkciója

A bevezetőben már nagyjából leírtam, mit csinál a pacemaker. Emlékeztetőül: itt van ismét a blokkvázlat. A mikrovezérlőnek két fő feladata van:

  1. monitorozás időtúllépéskor és
  2. Áramkimaradás időkorlát esetén

Pontosan ezt teszi a program fő része, amint látni fogjuk egy pillanat alatt.

Pacemaker szoftver

A mikrovezérlő számára a szoftvert általában nem Python-ban írják, mint a Raspberry Pi-nél, hanem a Programozási nyelv C. Az Arduino IDE már rendelkezik az összes komponenssel a C program összeállításához és a mikrovezérlőhöz.

Itt az enyém Pacemaker program C-ben:

Mint látható, a program elég kompakt. Menjünk végig egyesével. Az elején lesz néhány paraméter Meghatározzák:

  • A BOOT TIME azt az időt jelöli milliszekundumban, hogy a Raspberry Pi induljon. Itt 30-as évek.
  • Az AUSZEIT az áramszünet időtartama az újraindítás kiváltásához. Itt 5s.
  • Az OUTPUT a tápellátás kikapcsolásához szükséges csatlakozó tűje. Itt PB3 = 2-es tű.
  • Az INPUT a szívritmus bemenetének tűje. Itt PB1 = 6-os tű.
  • waitTime az a maximális idő, amely szívverés nélkül telhet el, mielőtt az újraindítás elindulna. Itt egy nagylelkű 60-as évek

Az idők természetesen beállíthatók, ha például az újraindítás 30 másodpercnél tovább tart.

Ezenkívül a program indításakor meghatározható egy változó utolsó szívverés, amely megtakarítja az utoljára észlelt jelváltozás idejét.

A be- és kimeneteket a setup () funkció határozza meg és köti össze. Az OUTPUT értéke LOW. Emlékeznünk kell arra, hogy itt vagyunk a Fordított logika tenned kell, mert a MOSFET invertálja a jelet. Az alábbiak érvényesek:

  • OUTPUT = LOW: bekapcsol
  • KIMENET = HIGH: kikapcsol

Ezután a változó utolsó szívverés előre be van állítva az aktuális idővel és a Megszakításos kezelés a vonallal berendezve:

attachInterrupt (digitalPinToInterrupt (INPUT), isr, CHANGE);

Ez azt jelenti, hogy az INPUT kapcsolatot folyamatosan figyelik, és az isr funkciót hívják meg polaritásváltozás esetén (CHANGE). Ez a funkció, amint azt a program lentebb láthatja, nem tesz mást, mint hogy a változó utolsó szívdobbanást az aktuális idővel látja el. Ez most automatikusan megtörténik a HIGH-ról LOW-ra és LOW-ról HIGH-ra váltáskor az INPUT csapnál .

A setup () funkció utolsó művelete az áramellátás bekapcsolása a stromAn () függvény segítségével. A program végén megtaláljuk őket. A stromAn () először az OUTPUT értéket LOW értékre állítja, hogy bekapcsolja a Raspberry Pi áramellátását, majd megvárja a BOT IDŐT. Ezután a változó utolsó szívveréshez ismét hozzárendelik az aktuális időt.

A stromAn () analógiához tartozik a stromOff () függvény is. Nem tesz mást, mint az OUTPUT értéket HIGH értékre állítja, hogy kikapcsolja a Raspberry Pi áramellátását és megvárja a megadott KI IDŐT.

A Fő program A loop () most összeköti az összes függvényt, és még mindig nagyon egyszerű. Ellenőrzi, hogy a A TimeOut lejárt van. Ez az eset áll fenn, amikor az aktuális és az utoljára észlelt szívverés ideje közötti különbség nagyobb, mint a megadott várakozási idő. Csak akkor hívják egymás után a stromAus () és a stromAn () parancsokat, hogy a Raspberry Pi-t kényszerítsék a rendszerindításra. Ellenkező esetben csak 100 ms várakozásra van szükség, majd kezdje elölről.

Flash pacemaker szoftver

A program futtatásához a ATtiny 13A átmásoljuk a forrásszöveget ezen az oldalon, és beillesztjük a Arduino IDE a. Ne felejts el spórolni! Amikor a programozási hardver (lásd az áramkört) készen áll, a vázlat könnyen felvillanható az ATtiny-n a Shift billentyű és egyidejűleg kattintson az ikonra a jobbra nyíl. A programozó (Nano) fényei röviden felvillannak, majd a vaku befejeződik. Ha az Arduino IDE nem dob hibát, az ATtiny eltávolítható a kenyérlapról és behelyezhető a tényleges pacemaker áramkörbe.