Hola.
Tenía muuuuuuuuuuuuuuuuuuuuuuuuuuuchísimo tiempo de no ingresar a estas páginas. Ya termine la carrera así que casi no tengo tiempo de meterme a leer.
Sobre tu pregunta......
¿Lo que te falta de memoria es flash o ram?
Creo leí que utilizabas 18F442. Tiene 16K de flash y 768 de ram (creo). Si eso no te es suficiente pues cambiate a un 452 de 32K con 1536 ram.
Creo (pudiera ser) que tienes algo que también yo tenía. ¿Acaso usas la intrucción de BranchL o BranchH?
¿Tienes muchos registros de memoria activos (ram)?
Yo participé en un programa que se hizo para un sistema de detección de botellas para Nestle (de aquí de Mexicali) en el cual se utilizaban muchos registros Ram y se mandaba llamar a BRANCHs y el programa se quedaba colgado.
Ahora bien, quizá por aqui no es el asunto.
¿Qué usas para programar?
Yo uso el PICSTART PLUS de µicrochip (con MPLAB 7.01). Aquí una vez compilado puedo mover los fusibles de programación en CONFIGURATION BITS.
Tampoco creo que eso sea ya que dices que no tienes memoria asi que probablemente sea antes de compilar.
Lo más recomendable sería que dejaras escrito el programa o (por eso de las piraterías) mencionaras lo que te pone el MicroCode Studio en los errores; con esa información creo se podría encontrar la raíz del problema y quien sabe, quizá hasta puedas usar el 16F877 de 8K de flash.
Sobre lo que se mencionó de los fusibles en la réplica pasada.....
La primera vez que quise programar un 18FXXX tuve problemas pero la persona de Reynolds (
www.rentron.com), me ayudó enormemente. Si no se puede solucionar quizá deberías dirigirte a él.
El problema que yo tenía era que quería prender y apagar led por led del puerto B de un 18F448 pero no podía. Me decía que debía utilizar Mplab assambler o algo asi (fue en Junio del 2004 asi que no recuerdo bien).
Este es el programa original:
DEFINE NO_CLRWDT 1 " Sin perro Guardian
TRISB=0
loop: PORTB.0=1 " Turn on LED connected to PORTB.0
PORTB.0=0 " Turn on LED connected to PORTB.0
PORTB.1=1 " Turn on LED connected to PORTB.0
PORTB.1=0 " Turn on LED connected to PORTB.0
PORTB.2=1 " Turn on LED connected to PORTB.0
PORTB.2=0 " Turn on LED connected to PORTB.0
PORTB.3=1 " Turn on LED connected to PORTB.0
PORTB.3=0 " Turn on LED connected to PORTB.0
PORTB.4=1 " Turn on LED connected to PORTB.0
PORTB.4=0 " Turn on LED connected to PORTB.0
PORTB.5=1 " Turn on LED connected to PORTB.0
PORTB.5=0 " Turn on LED connected to PORTB.0
PORTB.6=1 " Turn on LED connected to PORTB.0
PORTB.6=0 " Turn on LED connected to PORTB.0
PORTB.7=1 " Turn on LED connected to PORTB.0
PORTB.7=0 " Turn on LED connected to PORTB.0
Claro que aquí faltan los tiempos de prendido y apagado pero de todas formas no funciono.
Bruce me contesto asi (en inglés, soy un poco flojo para traducir):
Hi Mario,
> I"m bothering you again for some help.
No bother at all. I"m glad to offer help whenever I can.
MPASMWIN.EXE should be located in C:Program FilesMPLAB IDEMCHIP_Tools
if you accepted the default installation directory. If CodeDesigner Lite can"t find this
it will cause the error. If you"re running MPLAB, and it can"t find MPASMWIN.EXE,
then I would recommend adding the MPLAB directory to your path or reinstalling
MPLAB.
Note: You cannot use the @ DEVICE directive unless you"re using the default PM.EXE
assembler that ships with PBP.
For the 18F series, you have to use MPASMWIN.EXE since the PM.EXE assembler does
not support the 18F series.
To change fuses when using the 18F series, you can either accept the PBP default fuse
settings located in your file named 18F448.INC, or change them like this.
Open the 18F448.INC file in your PBP directory. You will see the "default" fuse settings
like this;
INCLUDE "P18F448.INC" ; MPASM Header
__CONFIG _CONFIG1H, _OSCS_OFF_1H & _XT_OSC_1H
__CONFIG _CONFIG2H, _WDT_ON_2H & _WDTPS_128_2H
__CONFIG _CONFIG4L, _LVP_OFF_4L
NOLIST
Now. You have two options.
Option #1. Change the fuse configurations values to whatever you want, then
save the 18F448.INC file like this;
Assuming this (shown below in @ DEVICE line) is what you want, and since
you cannot use the @ DEVICE directive,
" @ DEVICE XT_OSC,LVP_OFF,WDT_OFF,PROTECT_OFF
You would make this change, then save the 18F448.INC file;
__CONFIG _CONFIG1H, _OSCS_OFF_1H & _XT_OSC_1H
__CONFIG _CONFIG2H, _WDT_OFF_2H & _WDTPS_128_2H
__CONFIG _CONFIG4L, _LVP_OFF_4L
Notice how I changed only the line _WDT_ON_2H to _WDT_OFF_2H
Option #2. Simply comment out each line in the 18F448.INC file, then save the file,
and include your fuse settings in your PBP code like this;
First comment out the PBP default fuse settings. Note: Change only these lines as
shown below in your 18F448.INC file;
; __CONFIG _CONFIG1H, _OSCS_OFF_1H & _XT_OSC_1H
; __CONFIG _CONFIG2H, _WDT_ON_2H & _WDTPS_128_2H
; __CONFIG _CONFIG4L, _LVP_OFF_4L
Now save the 18F448.INC file with these lines commented out.
Now you can drop your 18F MPASMWIN assembler compatible fuse
settings directly into your PBP code like this;
asm
__CONFIG _CONFIG1H, _OSCS_OFF_1H & _XT_OSC_1H
__CONFIG _CONFIG2H, _WDT_OFF_2H & _WDTPS_128_2H
__CONFIG _CONFIG4L, _LVP_OFF_4L
endasm
DEFINE NO_CLRWDT 1 " Sin perro Guardian
TRISB=0
loop: PORTB.0=1 " Turn on LED connected to PORTB.0
Pause 500 " Delay for .5 seconds
PORTB.0=0 " Turn on LED connected to PORTB.0
Pause 500 " Delay for .5 seconds
PORTB.1=1 " Turn on LED connected to PORTB.0
Pause 500 " Delay for .5 seconds
PORTB.1=0 " Turn on LED connected to PORTB.0
Pause 500 " Delay for .5 seconds
PORTB.2=1 " Turn on LED connected to PORTB.0
Pause 500 " Delay for .5 seconds
PORTB.2=0 " Turn on LED connected to PORTB.0
Pause 500 " Delay for .5 seconds
PORTB.3=1 " Turn on LED connected to PORTB.0
Pause 500 " Delay for .5 seconds
PORTB.3=0 " Turn on LED connected to PORTB.0
Pause 500 " Delay for .5 seconds
PORTB.4=1 " Turn on LED connected to PORTB.0
Pause 500 " Delay for .5 seconds
PORTB.4=0 " Turn on LED connected to PORTB.0
Pause 500 " Delay for .5 seconds
PORTB.5=1 " Turn on LED connected to PORTB.0
Pause 500 " Delay for .5 seconds
PORTB.5=0 " Turn on LED connected to PORTB.0
Pause 500 " Delay for .5 seconds
PORTB.6=1 " Turn on LED connected to PORTB.0
Pause 500 " Delay for .5 seconds
PORTB.6=0 " Turn on LED connected to PORTB.0
Pause 500 " Delay for .5 seconds
PORTB.7=1 " Turn on LED connected to PORTB.0
Pause 500 " Delay for .5 seconds
PORTB.7=0 " Turn on LED connected to PORTB.0
Pause 500 " Delay for .5 seconds
GoTo loop " Go back to loop and blink LED forever
End
You may want to download MicroCode Studio free version. It"s much easier & I
think better than CodeDesigner Lite. It"s all I ever use with PBP. You can get
the free version at the link below.
http://www.rentron.com/mcstudio/mcstudio.exeRegards,
-Bruce
tech@rentron.comReynolds Electronics
Como vez él me sacó de la duda y si no podemos aquí lo mejor (creo ya que si no podemos en el foro sería poco recomendable abrir otro con el mismo nombre) sería preguntarle a él.