Hola a todos.
He estado siguiendo este foro durante un año. Agradecer primero a los maestros, a LABmouse por crear este hilo, a Suky por todos los tutoriales que se ha currado, y a los compañeros que han añadido conocimientos e ideas.
He estado investigando el tema del bootloader USB HID, ya que se me hacia pesao programar con el pickit2.
He probado el que ha hecho la pagina de neoteo, similar al de Suky, y me funciona en el 2550.
lo que yo he quiero hacerme una placa pequeña y me gustaria poner un switch y un LED en los pines A0 y A4 respectivamente.
despues de instalar el c18 , modifico el io_cfg.h y pongo esto:
#define mInitAllLEDs() LATA &= 0x00; TRISA &= 0x0F;
#define mLED_1 LATAbits.LATA4 //salida A4 usa LATA
#define mInitAllSwitches() TRISAbits.TRISA0=1;
#define mInitSwitch2() TRISAbits.TRISA0=1; //entrada
#define sw2 PORTAbits.RA0
y en el main:
void main(void)
{
ADCON1 = 0x0F; //todos los pines ANX son digitales
CMCON = 0x07; //desactivar comparadores
TRISA &= ~0x0F; // pin 4 como salida, 3 al 0 como entradas
//Check Bootload Mode Entry Condition
if(sw2 == 1) //This example uses the sw2 I/O pin to determine if the device should enter the bootloader, or the main application code
{
ADCON1 = 0x07; //Restore "reset value" of the ADCON1 register
_asm
goto 0x1000 //If the user is not trying to enter the bootloader, go straight to the main application remapped "reset" vector.
_endasm
}
InitializeSystem();
while(1)
...
El led me funciona, pero el micro siempre entra en modo bootloader da igual el pulsador. No se si tengo algo mal, o hice alguna conexión rapida mal. Luego utilice el de Neoteo y me funciona correctamente. si alguien lo puede revisar y comentarme, se lo agradezco.
Respecto al problema que todos tenemos del CCS , respecto las versiones 089 vs las ultimas, tengo que decir que como el compañero Campech, que el v.104 no me funciona. He realizado un programa muy sencillo de comprobar si esta pulsado un switch ,que encienda un led. y en caso contrario que no encienda. Lo he compilado en el 089 y en el 104 . Pues los ficheros LST son IGUALES!!!! pero al programarlos con el HID, el compilado por el 089 si me funciona, y el 104 NO. Pues investigando, los hexadecimales NO son iguales.
El hexadecimal de campech se puede ver la diferencia. la Primera línea es la clave. Copie la linea al 104 y VOILÁ, funcionó.
:020000040000FA
Si alguien lo puede probar y confirmarlo, se agradece. El CRC de la ultima línea NO lo modifiqué, se ve que el bootloader HID no lo comprueba. Y como agradecimiento solo pediría que me ayudasen con el fichero del C18, a ver si tengo tiempo para aprenderlo.
Saludos, Hara_Kiri85. (ó rmadrid25 según que foro)