Autor Tema: Compatibilidad ensamblador entre familias de PIC  (Leído 8419 veces)

0 Usuarios y 3 Visitantes están viendo este tema.

Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3520
    • Pinballsp
Re: Compatibilidad ensamblador entre familias de PIC
« Respuesta #30 en: 27 de Mayo de 2015, 23:21:35 »
.

Puede que la simulación me sirva para probar algunas cosillas, que no dependen de las señales externas que entran por los puertos, como por ejemplo la rutina inicial que lee la flash y graba a una RAM externa, si puedo tocar a mano el estado de algunos puertos para simular la configuración de unos jumpers.

He estado jugando un poco con la simulación, y no está mal, puede que me sea útil. Ahora me va a tocar leerme bien el manual del micro y algún manual de referencia de asembler, porque hace mil años que no lo toco, recuerdo cosas, pero la mitad me suenan a chino. Lo que si recuerdo es el famoso registro W, que vale para todo, o actua de intermediario en todas las operaciones.

El problema será como hayan cosas muy diferentes entre el PIC18F4620 y el que quiero usar para migrar, que sería el PIC18F67K22 o K90. Espero que en ese caso los errores salgan en tiempo de compilación, porque sino si que puede ser complicado.


Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3520
    • Pinballsp
Re: Compatibilidad ensamblador entre familias de PIC
« Respuesta #31 en: 28 de Mayo de 2015, 12:48:03 »
.

Sigo con los inventos.
He intentado compilar el programa para un PIC18F46K20, tiene la ventaja sobre el origignal PIC18F4620, que el oscilador puede rodar más rápido, así podré poner un cuarzo de 3Mhz, que multiplicado x4 y otra vez x4, me da 48Mhz de señal de reloj que si admite el 46K20.

Cambio en el fuente el #include "p18f4620.inc"  por #include "p18f46k20.inc", le doy a compilar y me da 3 errores, sobre estos 3 parámetros de la configuración, identifico el del oscilador y el del watchdog

   CONFIG OSC      = HSPLL
   CONFIG BORV      = 3
   CONFIG WDT         = OFF


Edito los archivos p18f4620.inc y p18f46k20.inc, y me encuentro que OSC lo cambian por FOSC, y WDT por WDTEN, ya son ganas de tocar los huevos, no podían haber dejado los nombres iguales, bueno los cambio y compilo ya sin los errores del oscilador y el watchdog.

Lo que desconozco por el momento es para que sirve BORV y que valor debo de poner, leyendo el contenido de p18f46k20.inc, me encuentro con esto, entiendo que en vez de 3, debo de poner 30, 27, 22 o 18, pero no se aún cual debo de elegir y porque

;   Brown Out Reset Voltage bits:
;     BORV = 30            VBOR set to 3.0 V nominal
;     BORV = 27            VBOR set to 2.7 V nominal
;     BORV = 22            VBOR set to 2.2 V nominal
;     BORV = 18            VBOR set to 1.8 V nominal



En el INC del PIC18F4620, ponía esto, y en el fuente está seleccionado a 3:

;   Brown Out Reset Voltage bits:
;     BORV = 0             Maximum setting
;     BORV = 1             
;     BORV = 2             
;     BORV = 3             Minimum setting



Sigo con el tema, a ver si consigo migrar el fuente del original PIC18F4620, a un PIC18 con más pines y más señal de reloj, de momento solo tengo por aquí un PIC18F46K20 para hacer pruebas, con este solo resolvería el problema de la señal de reloj, para poder trabajar con una señal de reloj más alta, imprescindible para poder emular al procesador CDP1802 en la placa original que lleva un cuarzo de 2.95Mhz.
« Última modificación: 28 de Mayo de 2015, 12:51:09 por planeta9999 »

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Compatibilidad ensamblador entre familias de PIC
« Respuesta #32 en: 28 de Mayo de 2015, 14:00:32 »
El Brown Out es cuando por si algun motivo la tension de alimentacion baja mas del umbral que le das por un tiempo minimo (200us), por ejemplo 2.7V este ejecuta un Reset interno al PIC. El valor que vos creas necesario xD

Mientras que el 18f4620 eso no lo tiene, sino que no es "programable", solo revisando la parte de caracteristicas electricas aparecen los valores

Citar
BOREN1:BOREN0: Brown-out Reset Enable bits(2)
11 = Brown-out Reset enabled in hardware only (SBOREN is disabled)  (2.1V)
10 = Brown-out Reset enabled in hardware only and disabled in Sleep mode (SBOREN is disabled) (2.79V)
01 = Brown-out Reset enabled and controlled by software (SBOREN is enabled) (4.33V)
00 = Brown-out Reset disabled in hardware and software (4.59V)


Mientras que el 18F46K20 si ya ademas de las opciones de arriba podes elegir el voltaje

Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3520
    • Pinballsp
Re: Compatibilidad ensamblador entre familias de PIC
« Respuesta #33 en: 28 de Mayo de 2015, 15:14:16 »
.

Ok, gracias, ya entiendo, lo dejaré programado a 3 voltios.

Ahora lo que no me deja es hacer DEBUG, ¿ puede que sea porque el programa está usando todos los puertos, incluidos MCLR, y los puertos que llevan asignados PGC y PGD ?. Creo que PGC y PGD son necesarios para hacer Debug, y si el programa los utiliza como puertos RB7 y RB6, supongo que no será posible, MCLR no se si es imprescindible para el Debug



Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Compatibilidad ensamblador entre familias de PIC
« Respuesta #34 en: 28 de Mayo de 2015, 15:25:52 »
Yo estoy igual que vos de perdido con el debug, jamas lo hice en un PIC. Pero si, deberia tener un camino para hacerlo y creo que son los pines que vos mismo estas nombrando.

Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3520
    • Pinballsp
Re: Compatibilidad ensamblador entre familias de PIC
« Respuesta #35 en: 28 de Mayo de 2015, 18:20:16 »
.

Le preguntaré al autor del software a ver si sabe algo, sino trataré de migrar el programa a un PIC con más pines y dejaré PGC, PGD y MCLR libres para hacer debug y programar con ICSP, porque el Debug si que lo necesito para ver que hace el programa cuando vaya añadiendo cosas, sino es ir a ciegas.

Yo creo que no será muy complicado migrar el código a un PIC18 con más pines, desconozco si el PIC18F67k22 tiene muchos más registros y si eso supone tener que hacer muchos cambios al fuente, o se mantiene la compatibilidad, me refiero al programa en tiempo de ejecución, porque en tiempo de compilación veo los errores y los puedo corregir, pero si compila bien y al rodar el programa empieza a hacer cosas raras, si que se puede complicar, sobre todo sin debug.

Ahora quiero ver como meto las roms dentro del PIC, si las paso usando el RS232 que tiene implementado el diseño original, si las meto en tablas en el fuente, o si grabo primero el HEX original, y luego grabo las ROM sin borrar la programación inicial, eso lo he hecho cuando traté el tema del bootloader.
« Última modificación: 28 de Mayo de 2015, 18:23:08 por planeta9999 »

Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3520
    • Pinballsp
Re: Compatibilidad ensamblador entre familias de PIC
« Respuesta #36 en: 28 de Mayo de 2015, 22:25:31 »
.


El autor me ha respondido que él no ha hecho debug por hardware, ha empleado simulador y unos plugins que ha programado él mismo, ahora entiendo que no haya dejado libres PGC y PGD, que pienso son imprescindibles para hacer debug. Yo desde luego que prefiero el debug por hardware para probar cualquier diseño, no hay nada mejor y más fiable.

No importa, voy a migrarlo todo a un PIC18F67K22 o K90, paso de 40 pines a 64 pines y reloj de 40Mhz a 64Mhz, con eso ya puedo emular el CDP1802 como lo necesito, y habilitar el debug por hardware.

Como el 67K22 es TQFP, voy a diseñar la placa, aún a riesgo que de no funcione, porque es barata en los chinos y me resultará mucho más cómodo que andar con inventos raros llenos de cables.

El esquema ya lo tengo casi acabado, solo necesito cambiar unos CMOS 4013 y 4020 por chips TTL 74xx, porque el esquema original es todo compatible CMOS.

A veremos si me aclaro con el ensamblador, sobre todo con el tema de meter las rom en tablas en el fuente. Para monitorizar las señales de acceso a la RAM externa utilizaré el analizador lógico. Lo único malo es que pensaba que los PIC18 eran más baratos, juer si cuestan lo mismo que un PIC32, me sale más barato comprar el procesador original CDP1802 que emularlo en un PIC18, aunque emularlo tiene la ventaja de no tener que hacer pedidos a Estados Unidos, y no quedarme colgado el día en que se agoten los stocks de ese procesador prehistórico de los años 80.

Muy entretenido el ensamblador, pero es un auténtico tostón cuando has programado en C.


Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Compatibilidad ensamblador entre familias de PIC
« Respuesta #37 en: 29 de Mayo de 2015, 04:06:26 »

Muy entretenido el ensamblador, pero es un auténtico tostón cuando has programado en C.


Si es la desventaja que tiene. A mi me encanta el ASM, tambien me parece divertido, pero si me pongo a pensar en si alguien necesita ASM y ahi se me termino la emocion xD.. Todo lo haces con C y listo, no es suficientemente rapido? Usas otro micro mas rapido y en C, es mas barato que hacerlo en ASM y romperse la cabeza, ademas portable ( o portable con minimos cambios).

Y bueno, cualquier cosa que pueda ser de ayuda, por aca ando.

Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3520
    • Pinballsp
Re: Compatibilidad ensamblador entre familias de PIC
« Respuesta #38 en: 02 de Junio de 2015, 19:58:11 »
.

Me llegaron las muestras de Microchip, de todos los que he recibido voy a optar por usar el PIC18F67K90 en TQFP64, con 128K de flash y reloj a 64Mhz, duplico la flash y subo el reloj de 40 a 64Mhz, para poder emular el CD1802 a la señal de reloj original.

Va a ser entretenido esto del ensamblador, creo que si no hay diferencias en el juego de instrucciones y en los registros, no será nada dificil, lo único que me han parecido bastante caros estos PIC18. Va a quedar un plaquita muy maja para reemplazar a la original de los años 80 que está llena de chips raros que hace años que no se fabrican.

Y muy interesante lo de emular un procesador viejo usado un microcontrolador, a ver si del fuente aprendo algo sobre esto de la emulación. He visto por ahí que alguien ha emulado un Z80 con un PIC32, me interesa.
« Última modificación: 02 de Junio de 2015, 20:03:47 por planeta9999 »


 

anything