TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: dekike en 11 de Marzo de 2007, 17:30:02

Título: Pausas con compilador PICCLITE de HI-TECH
Publicado por: dekike en 11 de Marzo de 2007, 17:30:02
Hola a todos. Despues de hecharle ojo a ejemplos y ejemplos, aun no he podido implementar correctamente las pausas en PICCLITE usando el Pic16f84a.

Si alguno es tan amable de colaborarme con lo siguiente le estare agradecido:

Necesito un ejemplo basico comentado de parpadeo de led, con las rutinas de pausa explicadas. Estoy utilizando DelayMs(x) pero al comprobar tiempos con un cronometro con coinciden.

Mejor dicho, necesito ejemplos basicos con este compilador para el pic16f84a y pic16f877, con 4Mz y otros cristales.

Si siguen las dificultades, tendre que probar el CCS.


Gracias por ayuda.   
Título: Re: Pausas con compilador PICCLITE de HI-TECH
Publicado por: maunix en 11 de Marzo de 2007, 20:09:08
Todas las rutinas Delaymsg(x) que conozco necesitan se les indique "de alguna forma" que cristal es el que se va a usar.

En el caso del CCS, esto se indica al principio del programa.

Es altísimamente probable que debas hacer lo mismo con el de Hitech.
Título: Re: Pausas con compilador PICCLITE de HI-TECH
Publicado por: PalitroqueZ en 12 de Marzo de 2007, 12:47:14
te comento dekike , que los retardos que usa el CCS mediante delay_xs() no siempre dan el tiempo exacto.

asumo que el compilador usará el timer para generar esos retardo.

si quieres precisión en tiempo en lenguaje C lo mejor es que montes un código en ensamblador usando por el ejemplo el software picdelay (http://www.todopic.com.ar/utiles/calcular_retardos.zip) y lo llames en una función:

Código: C
  1. void retardo_n(){
  2. #asm
  3. pega y ajusta el codigo generado por picdelay
  4. #endasm
  5. }

no sin antes haber declarado las variables. Ojo esto sería en CCS, tienes que buscar como sería la directiva en Hitech

Salu2
Pedro
Título: Re: Pausas con compilador PICCLITE de HI-TECH
Publicado por: maunix en 12 de Marzo de 2007, 16:06:15
te comento dekike , que los retardos que usa el CCS mediante delay_xs() no siempre dan el tiempo exacto.

Pero en general uno cuando usa estas rutinas no es buscando la precisión del centésimo sino esperar un tiempo determinado entre tarea y tarea, para mostrar como destella un led o cosa similar.

asumo que el compilador usará el timer para generar esos retardo.

Opino que esto no es así.  Todos los compiladores que conozco de hecho realizan un delay con un bucle de instrucciones. Dejan los timers libres para el usuario

Título: Re: Pausas con compilador PICCLITE de HI-TECH
Publicado por: PalitroqueZ en 13 de Marzo de 2007, 11:07:12
...
asumo que el compilador usará el timer para generar esos retardo.

Opino que esto no es así.  Todos los compiladores que conozco de hecho realizan un delay con un bucle de instrucciones. Dejan los timers libres para el usuario


Tienes razón Mauricio, ya lo comprobé viendo el listado en ensamblador, los retardos del compilador son puros ciclos de instrucciones.

tal vez mi duda se veia reflejada, porque tienen el mismo comportamiento de los retardos usando los timers (en estos, la precisión depende del cristal y de las ecuaciones)

Salu2
Pedro
Título: Re: Pausas con compilador PICCLITE de HI-TECH
Publicado por: maunix en 13 de Marzo de 2007, 19:49:44
tal vez mi duda se veia reflejada, porque tienen el mismo comportamiento de los retardos usando los timers (en estos, la precisión depende del cristal y de las ecuaciones)

Y sí, salvo que uses una base de tiempo externa y que encima entre en sincronismo con las instrucciones del pic, sería muy difícil que hagas una base de tiempo que no dependa de la velocidad de procesamiento de tu pic si usas tu pic (valga la redundancia).   :) :)
Título: Re: Pausas con compilador PICCLITE de HI-TECH
Publicado por: vszener en 15 de Marzo de 2007, 13:24:15
Como te han dicho, comprueba que en tú programa declaras la frecuencia.


Suerte!!! ;)
Título: Re: Pausas con compilador PICCLITE de HI-TECH
Publicado por: eclipse en 20 de Marzo de 2007, 12:29:58
Hola a todos,

tan solo decir que yo sí he usado esas rutinas de retardo con el compilador de HiTech  y funcionan de maravilla.
Como han dicho por ahí, no hay que olvidarse de definir la velocidad del oscilador.
En tu caso, si es de 4MHz como has dicho, tendrías que escribir la siguiente línea de código en el fichero "delay.h":

#define PIC_CLK 4000000

espero que esto sirva de ayuda.

Saludos a todos,

Eclipse.