10-05-2020, 16:12
(Ten post był ostatnio modyfikowany: 10-05-2020, 16:26 przez ElektronPL.)
(10-05-2020, 01:50)kaczakat napisał(a): Jak wejdziesz w core Arduino czy DUE, czy STM, czy ESP32 to tam są zdefiniowane funkcje digitalWrite i odpowiadający im instrukcje na rejestrach danego uC. Nie jest to raczej assembler, bardziej C/C++, ale szybkość jest porównywalna.Dzięki za polecenia, właśnie tego szukałem
Całe ESP32 core Arduino jest oparte o system operacyjny RTOS i prędkość działania może być zupełnie oderwana od parametrów technicznych. Na pewno jednak warto mieć jedną taką płytkę i się nią pobawić.Kod:extern void IRAM_ATTR __digitalWrite(uint8_t pin, uint8_t val)
{
if(val) {
if(pin < 32) {
GPIO.out_w1ts = ((uint32_t)1 << pin);
} else if(pin < 34) {
GPIO.out1_w1ts.val = ((uint32_t)1 << (pin - 32));
}
} else {
if(pin < 32) {
GPIO.out_w1tc = ((uint32_t)1 << pin);
} else if(pin < 34) {
GPIO.out1_w1tc.val = ((uint32_t)1 << (pin - 32));
}
}
}