Exite uma informação que é repassada a todos inclusive no próprio site do Arduino que está
equivocada. Está afirmação está baseada e fundamentada na própria constituição da libraria
do Arduino, no que se refere ao comando de definição do pino, "pinMode()", á saber:
#define uint8 unsigned char // Define que uma "unsigned char" passará a ser referenciada
// como "uint8".
O comando pinMode, é definido assim dentro da libraria, "pinMode(uint8,uint8)", portanto esta
função recebe valores do tamanho de uma "char" e não do tamanho de uma "int", como é visto
em vários programas.
Maneira correta de definir os pinos de I/Os, exemplo.:
#define Led 2
ou
const char Led = 2;
ou
const unsigned char Led = 2;
Maneira incorreta, exemplo.:
unsigned int Led = 2;
ou
int Led = 2;
Cabe salientar que está maneira incorreta de definição gera outros problemas, sendo o
primeiro o uso de memória de programa e memória Ram e com isso aumenta o tempo
de execução de uma simples rotina.
Para testar isso eu criei um programa simples, defini um pino como saída e fiquei
ligando e desligando ele, para poder medir o tempo de execução, isto envolvendo
várias formas de definição do pino de I/O, com os seguintes resultados abaixo:
Exemplo 1: O pino foi definido da maneira usual (incorreta), conforme mostra a figura 1,
notem que o uso de memória de programa, que ficou em 892 bytes e
consumiu 11 bytes de memória Ram.
Já na figura 2, podemos ver o tempo de execução das instruções de ligar
e desligar o referido pino, que neste caso levou 5,36us. para ligar e desligar
o pino.
Figura 1.
Figura 2.
Figura 3.
Figura 4.
Tags:
Para completar, resolvi fazer uma comparação entre o CodeVisionAVR, para a mesma rotina que foi testado
acima e confesso, surpreendente a diferença.
Resultados: Memória flash utilizada no CodeVision 322 bytes, contra 854 Bytes no Arduino.
Memória Ram utilizado no CodeVision 0 Bytes, contra 9 Bytes no Arduino.
Velocidade no CodeVision 136ns, contra 504us.
Não precisa falar mais nada, segue abaixo as imagens do compilador e da medição do pulso.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por