TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: perry en 23 de Febrero de 2007, 06:57:45

Título: error con mplab
Publicado por: perry en 23 de Febrero de 2007, 06:57:45


Hola!!!

Estoy usando la conexión ICD2 de mplab para programar un pic 18f4550. Consigo comunicarlos pero a la hora de programarlos (como debug) me da el siguiente error que no se como solucionarlo:

ICD0161: Verify failed (MemType = Program, Address = 0x0, Expected Val = 0xEFDB, Val Read = 0xFFFB)

Si alguien sabe a que se debe esto estaría muy agradecido de que me dijese como puedo corregirlo ya que por más que leo la ayuda de mplab no se como hacerlo

muchas gracias por adelantado.
Título: Re: error con mplab
Publicado por: maunix en 23 de Febrero de 2007, 08:53:40
No te esta leyendo/grabando bien. 

Puedes subir un esquema , que ocupe pocos kb o que sea un link a un servidor externo, de tu hardware?

Saludos
Título: Re: error con mplab
Publicado por: ESTECA55 en 23 de Febrero de 2007, 10:19:51
Hola, para debuggerar con el ICD es necesario dejar libres algunos registros y una parte de la memoria de programa. Esto es necesario ya que el ICD incorpora un pequeño código y utiliza unos registros para hacer el debug. Es muy probable que ahí este el problema, busca en el manual del ICD que dice referido a este tema.
Título: Re: error con mplab
Publicado por: ESTECA55 en 23 de Febrero de 2007, 10:26:41
Mira acá encontré lo que “roba” el debug en un 877, no sabría decirte sie n el 18f4550 es lo mismo.

Citar

  El modo hace uso de algunos recursos del procesador. En el caso del PIC16F877A, el ICD2 hace uso de:
   Memoria de Programa: 1F00h – 1FFFh
   Ram: 70h, F0h,170h,1E5h-1F0h
   SP: 2 niveles

Título: Re: error con mplab
Publicado por: maunix en 23 de Febrero de 2007, 13:34:18
Mira acá encontré lo que “roba” el debug en un 877, no sabría decirte sie n el 18f4550 es lo mismo.

Citar

  El modo hace uso de algunos recursos del procesador. En el caso del PIC16F877A, el ICD2 hace uso de:
   Memoria de Programa: 1F00h – 1FFFh
   Ram: 70h, F0h,170h,1E5h-1F0h
   SP: 2 niveles


En todos necesita 'algo' pero ese 'algo' ya está definido en los linker files.

Si uno no trabaja en modo RELOCATABLE entonces no usa el archivo lkr.  He ahí donde hay que prestar 400 veces más atención a estas limitaciones.

Saludos
Título: Re: error con mplab
Publicado por: perry en 26 de Febrero de 2007, 07:20:47
Hola!! muchas gracias por las respuestas.

Estoy programando en mplab con c (con el compilador ccs) y pensaba que al poner los fuses correspondientes para la conexión icd2 ya tenía en cuenta la memoria que usaba, pero si no es así como lo puedo cambiar? os adjunto parte del esquema en un pdf. lo que hace es recibir una serie de pulsos y sacar la frecuencia y el nivel por el lcd

muchas gracias a todos
Título: Re: error con mplab
Publicado por: maunix en 26 de Febrero de 2007, 08:30:23
Hola!! muchas gracias por las respuestas.

Estoy programando en mplab con c (con el compilador ccs) y pensaba que al poner los fuses correspondientes para la conexión icd2 ya tenía en cuenta la memoria que usaba, pero si no es así como lo puedo cambiar? os adjunto parte del esquema en un pdf. lo que hace es recibir una serie de pulsos y sacar la frecuencia y el nivel por el lcd

muchas gracias a todos

perry, te sugiero en cuanto a tu esquema, que pongas un diodo en sentido Vcc Gnd, en serie con la resistencia de 10K.  Esto es para evitar que tu programador derive corriente hacia la fuente Vcc cuando se esté programando.  En este caso estarías quitando corriente del ICD2.

En cuanto al uso de archivos de linker, no se si CSS provee los suyos propios pero supongo podría ser tranquilamente compatible con los que provee microchip porque los recursos que consume son en lugares específicos y conocidos y no donde a uno se le ocurra.

Microchip provee archivos lkr que terminan con una letra i que significa que son para el ICD

Por ejemplo, para un pic 16F877, tendras un 16F877.lkr y un 16F877i.lkr

PD: te sugiero leas atentamente el datasheet del ICD2 antes de usarlo.  Si tienes un ICD2 'casero' bájate los datasheet de Microchip pero no dejes de leerlo porque deberás tenerlo en cuenta.

Los fuses 'debug' de los pics se setean solos cuando tienes un ICD2 original, no se si es idéntico en los no originales pero supongo que sí.

Saludos