Gpio Speed Test velocità di commutazione di un pin digitale
Per eseguire una comparazione con Netduino ho eseguito lo stesso esperimento (Netduino speed test) anche per Arduino Uno. Il gpio speed test è molto semplice, basta definire un pin in uscita ed eseguire in modo ciclico un’istruzione che lo ponga a livello logico alto e poi basso.
Questa commutazione continua genera un segnale ad onda quadra misurabile con un oscilloscopio.
Il codice seguente mostra come effettuare questo test:
void setup() { pinMode(0, OUTPUT); //Definisce il Pin0 come Uscita } void loop() { while(true) { digitalWrite(0, HIGH); //Commuta l'uscita alta digitalWrite(0, LOW); //Commuta l'uscita bassa } }
La frequenza ottenuta sul pin 0 è di ben 125 KHz decisamente superiore a quella ottenuta dal Netduino (8.4KHz) nonostante i suoi 48 Mhz di clock contro i 16Mhz dell’Arduino.
L’istruzione digitalWrite() impiega circa 4uS contro i 53uS della Write() eseguita dal Netduino.
Netduino impiega delle risorse per far girare il .Net micro framework ecco perché nello speed test contro Arduino esce perdente.
Arduino nonostante i sui 16Mhz di clock è capace di essere più veloce, perché il suo codice, accede direttamente alle funzioni a basso livello del microprocessore ATMEGA328.