С появлением Arduino и Micropython в мире микроконтроллеров все стало намного интереснее и проще, но в то же время, возможно, все стало более «медленным». Дело в том, что дополнительный код (Overhead) Arduino и micropython, заставляют микроконтроллер тратить больше времени на выполнение каких-либо действий. По крайней мере, так говорят специалисты. Но мы попробуем разобраться в этом сам.

Имеется идея: узнать, сколько времени требуется входному сигналу Raspberry Pi Pico для активации выхода. Но для чего? Ну, чтобы понять, на какой максимальной частоте может работать код Arduino или Micropython.
Мы подключили кнопку к контакту 16 Raspberry Pi Pico, а светодиод – к контакту 17. Для кнопки не требуется внешний резистор, потому что мы активировали ее внутреннюю подтяжку к земле.

Код для Micropython:
from machine import Pin
import time
led = machine.Pin(17, machine.Pin.OUT)
button = Pin(16, Pin.IN, Pin.PULL_DOWN)
led.off()
while True:
if(button.value()):
led.on()
else:
led.off()
Код для Arduino:
const int buttonPin = 16;
const int ledPin = 17;
int buttonState = 0;
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT_PULLDOWN);
}
void loop() {
buttonState = digitalRead(buttonPin);
if (buttonState == HIGH) {
digitalWrite(ledPin, HIGH);
} else {
digitalWrite(ledPin, LOW);
}
}
Используя двухканальный осциллограф, мы поместили канал 1 на кнопку, а канал 2 на светодиод. Затем мы настроили триггер на канал 1 (кнопка) и нажали кнопку. Измерения осциллографа ниже показывают, что код Arduino может выполнить переход от кнопки к светодиоду за 2 мкс, тогда как код Micropython занимает 18 мкс.

Это означает, что микропитон примерно в 9 раз медленнее кода Arduino, по крайней мере, для этого конкретного кода. Теоретически код Arduino может работать на частоте 500 кГц (1/2 мкС), а микропитон может работать на частоте 55,5 кГц (1/18 мкС). Во встраиваемых системах (особенно критических) такое время иногда неприемлемо, системы могут реагировать гораздо быстрее. Наши измерения доказывают, что некоторые языки недостаточно быстры для определенных приложений.
© digitrode.ru