TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: micro_cadaver en 12 de Julio de 2007, 12:18:52

Título: configuration bits (fuses) en el PICC de hitech
Publicado por: micro_cadaver en 12 de Julio de 2007, 12:18:52
holas a todos, bueno en algunos ejemplos dentro del foro he visto lo siguiente
Código: C
  1. #include <pic.h>
  2. #include "delay.h"
  3. // necesario para llamar a DelayMs
  4. #define XTAL_FREQ 4MHZ  
  5. __CONFIG(0x3F71);
  6.  
  7. void main(void)
  8. {
  9.         TRISB=0x00; // PORTB <- salida
  10.         while(1)
  11.         {   // bucle eterno
  12.                 PORTB=0x01;   // RB0 <- 1
  13.                 DelayMs(1000);   // retardo 1 mS
  14.                 PORTB=0x00; // RB0 <- 0
  15.                 DelayMs(100);
  16.         }
  17. }

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  :mrgreen: 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:

Citar
#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  :mrgreen:


Título: Re: configuration bits (fuses) en el PICC de hitech
Publicado por: maunix en 12 de Julio de 2007, 12:37:36
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.
Sí, depende de cada pic aunque entre familias (16F, 18F) se respetan bastante.

En el MPLAB lo configuras y 'sirven' si tienes un programador que funciona bajo MPLAB, pero si usas uno externo, la información no iría en el .HEX por el hecho de que vos lo cambies en el MPLAB...

Además cada vez que recargas/compilas el proyecto, debes volver a tocar estos bits.

Estan en todos los manuales, suelen estar bajo la descripción de "Special Features of the CPU".  Ahi verás uno o 2 bytes que consituyen los CONFIGBITS (o fuses) y son esos bits de los que estamos hablando.


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 primer forma (escribir el valor en hexa de los configuration bits) es bastante poco amigable y hasta poco aconsejable.

Sugiero uses la segunda opción.

Si un "fuse" no lo seleccionas dentro de el CONFIG, tomará su valor por defecto (1) , entonces si quieres garantizar el resultado te conviene escribir todos los fuses.

Te dejo un ejemplo para un 16F873 en assembler


__config   _HS_OSC & _WDT_OFF & _PWRTE_ON & _BODEN_OFF & _LVP_OFF & _CPD_ON & _WRT_ENABLE_OFF & _DEBUG_OFF & _CP_ALL


Saludos
Título: Re: configuration bits (fuses) en el PICC de hitech
Publicado por: PalitroqueZ en 12 de Julio de 2007, 17:07:11
...
La primer forma (escribir el valor en hexa de los configuration bits) es bastante poco amigable y hasta poco aconsejable.
...

em em, si se conoce la configuration word y se está usando a cada rato, es mas fácil acordarse en hexa que el chorrero de bits/bytes (de acuerdo al micro en cuestión).





Título: Re: configuration bits (fuses) en el PICC de hitech
Publicado por: micro_cadaver en 12 de Julio de 2007, 17:12:27
jejej yo creo que es cuestion de gustos, a mi me gusta más con los nombre de cada uno de los bits, a otros les gusta defrente el hexa de todo el paquete de configuración.
Título: Re: configuration bits (fuses) en el PICC de hitech
Publicado por: microKings en 19 de Agosto de 2007, 22:17:39
Buenas amigos de todopic, quisiera preguntarles como hago para configurar conversor A/D en Hi-tech?

De antemano muchas gracias...
Título: Re: configuration bits (fuses) en el PICC de hitech
Publicado por: micro_cadaver en 20 de Agosto de 2007, 09:34:47
m.... ya te respondi en el otro hilo del hitech... ademas este hilo habla de los configuration bits, .... ademas NO VALE repetir el mismo post en 2 sitios distintos.

saludos.
Título: Re: configuration bits (fuses) en el PICC de hitech
Publicado por: certikc en 18 de Abril de 2008, 17:58:53
Todos esos fuses o bits de configuracion se pueden configurar con el c-wiz , el cual es un generador de codigo que trae el hi-tide, si usas mplab lo configuras desde allá.
el c -wiz te premite configurar todos los fuses del pic, espero y la respuesta no sea demasiada desfasada en tiempo