TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: ulysse en 09 de Marzo de 2005, 19:22:00
-
Hola, en todas las aplicaciones que he realizado he usado pic16f876 o pic16f877, los cuales sé programar perfectamente con el icprog, pero necesito usar ahora un pic18F452 o el 18F458, ya que estoy teniendo problemas de memoria de codigo y estos contienen el doble que los 16, además de contar con algunas cosillas más, por lo que es interesante aprender a manejarlos. Mi problema es que no sé programarlos con el icprog, la pantalla de configuración cambia por completo del modelo 16 al 18, es totalmente distinta y no se que colocar en cada una de las casillas de config que vienen ( que por defecto están a FFFF ), si lo dejo así me da error tanto en el 452 como en el 458.
Saludos.
-
Es bastante embarazoso que las palabras de configuracion de los 18F esten en forma hexadecimal en ICPROG. Es muy logico que con FFFFFF no te programe, porque estas pasando de alto muchos fuses importantes.
Debes de invocar los fuses en el programa ASM (o equivalente) mismo. No tengo mucha idea de fuses en asm, por lo que no te puedo dar un ejemplo.
salu2
-
No entendí muy bien del todo lo que me dijiste. También decirte que yo programo en C y no en asm.
Saludos.
-
Bien, perfecto. Yo tambien programo en CCS. Y ultimamente no hago programas mas que para el 18F458. Yo lo configuro asi:
#include <18f458.h>
#fuses HS,NOWDT
#use delay(clock=4000000)
salu2
-
Hola Ulisse, haber si te puedo ayudar.
Yo estoy trabajando en un proyecto con el 18F452, y también uso el compilador CCS,para escribir codigo en C.
Ten cuidado que el 18F es un poco tiquismiquis, yo al principio tuve problemas con él debido a los FUSES y a los tiempos para el ADC, además a veces, sin razón aparente, me daba errores al cargar el fichero .coff. Pero por lo demás va como la seda.
Si te sirve de ayuda, te pongo la cabecera que uso yo: aunque el programa lo escribo directamente en la ventana del MPLAB 6.5, la cabecera la pillo usando el compilador CCS, que para mí es de lo más intiuitvo y potente que he visto.
El C18 de Microchip no me convence mucho, y segun los miembros del foro falla en algunas ocasiones.
#include <18f452.h>
#include<STDDEF.h> //puedes omitir esta header
#device adc=10
#use delay(clock=8000000)
#fuses NOWDT,HS, NOPROTECT, NOOSCSEN, NOBROWNOUT, NOPUT, NOLVP, NOWRT, NOWRTD, NOWRTB, NOWRTC, NOCPD, NOCPB, NOEBTR, NOEBTRB
#use rs232(baud=19200,xmit=PIN_C6,rcv=PIN_C7,parity=O,bits=8)
Un saludo,
-
He descubierto algo del porqué no me programa pero no lo entiendo del todo.
Me explico: yo intentaba cargar el hex de un programa grande y me daba error en el icprog, probé a hacer un programa de ejemplo, que encendiera y apagara un led, y este si me lo cargaba y funcionaba perfectamente, por lo que el problema no es la configuración de los fuses.
Uso el compilador de hi-tech. Compilo el programa grande, que está probado en un 877 y funciona, y el compilador me da los siguientes datos :
Memory Usage Map:
Program ROM $000000 - $000003 $000004 ( 4) bytes
Program ROM $000006 - $0005F9 $0005F4 ( 1524) bytes
Program ROM $00086A - $00338B $002B22 ( 11042) bytes
$00311A ( 12570) bytes total Program ROM
RAM data $0000F8 - $0000FF $000008 ( 8) bytes
RAM data $0005FB - $0005FF $000005 ( 5) bytes
$00000D ( 13) bytes total RAM data
Near RAM $000000 - $00003C $00003D ( 61) bytes total Near RAM
Near bits $0001E8 - $0001E9 $000002 ( 2) bits total Near bits
ROM data $000004 - $000005 $000002 ( 2) bytes
ROM data $000600 - $000868 $000269 ( 617) bytes
$00026B ( 619) bytes total ROM data
Config Data $300000 - $30000D $00000E ( 14) bytes total Config Data
Program statistics:
Total ROM used 13189 bytes (40.2%)
Total RAM used 75 bytes (4.9%) Near RAM used 62 bytes (48.4%)
Creo que la "ROM data" es la que me está dando problemas, cojo parte del código, lo elimino haciendo que esta disminuya hasta 450 bytes aprox., y el programa me carga bien el archivo .hex en el pic, por lo que el problema está aquí, si esta memoria aumenta no me carga el archivo. En el pic 877 creo que Rom data no salía , y no se que es lo que usa esta memoria.
Saludos.