Noticias:

Grupo en telegram, del foro de meteorología fácil: https://t.me/meteorologiafacil

Para mas detalles, puedes visitar el siguiente tema http://www.meteorologiafacil.com.ar/foros/index.php?topic=1608.0

Espero que les sea de mucha utilidad.

Menú Principal

Modificaciòn de librerìas

Iniciado por YO, Agosto 30, 2015, 08:20:16 PM

Tema anterior - Siguiente tema

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

YO

Hola amigos!!
Luego de pelearme con el microcontrolador 18f4620 para poder programarlo, realicè algunas pruebas de funcionamiento tanto de manejo de puertos como de comunicaciòn y funcionò de una como reemplazo del querido 16f877a.
Viendo que la cosa venìa bien, decidì desemplovar el display GLCD que habìa dejado de lado por no poder hacerlo arrancar siempre con los dos controladores de la placa o a veces, ni siquiera lo hacìa.
Pensè que mi pantalla funcionaba mal, pero descubrì gracias al 4620 que no era asì.
Los problemas de arranque de la pantalla con el 877 fueron poca cosa en comparaciòn con lo que me pasaba con el 4620.
No solo no arrancaba bien, sinò que escribìa todo recortado  :jeje:
Recorrì la librerìa del micro para ver si configuraba bien los pragma, detallè todos uno por uno y nada.
Revisè todas las conexiones y nada, èste andaba peor que el viejo 877  >:[[
Me ponìa rayas en la pantalla todas entrcortadas cuando le daba orden de llenarla con todos los pixeles activados, y fuè acà donde descubrì el problema  ;idea:
Entrè en la librerìa GLCD_kS_0108 y rompì èsta regla:
CitarAclaración muy importante: Salvo en caso de que indiquemos lo contrario, jamás se modificaran las librerías para hacerlas trabajar. Toda línea de programa que escribiremos, será sobre NUESTRO programa y JAMÁS sobre dichas librerías.
Perdoname David pero no me quedaba otra  :silbando:

La cosa se solucionò cuando entrè en el procedimiento  _accion_glcd_escritura () y modifiquè la lìnea de retardo de 1Us llevandola a 4Us.
En la Funcion _accion_glcd_lectura ()  tambièn modifiquè el retardo, de 2Us lo subi a 6Us
En el procedimiento _envia_puerto  y en la Funcion _lee_puerto()  amplie la cantidad de noop de 2 a 6 veces.

Compilè, grabè y MILAGRO  ¡hurra! ¡hurra! funcionò de diez probè arrancarlo hasta haciendo falso contacto en el enchufe y nunca fallò escribiendo y dibujando todo sin errores  :\ :\ :\ :\
Es evidente que tanto con la librerìa original de Jal como con la Optimizada, èstas pantallas no funcionan bièn por falta de tiempo entre las instrucciones, parece que el micro và màs ràpido que lo que ejecuta la pantalla.
Creo que no es un dato menor y se debe tener en cuenta al querer usar una pantalla Winstar con èstos controladores.
Saludos a todos !!
Sin saber que era imposible El fue y lo hizo

David Met

No hay problema YO.
Eso lo había puesto para que expresar dos cosas, 1ro especificar en donde trabajamos. 2do que si modifican la librería y uno no recuerda que la modificaron, se iban a crear un buen dolor de cabeza.

Me alegro que lo hayas podido solucionar.
Las librerías de JALv2, muchas tienen errores que a mi, me han sacado varios dolores de cabeza, en especial con el USB. Además de los bug, hay que putear con las actualizaciones que, muchas veces, hay que modificar el programa porque empiezan a tirar errores.

Volviendo a tu solución y lo voy a comentar para el público general (porque estoy seguro que los sabes). Al modificar los 1us a 4us, se debe a que el compilador genera el retardo según la frecuencia que has especificado; pero esto puede dar a confusión.
Uno puede pensar que la frecuencia de trabajo, es la del cristal colocado; pero en estos pic de media gama; tiene un multiplicador de frecuencia para que trabajen más rápido y esa, es la frecuencia que hay que tener en cuenta.
Pongo un ejemplo para tu pic:

Citarinclude 18f4620                      -- target PICmicro
--
-- This program assumes that a 20 MHz resonator or crystal
-- is connected to pins OSC1 and OSC2.
-- (unspecified configuration bits may cause a different frequency!)
pragma target OSC INTOSC_NOCLKOUT -- internal oscillator
                                  -- and using PLL
pragma target CLOCK 32_000_000    -- oscillator frequency

En Castellano:

Citarinclude 18f4620                      -- target PICmicro
--
-- Este programa asume un resonador o cristal a 20Mhz
-- conectado a los pines OSC1  OSC2.
-- (¡Sin especificar el bit de configuración puede causar diferentes frecuencias!)
pragma target OSC INTOSC_NOCLKOUT -- oscilador interno
                                  -- y usando PLL
pragma target CLOCK 32_000_000    -- Frecuencia del oscilador

Hay que saber que el pic trabajará con 32Mhz de frecuencia y no los 20Mhz del cristal utilizando el los pines OSC1 y OCS2
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.

YO

Si David, pero recordá que con el 16f877 teníamos el mismo problema de arranque , y ese tenía una sola frecuencia que era la del cristal que usábamos, por otro lado, la librería delay se autoajusta a la frecuencia que le decimos, sinó los tiempos nunca seian los mismos.
Fué poner el 16f877 y nunca más falló, al igual que el 4620.
Sin saber que era imposible El fue y lo hizo

David Met

Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.