He estado peleando con este PIC horas para hacerlo función que me lleno de alegría por haberlo conseguido
Les cuento:
El PIC que tengo es un PIC12LF1822, cuando mi padre lo pidio, hace como un año atras, ya no habia en stock en digikey el PIC12F1822. Bueno, primero, me quite un peso de encima al saber que el susodicho PIC era en formato DIP8; pues pensé que era SOIC y me daba flojera tener que hacerle una PCB para poder ponerlo en el protoboard, soldar, etc. Luego, no me gustaba mucho la idea de que fuera LF, ya saben...
Entonces, manos a la obra, el PIC al protoboard, vss y vdd con su 104, un led para test (blink) y conectado directamente el pickit2. Ya me habia asegurado que mi programador (el pickit2) podia programar este PIC (en su version LF no se olviden =D); que, porcierto, solo lo soporta con su propio programa (Pickit 2 Programmer.exe o como quieran llamarle), ya que el MPALB dice que no lo soporta (mas info:
AQUI)
Luego, con mi CCS v4.112 creo mi programa muy basico (blink ya saben) con su datasheet siempre a la mano. Configurando fusibles y demas... Compilo, todo bien, el pickit2 lo reconoce, programo, ok. Pero no funciona
He pasado mas de 5 horas (toda la madrugada) busncaod en google, el foro de CCS, el foro de Microchip, bajando .hex, .asm y compilandolos y leyendo y fumando y NADA! Intento cambiar el programador (pues pensé que tal vez por ahí había alguna falla) al ICD2 que también tengo, pero que para que el ICD2 lo programe se necesita un circuito externo... Posteriormente, reviso conexión y aparentemente todo esta bien... Ya alfinal de todo el bendito problema fue que el PUTO cable que le daba vss (GND, tierra, masa) al PIC estaba defectuoso.. ARGGG!!!
Solucione esto y compilo y todo y: "OHH!! el LED prendio!!!. Pero que pasa? Yo puse que haga toggle cada 100ms... PORQUE NO PARPADEAS BENDITO LED!!!"
Pues, verán, ese problema ya es del compilador CCS; si, es un bug (Quien lo diría?). Entonces, como tenia otra versión mas actual instalada (la v4.124), compile ahí y, hasta ahora, todo OK!
Así que, sin aburrirlos mas, dejo todo el proyecto. Quise en un principio simular en el proteus pero en su versión 7.8 SP2 (muy actual) no lo soporta.
Por si se les paso algo:
PIC: 12LF1822 @ 32Mhz:
http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en544839Compilador: CCS v4.124
Programador: Pickit 2 (Con su propio software programador, pues desde el MPLAB no se puede)
Codigo:
#INCLUDE <12LF1822.h>
#FUSES INTRC_IO
#FUSES NOWDT
#FUSES PUT
#FUSES NOMCLR
#FUSES PROTECT
#FUSES NOCPD
#FUSES NOBROWNOUT
#FUSES NOCLKOUT
#FUSES NOIESO
#FUSES NOFCMEN
#FUSES NOWRT
#FUSES PLL_SW
#FUSES STVREN
#FUSES BORV25
#FUSES NODEBUG
#FUSES NOLVP
#USE Delay (Clock = 32 000 000)
#USE FAST_IO(A)
#DEFINE PIN_TEST PIN_A2
void Main (void)
{
setup_oscillator(OSC_8MHZ | OSC_NORMAL | OSC_PLL_ON);
setup_adc_ports(NO_ANALOGS|VSS_VDD);
setup_adc(ADC_OFF);
setup_dac(DAC_OFF);
setup_spi(SPI_SS_DISABLED);
setup_timer_0(T0_internal);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_ccp1(CCP_OFF);
setup_comparator(NC_NC);
set_tris_a(0b001000);
output_a(0);
while (true)
{
output_toggle(PIN_TEST);
delay_ms(100);
}
}
El esquema no es nada del otro mundo: El PIC mismo conectado a vss y vdd con su 104. En RA2 va una R de 220ohm conectada al anodo del LED y pues el catodo a vdd (3.3V eso si ah! suministrado amablemente de mi Pickit2
). Eso es todo.
Espero no olvidarme de nada más. Ahora si, a dormir