LCD con PIC24FJ (C30)

Alguien ha hecho algún programa por muy facilón que sea en el que use el LCD con un PIC24FJ? Si es así mandarme el programa porque no consigo ni escribir "hola" en la pantalla del LCD con este PIC.
 
Bufff llevo 3 dias loco con un 24fj64ga002. He programado varias lcd's con pics pero este se me resiste. No logro que en el pin de salida (por donde saldran los datos hacia la lcd) tenga el bit que yo quiero. Me estoy liando entre el LATB y el PORTB. No soy capaz de programarlo y me da rabia... En el simulador parece funcionar pero al debugarlo con el icd2 no funciona :(
Bueno si hay alguien mas que se una a nosotros. Jejeje
 
Bueno ya llevo 1 semana y sin solución.
Estoy programando en C, anulo los puertos como entradas analogicas, fijo los pines como salidas con el Triestado ( a 0 logico) escribo en el puerto PORTB = 0xFFFF y tanto en el simulador como debugando el circuito me sale "10001111 1111111b" quando realmente le pido un "FF FF".

Tambien he anulado las funciones RPn de todos los pins del puerto B.
Estoy desesperado. Era una aplicacion "relativamente fàcil" con un LCD y se esta convirtiendo en la pesadilla de mis noches.

Tienen alguna idea de que me esta pasando? Estoy un poco desesperado. Si quieren les paso el codigo.

Por cierto es un 24FJ64GA002 de 28 patitas.
 
Hola ruxibikecron yo tambien estoy empezando con ese micro y me encontré el mismo problema, incluso en el foro de microchip no me supieron resnponder, de todas formas si me di cuenta que hay diferencia entre el simulador (mplab) y despues en depurarlo, te lo comento pues aunque dices que depurando el circuito no funciona a mi en concreto los mismos bits que marcas en el simulador (bits- 12, 13 y 14) estan a 0 cuando funcionan los leds perfectamente en el circuito, por tanto creo que es un bug en el simulador, ahora yo al final de dar 200 vueltas a todo (datasheet etc) dejé esta configuración que si me configura la salida digital:

_CONFIG2(FNOSC_FRCDIV)
_CONFIG1(JTAGEN_OFF&BKBUG_OFF&FWDTEN_OFF )

CLKDIVbits.RCDIV0=1; // tiempo de instrucción 4µs
CLKDIVbits.RCDIV1=1; // para el oscilador interno
CLKDIVbits.RCDIV2=0;
PORTB=0;
AD1PCFG = 0xFFFF; // todo digital
ODCB=0; // salidas de colector abierto cerrada
TRISB=0; // todo salida
LATB=0XFFFF; // todo a nivel alto

Como te he comentado antes en el simulador no funciona pero en la placa si (al menos a mi), fijate en el detalle que en la palabra de configuración de anula el JTAG.
Un saludo.
 
Saludos. Hace un tiempo yo tambien considere hacer una implementacion similar con un dsPIC30 y una LCD en el compilador de C de CCS. Y encontre algo que quiza este relacionado con su problema.

Tras de dar una cantidad interminable de vueltas encontre que el error no estaba en mi, y que realmente el PIC se negaba a lanzar los datos que yo queria por el puerto B, sin importar lo que hiciera. La verdadera causa, para mi sorpresa, era que el compilador de C estaba generando los opcodes incorrectos para el MCU. Simplemente quede impresionado: Encontre un error en el compilador!

Basicamente el error se trataba de que los opcodes contenian la direccion de puerto B que no eran las correctas (estaba desplazado como por 2 o 3 localidades), y que, a causa de ello, el puerto era practicamente imposible de usar con esa version del compilador.

Siempre pense que era un bug, y que en la proxima version estara resuelto, pero en vista que queria hacerlo de todas formas, cambie de plataforma y me cambie a un PIC menor para hacer lo mismo, obteniendo resultados favorables.

Su problema pudiera o no estar relacionado, pues los PIC24 y dsPIC30 son parientes cercanos. Aunque eso no es necesariamente cierto y solo sea un "error de dedo" por parte de los creadores del CCS para ese unico modelo en particular.

A lo mejor sirva de algo mi comentario. Quien quita ^_^
Saludos.
 
Hola a todos,

en alta frecuencia el uso correcto de los registros es indispensable

pero de todo modo también en baja frecuencia el uso correcto de un puerto es utilizar su latch

si que si quieres leer su valor deberías utilizar la sentencia PORT y si quieres escribir LAT....

cambia tus PORTxBITS por LATxBITS y veras como podrás utilizar todo tu registro pin por pin.

espero te sirva.

Saludos.
 
Hola a todos!

Yo he estado trabajando con PIC24, me ha dado problemas pero he logrado bastante. Si quieren trabajar con I/O digitales hay que escribir lo siguiente:

AD1PCFG = 0xFFFF; //puerto digital
AD1CON1 = 0x0000; //Deshabilita ADC
TRISB = 0x0000; // puerto B como salida ó TRISB = 0xFFFF si son entradas

También se puede escribir al gun bit en especifico TRISBbits.RBx = 1 ó 0;(igual para el puerto A) Yo uso el MPLAB.
 
hey que onda, si bien es cierto que est post ya es viejo, espero que mi respuesta sea de ayuda... yo tengo una libreria para utilizar una pantalla lcd 16x2 con el pic24 en mplab con el compilador C30. si la quieren contesten este mensaje

;)
 
Última edición:
Atrás
Arriba