TODOPIC
Microcontroladores PIC => dsPIC => Mensaje iniciado por: black_flowers en 11 de Agosto de 2007, 12:07:46
-
hola, ¿qué función puedo utilizar para generar delays en c30? He visto alguna como "delay_ms(300);" por ejemplo, pero estaban definidas en el propio programa, es decir no eran funciones predefinidas e incluídas.
un saludo. :-)
-
Yo siempre he incorporado en mis programas la función delay artesanal, porque no me consta que C30 tenga una propia.
En mi página colgué un asistente que genera automáticamente el código del Delay que necesites en función de la velocidad a la que esté trabajando tu micro. Está diseñado para trabajar con dsPIC33F pero será fácil adaptarlo a 30F.
Lo tienes aquí:
33F - Asistente para la generación automática de retardos (http://www.micropic.es/index.php?option=com_content&task=view&id=33&Itemid=58)
-
Buenas,
En C30 tienes la funcion __delay32(unsigned long counter)
está escrita en ensamblador y tienes que pasarle el numero de cuentas que se desea generar. Para eso, algo tan facil como generarte luego en la cabecera algo como:
// External oscillator frequency with PLL enable
#define SYSCLK 8000000
#define FCY SYSCLK*4/2 //pll enabled
// Defines para calcular los ciclos para determinados tiempos
// Se suma uno al final para asegurarnos que tenemos el tiempo minimo deseado
// en caso de que la division no fuese exacta
// si se quiere el valor exacto (y no minimo) quitar el "+1" final
#define US_10 (1*FCY/100000)+1
#define US_25 (25*FCY/1000000)+1
#define US_50 (5*FCY/100000)+1
#define US_100 (1*FCY/10000)+1
#define US_250 (25*FCY/100000)+1
#define US_500 (5*FCY/10000)+1
#define MS_10 (1*FCY/100)+1
#define MS_25 (25*FCY/1000)+1
#define MS_50 (5*FCY/100)+1
#define MS_100 (1*FCY/10)+1
#define MS_250 (25*FCY/100)+1
#define MS_500 (5*FCY/10)+1
Un saludo,