TODOPIC

Otros Microcontroladores / Dispositivos programables => Microcontroladores ARM => Mensaje iniciado por: elgarbe en 10 de Marzo de 2015, 12:29:32

Título: Alguien me explica esta incongruncia?
Publicado por: elgarbe en 10 de Marzo de 2015, 12:29:32
Estoy trabajando con la inicializacion de una pantallita TFT, portando cierto código que anda por la red. Estoy haciendo debug de las rutinas porque no funcionan. El tema es que ni siquiera estaba pudiendo hacer que las instrucciones de escrivir en el puerto se ejecuten fisicamente. De hecho me he encontrado con esta incongruencia:

(https://farm8.staticflickr.com/7622/16774727791_e892022b22_z.jpg) (https://flic.kr/p/ryjS9F)

Despues de ejecutar la instruccion    LPC_GPIO->PIN[0] |= (0xFF << 16);
en el panel izquierdo veo el valor que toma    LPC_GPIO->PIN[0] y    LPC_GPIO->PIN[DATA_PORT] (con DATA_PORT definido como 0) y como se ve en la imagen, ambos han cambiado, pero tienen valores diferentes!!!!! como puede ser eso posible?

Saludos!
Título: Re: Alguien me explica esta incongruncia?
Publicado por: KILLERJC en 10 de Marzo de 2015, 14:42:04
Por lo que veo estas poniendo el valor 0xFF00.0000 con la instruccion del medio y luego

Intentando borrar y ponerlo a 0... lo que no logro distinguir si es un menos " - " o un "~" despues del &= , deberia ser este ultimo. EDIT: Bi la imagen de cerca y esta bien

Ahora por que es distinto no se... eso si que no sabria decirtelo :/
Probaste que un int sin signo ? por las dudas ? o esta en un #define ?

Parece mas un problema de compilador
Título: Re: Alguien me explica esta incongruncia?
Publicado por: planeta9999 en 10 de Marzo de 2015, 14:57:48


¿ Has compilado con algún nivel de optimización ?, en caso afirmativo, desactiva cualquier optimización, compila y prueba de nuevo.
Yo he visto también muchas cosas raras con los PIC, al hacer Debug a un objeto compilado con optimización.