Ve svém starším článku (Brutální optimalizace...) jsem zjistil, že řízením GPIO portu procesoru PICAXE M2+ nedokážu vyrobit pulz kratší než 240 µs.
Čeho je schopen ESP8266 a Lua zjišťuji zde...
Měření
Měřil jsem logickým analyzátorem Saleae, stejně jako ve zmíněné Brutální optimalizaci. Zjišťoval jsem dění na GPIO1 spouštěné sestupnou hranou signálu, taktéž na GPIO1.
Zdrojové texty v Lua (bohajehojaxtoskloňuje) uvádím pro jednotlivé testy zvlášť.
Test 1 - gpio.write(...)
Shodíme, nahodíme, shodíme, nahodíme a tak pořád dokola. K tomu nám slouží příkaz gpio.write(...). Z obrázku vidíme, že se dostaneme na 320 µs, což je v porovnání s PICAXE Basicem dost bída.
function Test1() gpio.mode(1, gpio.OUTPUT, gpio.PULLUP); print("Test 1 start") for i=1, 100 do gpio.write(1, gpio.LOW) gpio.write(1, gpio.HIGH) end print("end") end
Z grafu je patrné, že pod 320 µs se nedostaneme. |
Test 2 - gpio.serout(...)
Naštěstí je v Lua implementován příkaz gpio.serout(...), kterému předhodíme pole s délkou pulzů udanou v mikrosekundách. Možnosti tohoto příkazu jsou ale bohatší, neváhejte mrknout do dokumentace.Tady pošleme dva pulzy 20 µs, abychom se v datech analyzátoru lépe vyznali, pak postupně pošleme pulzy dlouhé 1 až 8 µs se střídající se polaritou.
function Test2() gpio.mode(1, gpio.OUTPUT, gpio.PULLUP); print("Test 2 start") gpio.serout(1,0,{20,20,1,2,3,4,5,6,7,8,20,20}) print("end") end
Nejkratší pulz je 2.833 µs |
Požadováno [µs] | Naměřeno [µs] | Odchylka [µs] |
---|---|---|
1 | 2.833 | 1.833 |
2 | 3.917 | 1.917 |
3 | 4.833 | 1.833 |
4 | 6.000 | 2.000 |
5 | 6.750 | 1.750 |
6 | 8.000 | 2.000 |
7 | 8.833 | 1.833 |
8 | 9.917 | 1.917 |
20 | 21.750 | 1.750 |
Další informace
- dokumentace ke gpio.write(...)
- dokumentace ke gpio.serout(...)
Žádné komentáře:
Okomentovat