holas a todos, bueno en algunos ejemplos dentro del foro he visto lo siguiente
#include <pic.h>
#include "delay.h"
// necesario para llamar a DelayMs
#define XTAL_FREQ 4MHZ
__CONFIG(0x3F71);
void main(void)
{
TRISB=0x00; // PORTB <- salida
while(1)
{ // bucle eterno
PORTB=0x01; // RB0 <- 1
DelayMs(1000); // retardo 1 mS
PORTB=0x00; // RB0 <- 0
DelayMs(100);
}
}
Y mi duda recae en esta linea de codigo:
__CONFIG(0x3F71);
que bits de configuración (fuses) activa o desactiva esto? Además supongo que no ha de ser igual que para otros pics, asi que he buscado en los manuales (derepente se me paso) y pues no he logrado encontrarlos. Uso el MPLAB y se peude configurar desde ahi también pero me gustaría tenerlos en el mismo programa.
Luego indage en los archivos del mismo compilador PICC hitech, y pues encontre los fuses de cada pic, ufff.... estaban bien escondidos
pero no he visto ejemplos donde los usen
, digamos que quiero programar el 16f628, segun el archivo que contiene las fuentes de este pic hay lo siguiente:
#define CONFIG_ADDR 0x2007
/*watchdog*/
#define WDTEN 0x3FFF // enable watchdog timer
#define WDTDIS 0x3FFB // disable watchdog timer
/*power up timer*/
#define PWRTEN 0x3FF7 // enable power up timer
#define PWRTDIS 0x3FFF // disable power up timer
/* MCLR pin function */
#define MCLREN 0x3FFF // master clear reset enable
#define MCLRDIS 0x3FDF // master clear reset disable
//alternately
#define MCLRIO 0x3FDF // use MCLRDIS
/*brown out reset*/
#define BOREN 0x3FFF // enable brown out reset
#define BORDIS 0x3FBF // disable brown out reset
/*low voltage programming*/
#define LVPEN 0x3FFF // low voltage programming enable
#define LVPDIS 0x3F7F // low voltage programming disabled
/*data code protection*/
#define DP 0x3EFF // protect the data code
// alternative definitions
#define DATPROT 0x3EFF // use DP
#define DATUNPROT 0x3FFF // use UNPROTECT
/*code protection*/
#define UNPROTECT 0x3FFF // do not protect the code
#define PROTECT 0x03FF // protect the program code
/* Code protection for 2K program memory */
#ifdef _16F628
#define PROTECT75 0x17FF /* Protects from 0200h-07ffh */
#define PROTECT50 0x2BFF /* Protects from 0400h-07ffh */
#else /* Code protection for 1K program memory */
#define PROTECT50 0x17FF /* Protects from 0200h-03ffh */
#endif
/*osc configurations*/
#define ER 0x3FFF /* external resistor, CLKOUT on CLKOUT pin, R on CLKIN */
#define ERIO 0x3FFE /* external resistor, IO fn on CLKOUT pin, R on CLKIN */
#define INT 0x3FFD /* internal resistor/capacitor, CLKOUT on CLKOUT pin, IO on CLKIN */
#define INTIO 0x3FFC /* internal resistor/capacitor, IO fn on CLKOUT pin, IO on CLKIN */
#define EC 0x3FEF /* external clock in, IO fn on CLKOUT pin, CLKIN on CLKIN */
#define HS 0x3FEE /* high speed crystal */
#define XT 0x3FED /* crystal/resonator */
#define LP 0x3FEC /* low power crystal */
Entonces si
__CONFIG(0x3F71);
entonces "alucino" que para poner cada palabra seria asi:
__CONFIG(WDTDIS & XT); //osiclador de cristal y watchdog desahbilitado. Lo compile y salio OK y también se modificó en el mismo MPLAB configuration bits.
La verdad que mucha información de este compilador no esta tan disponible, si alguien sabe de algún manual pues que me pasa la voz