Autor Tema: Me estoy volviendo burro !!!!! jajajajaja(Solucionado..si soy burro!!)  (Leído 4242 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado marvicdigital

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 311
Nooo puedo creer que nada me esté funcionando con un PIC18F2550, un teclado y un display 2x16 ....me regalaron el PIC y bueno ahora estoy parado, pelado y sin ilusiones :( , luego de ver que el C18 y la librería LCD_Generic de nuestro amigo Suky no dio el resultado esperado con el MPLabX en linux ,decidí instalarme el win XP para probar en CCS a ver que era lo que pasaba, vamos por ser más fácil y resulta que no me da ...reviso el ciruito de pe a pa, cambio hasta el ´PIC y simplemente no da display, si lo pongo hacer un blink con el led del LCD, funciona bien..pero si inicio el LCd se queda ahi en esa rutina, no sigue cuando se ejecuta en el circuito..por eso adjunto el código para ver en que  pueden ayudar a este burrito, que parece que se me hubiera borrado todo :)

Código: [Seleccionar]
#include <main.h>
#define ENABLE_PIN PIN_C0
#define RS_PIN PIN_A4
#define RW_PIN PIN_A5
#define Data4 PIN_A0
#define Data5 PIN_A1
#define Data6 PIN_A2
#define Data7 PIN_A3
#include <lcd.c>

#define LedLCDon output_high(PIN_C1)
#define LedLCDoff output_low(PIN_C1)

void main()
{
   setup_adc_ports(NO_ANALOGS);
   LedLCDon;
   lcd_init();    //acá se pega la ejecución
   delay_ms(6);
   lcd_putc("\fReady...\n");

   while(TRUE){    // Para probar blink con el LEd del LCD cuando comento la linea de lcdInit
  
   LedLCDoff;
   delay_ms(200);
   LedLCDon;
   delay_ms(200);

}
}
***************************************** main.h**********

#include <18F2550.h>
#device adc=16

#FUSES NOWDT                    //No Watch Dog Timer
//#FUSES WDT128                   //Watch Dog Timer uses 1:128 Postscale
#FUSES PLL1                     //No PLL PreScaler
#FUSES CPUDIV1                  //No System Clock Postscaler
#FUSES NOUSBDIV                 //USB clock source comes from primary oscillator
#FUSES HS                       //High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD)
#FUSES NOIESO                   //Internal External Switch Over mode disabled
#FUSES PUT                      //Power Up Timer
#FUSES NOVREGEN                 //USB voltage regulator disabled
#FUSES NOPBADEN                 //PORTB pins are configured as digital I/O on RESET
#FUSES NOLPT1OSC                //Timer1 configured for higher power operation
#FUSES NOMCLR                   //Master Clear pin used for I/O
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOXINST                  //Extended set extension and Indexed Addressing mode disabled (Legacy mode)

#use delay(clock=20000000)


*** Declaraciones de los pines para el LCD




Gracias por la ayuda..la versión es la 4.120 y instalé solo el ide y el pcwhdupd..hay que instalar algo más?..

Saludos

« Última modificación: 06 de Agosto de 2011, 20:42:29 por marvicdigital »

Desconectado QIQE

  • PIC18
  • ****
  • Mensajes: 335
Re: Me estoy volviendo burro !!!!! jajajajaja
« Respuesta #1 en: 06 de Agosto de 2011, 20:05:03 »
Por partes, has podido simular el programa en proteus por ejemplo??
el LCD estas seguro de que funciona??
tienes bien ajustado el contraste del lcd??

supongo que son cosas que ya has podido chequear tu pero lo digo por empezar por algun sitio
Muchas gracias por vuestro tiempo.

Saludos desde valencia!!!

Desconectado marvicdigital

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 311
Re: Me estoy volviendo burro !!!!! jajajajaja
« Respuesta #2 en: 06 de Agosto de 2011, 20:11:10 »
Gracias Qiqe, si ya he revisado conexiones, no simulo en software, soy de la vieja guardia; o circuito armado o protoboard.... 0.0 simuladores, no confío en ellos...Voy a descartar el LCD, por si este salió malo será lo único...osea que según tu revisión del código, este está bien? está bien configurado los fuses, y los puertos del PIC18F2550?..te agradezco mucho la ayuda.

Saludos

PD: aclaro quer al poner lcd_Init el programa se queda ahí en esa rutina,a  pesar de que compila todo muy bien, y como han dicho por ahí que el CCs es muy famoso por ser fácil y lleno de bugs, no valla a ser que sea eso o me falte algun programa demás..

Otra cosa más, el pin RW lo puse a tierra, para que la rutina no tenga que leer el LCd, si es que lo hace a ver si es por eso que al  ejecutar LCD_Init no se bloquea y conseguí los mismos resultados.

Saludos
« Última modificación: 06 de Agosto de 2011, 20:20:20 por marvicdigital »

Desconectado ema

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1078
Re: Me estoy volviendo burro !!!!! jajajajaja
« Respuesta #3 en: 06 de Agosto de 2011, 20:33:15 »
Hola Marvic.

Si estás utilizando la librería que CCS trae, el problema está en que está pensada para el puerto D.

Fijate que dentro de la librería está el siguiente texto.
Código: [Seleccionar]
// As defined in the following structure the pin connection is as follows:
//     D0  enable
//     D1  rs
//     D2  rw
//     D4  D4
//     D5  D5
//     D6  D6
//     D7  D7
//
//   LCD pins D0-D3 are not used and PIC D3 is not used.
Tendrías que modificar la librería para que te sirva en el puerto A.

Además el RW tiene que estar conectado al micro para que este pueda chequear el estado del LCD.

Saludos

Desconectado marvicdigital

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 311
Re: Me estoy volviendo burro !!!!! jajajajaja
« Respuesta #4 en: 06 de Agosto de 2011, 20:41:28 »
Hola Marvic.

Si estás utilizando la librería que CCS trae, el problema está en que está pensada para el puerto D.

Fijate que dentro de la librería está el siguiente texto.
Código: [Seleccionar]
// As defined in the following structure the pin connection is as follows:
//     D0  enable
//     D1  rs
//     D2  rw
//     D4  D4
//     D5  D5
//     D6  D6
//     D7  D7
//
//   LCD pins D0-D3 are not used and PIC D3 is not used.
Tendrías que modificar la librería para que te sirva en el puerto A.

Además el RW tiene que estar conectado al micro para que este pueda chequear el estado del LCD.

Saludos

Gracias ema, por tu ayuda...pero encontré el problema, y es un bug de esta versión..les cuento que fue lo que pasó..
Como mi experiencia con CCS es nula, pues decidí aprovechar el PICwizard que viene con el programa, y con él decidí usar el LCD y claro el declara los pines a usar con el LCD diferente a como están en al librería por eso no daba :)  :D  el PICWizard declara:

Código: [Seleccionar]
#define Data4 PIN_A0
#define Data5 PIN_A1
#define Data6 PIN_A2
#define Data7 PIN_A3

Cuando debe ser

Código: [Seleccionar]
#define LCD_ENABLE_PIN PIN_C0
#define LCD_RS_PIN PIN_A4
#define LCD_RW_PIN PIN_A5
#define LCD_DATA4 PIN_A0
#define LCD_DATA5 PIN_A1
#define LCD_DATA6 PIN_A2
#define LCD_DATA7 PIN_A3
#include <lcd.c>

Por Dios, otro que cae en los bugs de este programa, ahora si me puedo reir más...si me estoy volviendo burro..:D

Saludos y muchas gracias por su ayuda y tiempo.



Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5490
    • Electrónica Didacta
Re: Me estoy volviendo burro !!!!! jajajajaja(Solucionado..si soy burro!!)
« Respuesta #5 en: 06 de Agosto de 2011, 21:24:04 »
Hola

Acabo de probar el wizard del v4.120 y esto es lo que arroja de código

Código: [Seleccionar]
#define ENABLE_PIN A2
#define RS_PIN A4
#define RW_PIN B3
#define Data4 A5
#define Data5 C7
#define Data6 C2
#define Data7 A0
#include <lcd.c>

¿estas seguro que es un bug?

La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado RALF2

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2062
Re: Me estoy volviendo burro !!!!! jajajajaja(Solucionado..si soy burro!!)
« Respuesta #6 en: 06 de Agosto de 2011, 22:18:36 »
Que tal marvicdigital!
               
Si tal como comentas los pines desde el wizard dan errores de configuracion, es mejor cargarlos a mano y asi uno se evita esos problemillas que lo ponen luego a uno loco  :mrgreen:

Saludos
« Última modificación: 06 de Agosto de 2011, 22:22:08 por RALF2 »

Desconectado marvicdigital

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 311
Re: Me estoy volviendo burro !!!!! jajajajaja(Solucionado..si soy burro!!)
« Respuesta #7 en: 07 de Agosto de 2011, 00:14:58 »
Hola

Acabo de probar el wizard del v4.120 y esto es lo que arroja de código

Código: [Seleccionar]
#define ENABLE_PIN A2
#define RS_PIN A4
#define RW_PIN B3
#define Data4 A5
#define Data5 C7
#define Data6 C2
#define Data7 A0
#include <lcd.c>

¿estas seguro que es un bug?



Pues si, por que en la librería lcd.c dice lo siguiente:

Código: [Seleccionar]
Example of pin access:                                               ////
////     #define LCD_ENABLE_PIN  PIN_E0                                    ////
////     #define LCD_RS_PIN      PIN_E1                                    ////
////     #define LCD_RW_PIN      PIN_E2                                    ////
////     #define LCD_DATA4       PIN_D4                                    ////
////     #define LCD_DATA5       PIN_D5                                    ////
////     #define LCD_DATA6       PIN_D6                                    ////
////     #define LCD_DATA7       PIN_D7     

Y el wizard te hace otra cosa  :5] asi que hay que andar con mucho cuidado con el wizard..
Definitivamente este CCS te hace la vida muy fácil cuando no se presentan estos bugs; aunque  no es lo que busco  en C para microcontroladores, pero me ayudará un poco para hacer algunos trabajos relámpagos que me han pedido y que los veía algo más dificiles en assembler y en SDCC ..aclaro difíciles en cuanto a tiempo de desarrollo...como ejemplo me pidieron un medidor de presión en bares, y me demoré 5 horas en hacerlo completo, diagrama, impreso y programa en CCS, algo que no creí que fuera posible ...pero como digo, la idea es aprender la arquitectura interna de estos 18F, y eso haré con cada ejemplo que haga.
Gracias

saludos

Desconectado miquel

  • PIC12
  • **
  • Mensajes: 69
Re: Me estoy volviendo burro !!!!! jajajajaja(Solucionado..si soy burro!!)
« Respuesta #8 en: 10 de Agosto de 2011, 19:21:47 »
Prueba a utilizar el puerto B:

#include <main.h>

#define use_portb_lcd TRUE
#include <Lcd.c>


Asi no hay que modificar la libreria Lcd.c

Saludos


 

anything