Při testech připojování externích zařízení jsem narazil na podivné chování programových smyček, takže jsme se jim na dubnovém Malostranském Robodoupěti podívali na zoubek osciloskopem.
Smyčka forever:
Takhle vypadal testovací program:
Doba setrvání výstupu ve stavu H i L je 5,8 μs (perioda 11,6 μs), zdá se však, že doba obratu smyčky je mnohem větší.
Je tomu skutečně tak! Oscilogram celého průběhu smyčky forever (tedy od náběžné hrany prvního impulsu k téže náběžné hraně) ukazuje, že dvojice pulzů se stáhla do téměř neviditelné linky a je zřejmé, že obrat téměř prázdné smyčky forever trvá 24 ms (frekvence necelých 42 Hz). Zpracování všech událostí před každým obratem smyčky zřejmě vyžaduje mnoho času a výkonu procesoru.
Smyčka forever tedy rozhodně není vhodná pro zachycení krátkých událostí nebo generování vyšších frekvencí. Komfortní programovací prostředí si zde vybírá svou daň.
Smyčka while:
Pro první test byl zvolen stejný program jako v případě smyčky forever, tedy dva pulsy za sebou.
Délka pulsu ve stavu H i L je opět 5,8 μs (perioda 11,6 μs). Doba obratu smyčky je přibližně 12 μs (frekvence 87 kHz).
Protože režie smyčky while je zanedbatelná, musíme si její začátek a konec nějak označit. Vyřešíme to jednoduše prodloužením logické úrovně L po prvním pulsu na dvojnásobek.
Délka nejkratšího pulsu se nepatrně prodloužila na 6,2 μs a doba obratu smyčky je v tomto případě 18 μs (frekvence 56 kHz).
Závěr:
Smyčka forever se nehodí pro generování rychlých pulsů ani pro zachycení krátkých dějů, ale smyčka while je naštěstí dostatečně rychlá pro obojí. Příjemné zjištění je, že výstupní napětí na pinech micro:bitu má velmi kvalitní průběh se strnými hranami a správným rozkmitem, takže spolupráce s dalšími logickými obvody bude i při nejvyšších rychlostech nejspíš bezproblémová.