Guardando in giro ho visto che il periodo di campionamento del comando digitalRead viene dato sui 5us alcuni dicono addirittura 2us
ma misurandolo in questo modo...
mi viene sugli 8us a volte arriva anche a 16us, quindi mi chiedo, sto sbagliando qualcosa o dipende da altre variabili per esempio la temperatura del processore?
sarà dovuto ad un ulteriore ritardo nell'assegnazione del valore alle variabili?
Il digitalRead() è lentissimo perché fa un'infinità di cose richiamando varie funzioni (... basta andare a veder il sorgente nel "core") ...
int digitalRead(uint8_t pin)
{
uint8_t timer = digitalPinToTimer(pin);
uint8_t bit = digitalPinToBitMask(pin);
uint8_t port = digitalPinToPort(pin);
if (port == NOT_A_PIN) return LOW;
// If the pin that support PWM output, we need to turn it off
// before getting a digital reading.
if (timer != NOT_ON_TIMER) turnOffPWM(timer);
if (*portInputRegister(port) & bit) return HIGH;
return LOW;
}
Nel caso ci sia bisogno di velocità, molto meglio usare direttamente l'accesso diretto hai PORTx della MCU ... cosa che si può fare tranquillamente anche attraverso l'IDE di Arduno.
Ovvio, occorre conoscere bene la mappatura dei vari bit dei vari PORTx sui pin di Arduino ...
Se sei interessato alla tecnica, puoi dare un'occhiata QUI.
grazie
per il progetto che ho in mente forse 8us bastano il problema è il ritardo introdotto dalle operazioni successive ancora non so precisamente quanto tempo mi serve e quanto ne devo usare ma comunque se avrò problemi faró un topic a parte