Autor Tema: Ayuda para migrar PIC16F876A hacia PIC16F886  (Leído 1705 veces)

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

Desconectado vdiazg

  • PIC12
  • **
  • Mensajes: 68
Ayuda para migrar PIC16F876A hacia PIC16F886
« en: 25 de Julio de 2013, 02:18:42 »
Amigos, estoy hace 2 dias con este problema.
Tengo un proyecto finalizado de telecontrol GSM con un PIC16F876A, funciona de maravilla, usa un SIM900 y una que otra cosa mas, la unica caracteristica es que todo el circuito funciona con 4V, pero va de maravilla, inicialmente el proyecto empezo con un PIC16F648A pero por cuestiones de aumento de funciones tuve que migrarlo al F876A, pero resulta que tengo que entregar un pequeño lote de este proyecto, y me doy con la sorpresa que se agotaron los F876A, asi que decidi migrarlo al F886, pero resulta que ahora no funciona, el detalle que me llama la atencion es que pareciera que funcionara mas lento, le puse un led de parpadeo que deberia de parpadear cada 1/2 seg, pero parece que ahora lo hace cada 3 segundos, me fije la configuracion del oscilador interno (con la palabra de configuracion) pero segun mis conocimientos pareciera que estuviera bien; el cristal que uso es de 20MHz, no sera que ese F886 no funciona con ese valor, o quizas ya no opera a 20MHz con 4V.
Todo el circuito opera con 4V por el SIM900 que requiere 4V, les pongo la parte inicial del codigo, quizas esta mal configurado, tambien le puse el Brown out reset a 2.1V para que no haya problema con 4V, pero sigue igual. O quizas tengo que ponerle alguna configuracion a la fuerza.
Espero que alguien logre darme luces. Muchas gracias.

Código: [Seleccionar]
#define pic_microchip 1 // si pic_micro=0 usa PIC16F876A
// si pic_micro=1 usa PIC16F886

#if pic_microchip==0
#include <16f876A.h> //pic a utilizar
#device *=16
#fuses HS,NOWDT,PROTECT,PUT,NOLVP,NOBROWNOUT //ordenes para el programador
#use delay (clock=20000000,RESTART_WDT)
#endif

#if pic_microchip==1
#include <16f886.h> //pic a utilizar
#device *=16
#fuses HS,NOWDT,PROTECT,PUT,NOLVP,NOBROWNOUT,MCLR,BORV21 //ordenes para el programador
#use delay (clock=20000000)
#endif

#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)

#include <stdlib.h>
#include <string.h>
#use fast_io(a)
#use fast_io(b)
#use fast_io(c)
#zero_ram        //limpia la memoria de datos de los microcontroladores pic

el define de pic_microchip que hago es para tener las 2 versiones en un solo codigo.
por alli lei una vez que dentro del #use delay aparte de clock habia que ponerle crystal o algo asi?

Uso el CCS v 4.114
quiero construir un "Condensador de flujos"

Desconectado vdiazg

  • PIC12
  • **
  • Mensajes: 68
Re: Ayuda para migrar PIC16F876A hacia PIC16F886
« Respuesta #1 en: 25 de Julio de 2013, 03:03:16 »
vaya que alivio, sali al parque a fumarme un porrito y creo que vi la luz  :-/, les dejo la solucion para cualquiera que a futuro tenga el mismo problema.

revise paso a paso la palabra de configuracion y le aumente estos 2 nuevos parametros.

NOIESO  y  NOFCMEN

Código: [Seleccionar]
#fuses HS,NOWDT,PROTECT,PUT,NOLVP,NOBROWNOUT,MCLR,BORV21,NOIESO,NOFCMEN
Es decir le puse:
IESO: Internal External Switch Over Mode   (DISABLED)
FCMEN: Monitor Clock Fail-safe         (DISABLED)

Segun creo entender el FCMEN hace que el pic continue su operacion con el oscilador interno (4Mhz posiblemente) cuando detecta falla o  no sincronismo en el Cristal externo (no se porque podria fallar un cristal si es nuevo), por eso el led cursor que le puse oscilaba casi 5 veces mas lento; hize todas las pruebas que mi proyecto tiene (temporizaciones y comunicacion serial) y no dio falla alguna, asi que de ahora en adelante siempre deshabilitare esos fuses cuando use un cristal externo.
Si alguien con mas entendimiento del tema pueda dar una mejor explicacion de mi caso, de paso le sirve a todo el foro.
Gracias y hasta la proxima  ((:-))
quiero construir un "Condensador de flujos"