Assim mesmo que faça um overclock no microcontrolador ou microprocessador isso não necessariamente se traduz em ganho de velocidade, pois ao atingir a frequência máxima de chaveamento do dispositivo ele simplesmente ficara em determinado nível de tensão e não conseguirá ter um tempo de decaimento e acionamento de sinal que o faca alternar entre os extremos do nível baixo e alto.
Para conseguir mais rapidez no Raspberry tive que recorrer a diretiva "sio_hw->gpio_set" que
consegue ser mais rápido do que a "digitalWrite" vamosaos trecho que código com um clock
de 200MHZ, cheguei a fazer overclock mas o ganho foi pouco e o risco de alguns
periféricos não funcionar corretamente também aumenta.
Para o primeiro utilizei o pino 14 e fiz o teste:
for(;;)
{
digitalWrite(14, HIGH);
digitalWrite(14, LOW);
}
o que deu um sinal de 403ns em nivel baixo e 423ns em nivel alto. prosseguindo para o próximo teste fiz:
void loop()
{
int conta =0;
for(;;)
{
conta++;
if(conta==6)
{
sio_hw->gpio_set = 1ul << (14 & 0x1fu);//acessar diretamente o pino
}
if(conta>12)
{
sio_hw->gpio_clr = 1ul << (14 & 0x1fu); // faz operação E com o pino a ser acessado
conta =0;
}
}
}
Assim utilizei os ciclo de maquina como base de tempo mas os menores valores foram de 6 ciclos
menor que isso o sinal não alterna mais.
com isso consegui 208ns em nível baixo e 234ns em nível alto um ganho de aproximadamente
50%.
Se tiver alguma sugestão ou duvida deixe ai nos comentários.
Até a próxima!