TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: narcosystem en 21 de Julio de 2004, 10:54:00
-
hola foreros, a ver si me podeis echar una mano, resulta que me he cambiado del 16f877 a un 18f452, pero resulta que de todos los programas que tenia hechos no me funciona ninguno en el nuevo micro, aunque en teoria es compatible pin a pin con el anterior, ¿es que hay que cambiar alguna cosa a parte del correspondiente #include 18f452? Sobre todo me interesa saber porque no funcionan los timers ni el lcd(este ultimo si que se que lleva unas direcciones distintas para los puertos), si ademas trabajo a la misma frecuencia que antes 20 mhz.
Mushas gracias de antemano
-
como configurastes los fuses??
seguro que ahi esta la solucion.
saludos
-
EO! a mi me esta pasando lo mismo....
Empiezo ahora con el 18f452 y creia que no tendria ningun problema para programarlo teniendo los programas desarrollados para 16f877, pero me encuentro que al cambiar el include, exclusivamente, el programa en el nuevo micro no hace absolutamente nda, comprobando que si se ha cargado observando el mapa de memoria de programa. Los fuses que son?te refieres a los buses?
-
Hola, estos son los fuses:
#fuses HS,NOWDT,NOPROTECT,NOLVP
En los 18 hay muchos mas que en los 16
Saludos
-
Para un programita que tengo en un 18F258 le tengo puestos todos estos:
#fuses HS,NOCPD,NOCPB,NOWDT,NOPUT,NOLVP,NOBROWNOUT,NOWRT,NOSTVREN,NOEBTR,NOEBTRB,NOWRTB,NOWRTC,NOWRTD
Aparte creo recordar que también tengo que desmarcar alguno manualmente cuando programo el pic
-
Puedes utilizar el asistente de PICC y él te ayuda a la correcta configuración del 18F452 o bien puedes utilizar éste encabezado. Lógico, que tienes que editarlo y acomodarlo a tu programa según la necesidad.
#include <18F452.h>
#use delay(clock=20000000)
#fuses NOWDT,WDT128,HS, NOPROTECT, NOOSCSEN, NOBROWNOUT, BORV42, PUT, STVREN, NODEBUG, NOLVP, NOWRT, NOWRTD, NOWRTB, NOWRTC, NOCPD, NOCPB, NOEBTR, NOEBTRB
#use rs232(baud=19200,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8,stream=pc)
#rom int 0xf00000={1}
#ZERO_RAM
#include <stdlib.h>
//#define IRQ_A PIN_B0
//#define IRQ_B PIN_B1
#define READY PIN_C2
#define D_I PIN_D0
#define D_O PIN_D1
#define SCL PIN_D2
#define RESET_CPU_VIDEO PIN_D3
#define CS_A PIN_D4
#define CS_B PIN_D5
#byte INTCON2 =0xFF1
void main()
{
}
-
Hola de nuevo. Parece que no era un error lo de los fuses, con lo que me doy cuenta de que no tengo ni pajolera idea. Que es esto de los fuses?. Creo tyo que no uilice ninguna sentencia con 16f877...Para que sirven?de todas formas icluí esas declaraciones en mi programa y sigo con lo mismo...quizas si alguien me explica para que sireven , pudiera solucionarlo. Muchas gracias y un saludo
-
Para aprender todo acerca de los fusibles de programación visita esta web:
http://usuarios.lycos.es/sfriswolker/pic/ocho/ochodos.htm
Estudia mucho, practica mucho.
-
Si has incluido en tu programa la directiva de los fuses que te han dado los compañeros, pués no seran los fuses.
Porqué no pones el programa y le pegamos un vistazo?
-
Hola. En teoria, la configuracion de los fuses da mas o menos lo mismo.
1. El que tenga los mismo pines no quiere decir que las direcciones de memoria sean las mismas. Has probado con las direcciones de memoria de cada registro de uno y otro pic?? Coge los mapas de memoria y compruebalos.
A lo mejor te llevas una agradable sorpresa. ![Muchas risas Muchas risas]()
2. Mira a ver la configuracion inicial o predeterminada de cada pic. Me refiero a E/S digitales o analogicas, reloj, ... y mira a ver si hay que cambiar algo. Yo empece con el 16F84 y al pasar al 16F873 resulta que muchas cosas no iban. Que eran?? Pues las direcciones de memoria y que los puertos vienen, en el 873, por defecto, como analogicos, no siendo asi en el 84. Y, claro, yo no los cambiaba porque pensaba que eran digitales. Lo daba por hecho.
Un saludo.