TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: maxluis en 11 de Junio de 2014, 00:36:26
-
Estimados Quiero hacer un pulso para mover un servo, sacarlo por un pin de salida: una variable = 950 + Valor analogo;
__delay_us("una Variable"); // de esta forma me da error al compilar
__delay_us(950); // No me da error.
como se hace para solucionar este problema???? en XC8 en el ccs funciona.
ayudadme plis.
Saludos.
Maxluis.
-
Hola maxluis, si mal no recuerdo lei en el apartado de XC8 del subforo lenguaje C para microcontroladores PIC que no es posible de la manera que
lo planteas.
Saludos!
-
Hola, con XC8 yo le di la vuelta con el siguiente código:
Archivo custom_delay.c
/* -----------------------------------------------------------------------------
* Headers
* -------------------------------------------------------------------------- */
#include "custom_delay.h"
#include "main.h"
/* -----------------------------------------------------------------------------
* Function definitions
* -------------------------------------------------------------------------- */
/**
* Refer to custom_delay.h for details
*/
void Cust_Delay(uint24_t ms)
{
while(ms > 10)
{
__delay_ms(10);
ms -= 10;
}
while(ms)
{
__delay_ms(1);
--ms;
}
}
Archivo custom_delay.h
#ifndef CUSTOM_DELAY_H
#define CUSTOM_DELAY_H
#ifdef __cplusplus
extern "C" {
#endif
/* -----------------------------------------------------------------------------
* Headers
* -------------------------------------------------------------------------- */
#include "pic18.h"
#include "typedefs.h"
/* -----------------------------------------------------------------------------
* Prototypes
* -------------------------------------------------------------------------- */
/**
* Work around function for __delay_ms()
* @note __delay_ms won't accept variables, only constants!
* @param ms to wait
*/
void Cust_Delay(uint24_t ms);
#ifdef __cplusplus
}
#endif
#endif /* CUSTOM_DELAY_H */
Basta con que elimines el include del typedefs y agregus un typedef para uint24_t que es un entero sin signo de 24 bits.
Ponle uno de 16 si gustas, te dará 65535ms.
Saludos
-
Estimado Migsantiago: Gracias por responder, estudiaré lo que me ha indicado Ud. Para ver si me es útil en lo que quiero hacer..desde ya gracias ..
maxluis.