Vo voľnom pokračovaní článku o mikrokontroléri PICAXE ukážeme zaujímavé funkcie PICAXE, ktoré sa často používajú v rôznych zariadeniach. Sú to funkcie založené na časovačoch a čítačoch mikrokontroléra, ktoré sú užitočné na generovanie impulzov, meranie dĺžky impulzov a meranie počtu pulzov, čiže v podstate meranie frekvencie.
Príklady sú vo videu:

Piny PICAXE 08M2
Pretaktovanie čipu
Najskôr vysvetlíme možnosti zmeny taktovacej frekvencie, čiže pretaktovanie a podtaktovanie. Implicitne nastavená taktovacia frekvencia je 4 MHz, Od tejto frekvencie sa odvíja nielen rýchlosť vykonávania inštrukcií, ale aj funkcie časovačov a komunikačných rozhraní. Pomocou príkazu SETFREQ môžete u čipu PICAXE 08M2 zvýšiť taktovaciu frekvenciu na 8, 16, alebo 32 MHz, alebo znížiť až na 31 kHz. Pre obvod PICAXE 08M2 môžete použiť príkaz SETFREQ s parametrami: k31, k250, k500, m1, m2, m4, m8, m16 a m32. Nastavíte tak interné taktovacie frekvencie 3I kHz, 250 kHz, 500 kHz, 1 MHz, 2 MHz, 4 MHz, 8 MHZ, 16 MHz a 32 MHz. V nasledujúcom príklade sa využíva implicitne nastavená frekvencia 4 MHz. Príkaz PAUSE bude fungovať tak ako má, pauza medzi blikaním bude 1000 ms, čiže 1 sekundu. Pre istotu frekvenciu nastavíme, keďže v nasledujúcich príkladoch sa bude meniť
setfreq m4 ; implicitná taktovacia frekvencia 4 MHz main: high C.2 pause 1000 low C.2 pause 1000 goto main
Teraz skúsime zmeniť taktovaciu frekvenciu na 32 MHz, čiže 8x vyššiu. LED dióda bude blikať 8x rýchlejšie
setfreq m32 ; taktovacia frekvencia 32 MHz main: high C.2 pause 1000 low C.2 pause 1000 goto main
Zdalo by sa že pre väčšinu aplikácií bude výhodné nastaviť čo najvyššiu taktovaciu frekvenciu, napríklad už spomínaných 32 MHz. Platí však jednoduché pravidlo: čím je vyššia taktovacia frekvencia, tým vyšší je prúdový odber. Na porovnanie pri 32 MHz samotný čip bez pripojených zariadení odoberá 2,2 mA. Pri 31 kHz je to takmer 20 x menej – 0,13 mA
Generovanie pulzov
Príkaz PULSOUT umožňuje jednoducho generovať pulzy. Má dva parametre: číslo pinu na ktorom sa generujú pulzy a dĺžku trvania pulzu v jednotkách 10 μs. Táto hodnota platí pri implicitnej frekvencii 4 MHz. Pri maximálnej frekvencii 32 MHz je jednotka v ktorej sa nastavuje dĺžka trvania pulzov logicky 8 x kratšia, čiže 1,25 μs. Generovaný pulz je opačný oproti počiatočnému stavu na príslušnom pine. Príklad generuje najkratšie možné pulzy s pauzou 100 ms
setfreq m4 ; implicitná taktovacia frekvencia 4 MHz main: pulsout 1,1000 ; v jednotkách 10 μs pause 100 goto main
Meranie dĺžky pulzov
Príkaz PULSIN meria dĺžku pulzu na pine určenom prvým parametrom. Druhý parameter určuje či sa bude pulz merať od nábežnej hrany (1) alebo zostupnej hrany (0) signálu. Tretí parameter je premenná, do ktorej sa dĺžka pulzov uloží. Môže to byť premenná typu byte začínajúca na b, alebo premenná typu word začínajúca na w. Jednotky sú rovnaké ako pri funkcii PULSOUT, čiže pri implicitnej taktovacej frekvencie 4 MHz je to 10 μs. Príkaz pulsin 2,1,w5 zmeria dĺžku pulzu na PIN 2 počínajúc nábežnou hranou a hodnotu v desiatkach mikrosekúnd uloží do premennej W5
setfreq m4 ; implicitná taktovacia frekvencia 4 MHz main: pulsin 1,1,w5 debug goto main
Meranie dĺžky pulzov je veľmi užitočné napríklad pri analýze signálov. Typickým príkladom je PWM signál pre servomotor, kde sa uhol natočenia určuje šírkou pulzu. Možno sa pýtate načo je to dobré, veď keď takýto signál privediete na servomotor, ten urobí čo treba. Ale čo ak potrebujete napríklad z dôvodu dosiahnutia vyššieho krútiaceho momentu, alebo vyššej presnosti nahradiť servo krokovým motorom. Vtedy môžete nechať riadiaci algoritmus bezo zmeny a v podprograme na ovládanie motora stačí len prepočítať zmeranú dĺžku pulzov na počet krokov, ktorý musí motor vykonať, aby sa jeho hriadeľ natočil o požadovaný uhol.
Počítanie impulzov
Príkaz COUNT umožňuje počítať pulzy počas určeného časového intervalu. Prvý parameter je číslo pinu, druhý čas v milisekundách počas ktorého sa budú počítať pulzy a tretí parameter je premenná, kam sa počet pulzov uloží. Odporúčame premennú typu word. Príkaz count 2,1000,w5 meria počet pulzov počas 1 sekundy, čiže vlastne meria frekvenciu v Hz. Pri taktovacej frekvencii 4 MHz by mali pulzy mať dĺžku minimálne 40 μs a presne odmeriate frekvencie zhruba do 10 kHz. Ak zvýšite taktovaciu frekvenciu 32 MHz môžete merať zhruba do 50 kHz. Ak chcete zisťovať hodnotu frekvencie cez debug použijete konštrukciu
setfreq m4 ; implicitná taktovacia frekvencia 4 MHz main: count 1,1000,w5 debug goto main
V budúcej časti už budeme používať PICAXE v rôznych prototypových doskách
Príklad na generovanie pulzov
Video ukazuje ako si vyrobiť kábel na programovanie PICAXE aj pripojenie alfanumerického displeja