Hola amigos:
Tengo un importante problema que necesito saber si alguien tiene solución. El asunto es que necesito hacer una resta y algunas sumas con números int32, todos están declarados de esta manera, pero en la simulación paso a paso en proteus y siguiendo cada variable no logro que las misma sumen ningún número por encima de 65536, en realidad suma, pero me pone un número inferior, como si hubiera sumado, llegado al borde del int16 y vuelto a contar, es decir, al parecer el compilador CCS está limitando las variables a int16 cuando son int32. Es bueno saber que estas operaciones están dentro de una función que se usa dentro de la interrupción por el módulo CCP1, es decir, la pila (o Stack) está en el nivel 3. Descargué la última versión de CCS 5.070 y el problema sigue igual. Les pongo el código:
vtemp4 = 65536 - T1_temp; //vtemp4 da 3.550, y está OK
vtemp5 = T2_Temp + vtemp4; //vtemp5 da 3.558, y está OK
vtemp6 = Acum_Tim1 + vtemp5; //vtemp6 da 8, y debería dar 65.544, AQUÍ ESTÁ EL ERROR
Acum_Tim1 = vtemp6; //Por supuesto, aquí se transmite el error, seteando Acum_Tim1 con 8.
Los valores iniciales de las variables antes de entrar a este bloque son: T1_temp: 61986; T2_temp: 8; vtemp4: 74; Acum_Tim1: 61986.
Todos los valores están configurados como int32:
int32 vtemp4 = 0;
int32 vtemp5 = 0;
int32 vtemp6 = 0;
Espero que alguien me ayude a encontrar la solución, o me digan si es un error de CCS