Re: Simulador de corredera usando 1 GPS
El codigo publicado por Jiauka en la pagina 4, post numero 100 creo que esta mal.
Parace que dependiendo si la velocidad esta por debajo o por encima de 3 nudos utiliza un prescale de 64 o 256. (64x4=256)
Pero luego los K_NOT_FACTOR que utiliiza son 2626000 y 164125 (164125x4 no es 2626000)
Osea los prescale son multiplos de 4 pero los knot_factor no son multiplos de 4.
El valor correcto para KNOT_FACTOR_L creo que seria 656500
Detecte el fallo porque el invento me da velocidades muy bajas por debajo de los 3 nudos y funciona bien por encima de los 3 nudos.
No se si Jiauka sigue por el foro y puede darle un vistazo al codigo y confimar esto.
Lo que me extraña es que el codigo se publico en 2016 y nadie haya notado el error. Porque ya digo que no marca bien velocidad por debajo de 3 nudos.
Copio aqui debajo el trozo de codigo afectado
#define KNOT_FACTOR_H 2626000L
#define KNOT_FACTOR_L 164125L
#define KNOT_LOWER_THRESHOLD 300L //below 3 knots
#define KNOT_UPPER_THRESHOLD 500L //over 5 knots
void pwm_set(long OCRValue)
{
OCR1A = OCRValue; // set the counter
}
void pwm_start(int high_low)
{
if(high_low)
TCCR1B = _BV(WGM12)|_BV(CS11)|_BV(CS10); // // CTC mode - 64 prescale
else
TCCR1B = _BV(WGM12)|_BV(CS12)|_BV(CS10); // // CTC mode - 256 prescale
TCCR1A = _BV(COM1A0); // // Toggle mode 0C1A
pwm_high=high_low;
}
|