TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: micro_pepe en 30 de Abril de 2011, 17:04:58

Título: Delay en HiTech impreciso.
Publicado por: micro_pepe en 30 de Abril de 2011, 17:04:58
Estoy probando un ejemplo de parpadeo de un LED, y el tiempo que introducen los delay es mucho más largo. Lo he simulado, y probado en real y dá el mismo resultado.

Código: [Seleccionar]
#define XTAL_FREQ  8MHZ // Cristal 8MHz
#define _XTAL_FREQ 8000000 // Cristal 8MHz
#include <htc.h>
#include "delay.c"

#include "pic18fxx2.h"


__CONFIG (1,HS & OSCSDIS);
__CONFIG (2,PWRTEN & WDTDIS & BOREN & BORV42);
__CONFIG (4,DEBUGDIS & LVPDIS & STVRDIS);
__CONFIG (5,UNPROTECT);
__CONFIG (7,SWDTDIS);

#define LED  RD0


void main(void)
{

TRISD = 0b11111110;
GIE=0;
while(1){
LED=0;
DelayMs(250);
DelayMs(250);
DelayMs(250);
DelayMs(250);
LED=1;
DelayMs(250);
DelayMs(250);
DelayMs(250);
DelayMs(250);
}
}

Saludos.
Título: Re: Delay en HiTech impreciso.
Publicado por: AngelGris en 30 de Abril de 2011, 17:27:40
  No es un problema de HiTech, todo depende de como estén programadas las rutinas. En C no se puede tener un control preciso del tiempo.

  Yo te recomiendo que busques en www.microchipc.com, que hay unas rutinas de delay exactas ya que están hechas en asm. El problema es que sólo se pueden usar delay inferiores a 255 us. Pero bastaría con hacer algún ciclo for con la llamada a las rutinas de x 250 us y ya estaría.
Título: Re: Delay en HiTech impreciso.
Publicado por: micro_pepe en 01 de Mayo de 2011, 15:49:12
OK, encontré donde me dijiste las librerias, las adjunto por si alguien las quiere.