TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: DominusDRR en 03 de Febrero de 2016, 17:42:00
-
Hola.
Estoy trabajando con el PIC16F1509 con MPLAB X v3.20 y XC8 v1.35.
Tengo un función para modificar el ancho de pulso del PWM de la siguiente manera:
void CalibrarAnchoPulsoPWM(unsigned int AnchoPulsoPWM)
{
PWM1DCL = (unsigned char)((AnchoPulsoPWM & 0x0003) << 6);
PWM1DCH = (unsigned char)((AnchoPulsoPWM & 0x03FC) >> 2);
}
Cuando compilo el proyecto, yo obtengo las siguientes advertencias respecto a PWM1DCL yPWM1DCH
PWM.c:52: warning: (752) conversion to shorter data type
PWM.c:53: warning: (752) conversion to shorter data type
Yo he leido por ahí que la solución es escribir lo siguiente en el archio .c que contiene la función:
#pragma warning disable 752
Y en realidad funciona, pero ¿Existe una solución más elegante?
Gracias por cualquier sugerencia.
Fabián Romo
-
Exactamente el pragma solo hace que no le preste atencion a esos warning. Que en si es un warning lo que es mas como un "mensaje" y que sepas que se esta haciendo pero es molesto.
Como quitarlo ademas de eso no veo como, a pesar que uno ya le diga con el cast que realmente quiere que ese valor sea mas pequeño.
Probaste con unsigned short int, en ves de unsigned char? Es lo mismo en bits pero no se como le gusta el XC8 funcionar.
Tambien lei que por mas cast que pongas siempre terminas con el mismo warning.
-
He leído que es un error del compilador, posiblemente en una nueva versión, exista una corrección.
The compiler has obviously gone apesh-t and is issuing a bogus warning. No simple bitwise logical operation with the same data lengths on the LHS and RHS (ignoring promotion) should ever trigger this warning. Put in a support ticket with a minimal compilable self-contained example of the problem and ask for it to be corrected.
Meanwhile, don't mangle your code with casts. I'd try turning it off with:
#pragma warning disable 752
http://www.microchip.com/forums/m907505.aspx (http://www.microchip.com/forums/m907505.aspx)