GPIO přerušení

Chodil jsem na přednášky a cvičení z „Céčka“ a tak vím, že existuje nějaké přerušení. Pro kontrolu vstupu se dá v základu použít přístup: spustím nekonečnou smyčku a co chvíli se budu dívat, zda se něco neděje, jenže to nelze dělat kontinuálně, proces si musí na chvíli oddychnout a nechat prostor dalším, v tu chvíli však nesleduje vstup a ten se může během krátké chvíle změnit, aniž by to program zpozoroval. Elegantnější cesta je nechat operační systém, aby sledoval tzv. přerušení. a ve chvíli, kdy k němu dojde o události spravil náš proces, který na to zatím čeká. Protože chystám provizorní časomíru, kterou bych i přesto chtěl mít co nejpřesnější, za pomoci RPi a vím, že běžné Linuxové jádro není real-time, vzpomněl jsem si na přerušení, které bych rád porovnal s externím zařízení v podobě čítače pulsů (viz astromik.org a jeho časomíra). Hledal jsem a nakonec našel.
Sice nejde o přerušení v pravém slova smyslu, ale zastane stejnou službu.
Vybereme si pin, já zvolil GPIO 15 (tj. P1-10) a dáme jej k dispozici programům jako vstup:

echo 15 > /sys/class/gpio/export
echo in > /sys/class/gpio/gpio15/direction

Zde jsem nalezl postup. Stahujte, upravujte a kompilujte, tam odkazovaný, soubor. Spusťte a sledujte veselá přerušení vždy, když se změní stav vstupního pinu. Podle jiného programu v pythonu, je časová prodleva mezi dalším přerušením do dt=0,002 s (včetně vypisování na obrazovku), což je dostatečné pro měření do řádu setin sekundy, ale pravděpodobně si to nezadá s měřením s rozlišením na 32×10-3 s, zajištěné externím čítačem.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *