A mikrovezérlő programját (firmware) C nyelven írtam, az MPLAB telepítőjében a "HI-TECH Universal Toolsuite" néven szereplő fordítót használva. Ez bőven megfelel a feladathoz. Az program nem okozna nehézséget assembly-ben sem, egyedül a több bájtos számok kezelése miatt választottam a C nyelvet.
A firmware-t igyekeztem blokkszerűen felépíteni és felkommentezni, hogy áttekinthető és érthető legyen. Az időalapot a Timer0 szolgáltatja 1:4 prescalerrel (előosztóval), így a névlegesen 4MHz-es belső oszcillátorról 1024us időközönként csordul túl. Ez nem pontosan 1ms, de a feladathoz megfelel.
A firmware a Timer0 minden túlcsordlásakor megfordítja a MOSFET töltéspumpáját kapcsolgató lábat. Ezután megnézi, hogy jön-e még jel a végálláskapcsolóról. Ha igen, akkor az mFlag 1-be billentésével jelzi a firmware megfelelő része számára, hogy a motort továbbra is bekapcsolva kell tartani. A következő blokk a bemenetek pergésmentesítését végzi, és ha stabilak a bemenetek, akkor a rökövetkező blokk számára ezt jelzi, az pedig a beérkezett jelek alapján elvégzi a szükséges teendőket. Ezután jön a különféle számlálók növelése illetve csökkentése attól függően, hogy milyen üzem van épp folyamatban.
A fenti magyarázat ellenére a forráskódot bőségesen kommentáltam, remélem könnyedén eligazodtok rajta.
A cikk még nem ért véget, lapozz!
Értékeléshez bejelentkezés szükséges!