Autor Tema: Problema programando el PIC12F629  (Leído 207 veces)

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

Desconectado javiscrip

  • PIC10
  • *
  • Mensajes: 2
Problema programando el PIC12F629
« en: 11 de Mayo de 2019, 20:56:18 »
Hola, soy aficionado en hacer sencillos projectos con estos pequeños microcontoladores y me he encontrado con un problema que no consigo solucionar. Ya me rindo despues de hacer cientos de pruebas, es el motivo de mi consulta por si me podeis ayudar.
 
Os explico:
Estoy programando el pic12F629 en ensamblador a traves del MPLAB X IDE v2.00 y escribiendolo con el PicKit2 con su aplicacion original por el puerto ICSP conectado a una placa entrenadora donde se encuentra pinchado el PIC.
Pues todo va bien mientras mi codigo no supere la posicion 107h del mapa de memoria de programa del PIC (mirado por la aplicacion PicKit2). Cuando esto ocurre el PIC no hace lo previsto en el programa despues de grabarlo.

 En este PIC se puede utilizar hasta la posicion 3FFh de la memoria de programa segun el datasheet, en mi caso solo estoy utilizando la cuarta parte del mapa de memoria y no puedo pasar de ahi. Ya he probado varios PIC por si estuvieran defectuosos y  tambien otro programador (WinPic800) por si acaso, pero persiste el fallo.

Gracias por adelantado a quien me pueda ayudar. Un Saludo


« Última modificación: 11 de Mayo de 2019, 21:47:06 por javiscrip »

Desconectado elreypic2

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 989
Re:Problema programando el PIC12F629
« Respuesta #1 en: 12 de Mayo de 2019, 00:23:29 »
Que tal javascrip,

El problema que mencionas es muy extraño. Ya que al principio pensé que sería lo de los bancos de memoria de programa (Ojo, no confundir con los bancos de memoria RAM). Los microcontroladores PIC de esta generación (de 4K o más)tienen digamos el detalle de bancos en la memoria de programa. Y cada banco es cada 7FF, pero en el caso del PIC12F629 no tiene ese problema ya que la dirección máxima como bien mencionas es de 3FF (1024). Si te es posible pudieras describir tu proyecto, subir algún esquemático y por supuesto el código en cuestión. De esta manera puedo simularlo paso a paso y ver dónde pudiera estar el problema.

elreypic.

Desconectado javiscrip

  • PIC10
  • *
  • Mensajes: 2
Re:Problema programando el PIC12F629
« Respuesta #2 en: 12 de Mayo de 2019, 12:59:36 »
Hola, gracias por tu interes, ya lo he solucionado. Pongo aqui la solucion por si a alguien le pasa lo mismo en alguna ocasion.

El problema estaba en lo siguiente:

Mi programa trabaja con una tabla y en cuanto se ampliaba el numero de lineas de programa en mas de 256 posiciones, mi programa iba a buscar la tabla con un valor del registro PCLATH del contador de programa distinto al de la direccion donde se encuentra ahora (por encima de 256) y hacia un salto descontrolado. El PCL se desbordaba sin que el PCLATH se incrementaba convenientemente en el salto indexado. Encontre la solucion consultando el documento AN556 de Microchip.

Cito un ejemplo del mismo documento y muy paracido a mi caso. Por lo visto hay que actualizar el PCLATH antes de que el PCL vaya a saltar a la tabla para rescatar el dato en cuestion.

    org 0x80
    movlw    HIGH Table
    movwf    PCLATH
    movlw   offset
    call       Table
.
.
.
     org      0x320
Table:
     addwf     PCL,F
     retlw ’A’
     retlw ’B’
.
.
.
Gracias de todas formas.
« Última modificación: 12 de Mayo de 2019, 13:21:39 por javiscrip »

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 7236
Re:Problema programando el PIC12F629
« Respuesta #3 en: 12 de Mayo de 2019, 14:44:16 »
Citar
Cito un ejemplo del mismo documento y muy paracido a mi caso. Por lo visto hay que actualizar el PCLATH antes de que el PCL vaya a saltar a la tabla para rescatar el dato en cuestion.

El GOTO, el CALL tambien usan el PCLATH, aunque esto no te afecte debido a que el maximo de memoria esta contenido a 2 bits.
Pero un salto computado como el de la tabla solo puede cargar un literal de 8 bits. Por lo tanto no podes redireccionar todo, y usa el PCLATH entero.

Explicado en la pagina 17 del datasheet:
https://ww1.microchip.com/downloads/en/devicedoc/41190c.pdf

(19 si le haces caso a las hojas del pdf )


 

anything