Vše zůstalo stejné, jen jsem vyměnil mikrokontrolér za ESP32 a jal se měřit...
Měření
Opět jsem měřil jsem logickým analyzátorem Saleae a zjišťoval jsem dění na GPIO17 spouštěné sestupnou hranou signálu, taktéž na GPIO17.MCU & LUA
Pro test byl použit lehce letitý hardware WEMOS ESP32. Z lenosti jsem nechal připojeny moduly GPS NEO 6M a OLED z jednoho prototypu.Použit je Lua-RTOS-ESP32.
TEST 1 - PIN.PIO.SETHIGH(...)
Shodíme, nahodíme, shodíme, nahodíme a tak pořád dokola. K tomu nám slouží příkazy pio.pin.sethigh() a pio.pin.setlow(). Z obrázku vidíme, že se dostaneme na 16.25 µs, což je téměř 20x rychlejší než ESP8266.function Test1() pio.pin.setdir(pio.OUTPUT, pio.GPIO17) print("Test 1 start") for i=1, 100 do pio.pin.sethigh(pio.GPIO17) pio.pin.setlow(pio.GPIO17) end print("end") end
Šířka pulzu je 16.25 µs |
TEST 2 - PIN.PIO.INV(...)
Protože tato implementace nemá ekvivalent příkazu SEROUT, tak jsem zkusil alespoň cyklicky negovat stav portu. Čas je 16.69 µs, což je tak šulnul s TEST 1.function Test2() pio.pin.setdir(pio.OUTPUT, pio.GPIO17) print("Test 1 start") for i=1, 100 do pio.pin.inv(pio.GPIO17) end print("end") end
Šířka pulzu je 16.69 µs |
Žádné komentáře:
Okomentovat