collapse

* Posts Recentes

Como reproteger as pontas de cobre do ferros de soldar? por vasco
[Hoje às 18:53]


é preciso ter cuidado com ESD? por vasco
[Ontem às 21:26]


Bibliotecas para arduino e drivers de stepper - o problema da 'distracção' por SerraCabo
[14 de Dezembro de 2018, 12:12]


Potênciometro 4.7 ou 5 KOhm com switch por brunus
[13 de Dezembro de 2018, 19:35]


Zener BZW04-105? por brunus
[11 de Dezembro de 2018, 17:34]


Artigo 11, 13 e os restantes por jm_araujo
[10 de Dezembro de 2018, 11:05]


Compra Colectiva Mouser N3-2018 (limite 25 Nov) por Hugu
[10 de Dezembro de 2018, 01:07]


Ajuda para reparar Luzes de LED de Natal por brunus
[09 de Dezembro de 2018, 00:59]


Usar steppers de 5 pontas como se fossem de 4 pontas por SerraCabo
[08 de Dezembro de 2018, 21:18]


LusoRobótica - Website - Estado actual por Tech_JA
[06 de Dezembro de 2018, 09:18]

Autor Tópico: Dificuldade com MsTimer2  (Lida 2058 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline jrobe

  • Mini Robot
  • *
  • Mensagens: 2
Dificuldade com MsTimer2
« em: 10 de Dezembro de 2011, 22:08 »
Srs.
Sou novo por aqui e também com o arduino. Solicito me ajudarem com o seguinte:
O código abaixo deveria escrever na serial sempre aproximadamente o mesmo valor, por que isso não acontece? O que há de errado?

#include <MsTimer2.h>

unsigned long contador = 0;

void setup(){
  Serial.begin(9600);
  MsTimer2::set(1000, flash);
  MsTimer2::start();
}
 
void loop(){
contador = contador++;

 
void flash(){
  Serial.println(contador);
  contador = 0;


Agradeço qualquer ajuda.
José Roberto
« Última modificação: 15 de Janeiro de 2012, 16:36 por Psycop »

Offline vdr

  • Mini Robot
  • *
  • Mensagens: 78
Re: Dificuldade com MsTimer2
« Responder #1 em: 10 de Dezembro de 2011, 23:18 »
Se quiseres verificar se o timer esta a ser disparado com precisão tenta antes verificar deste modo:

Código: [Seleccione]
#include <MsTimer2.h>

unsigned long time_old =0, time_new= 0,contador = 0;

void flash() {
  time_new = millis();
  Serial.print("time: ");
  Serial.print(time_new-time_old);
  Serial.println("!");
  Serial.println(contador);
  contador = 0;
  time_old = millis();
}

void setup() {
  Serial.begin(9600);
  MsTimer2::set(500, flash);
  MsTimer2::start();
}

void loop() {
  contador = contador++;
}

Offline jrobe

  • Mini Robot
  • *
  • Mensagens: 2
Re: Dificuldade com MsTimer2
« Responder #2 em: 10 de Dezembro de 2011, 23:46 »
Veja o resultado:

time: 498!
126991
time: 500!
253882
time: 501!
126902
time: 499!
127089
time: 500!
126906
time: 501!
126903
time: 500!
126906
time: 500!
126903
time: 500!
126906
time: 500!
126906
time: 500!
188273
time: 500!
126906
time: 500!
253813

o valor de contador não deveria ser sempre aroximadamente o mesmo?

Obrigado.

Offline microbyte

  • Mini Robot
  • *
  • Mensagens: 1.322
    • http://ricardo-dias.com/
Re: Dificuldade com MsTimer2
« Responder #3 em: 11 de Dezembro de 2011, 12:09 »
Se fossemos para um nível mais abaixo, que não a programação "Arduino", sim deveria ser aproximadamente igual. O problema é o de sempre, como Arduino, é complicado usar em aplicações de precisão temporal. Existem rotinas escondidas que correm sem tu dares ordem explícita.

Experimenta colocar um delay() no teu loop() e observar o resultado.