TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: Carafa en 13 de Noviembre de 2003, 16:51:00
-
Antes de nada, saludar a todo el mundo.
Después, hecha la cortesía, me gustaría que me respondierais a una pregunta. Os pongo en antecedentes: no he programado nunca un pic, sólo he hecho algunas prácticas y no hemos llegado más que a una somera simulación. Ahora que estoy haciendo mi proyecto de final de carrera, oh sorpresa, me ha tocado hacerlo con uno de estos cacharros. Bueno, he hecho mis programas con el Picc pero mi duda surge a la hora de seleccionar el tipo de oscilador, el WDT, el BOR, etc...
Veamos, ahí voy, ¿cómo lo selecciono? ¿Mediante programa? Hago algo así como:
FOSC0 = 1; FOSC1 = 0; si quiero usar cristal de 4MHz e igual con el resto de bits de la configuration word (WDTEN, PWREN, CPO, BOREN)?
¿O bien son cosas que se seleccionan una vez se vaya a programar el chip (utilizo picstart)?
Y otra cosa: ¿para qué sirve el bit CPO (protección de código)? No pillo :x
Me lío 
Muchas gracias por alumbrar el camino ^^
-
Hola Carafa, bienvenido.
Después del #include, mete la siguiente directiva:
#fuses XT, NOPROTECT, NOPUT, NOWDT, NOLVP, NOCPD
uN SALUDO
-
Muchas gracias por la molestia, Pocher. Aunque lo he probado y no me ha funcionado. De hecho creo que fuí un poco parco en los datos del compilador que usaba. Uso el Hi-Tech picc lite, es decir, lo más cutre de lo más cutre (básicamente porque mi universidad es así de esplendida y sólo tienen este, sic).
¿Sabes cómo hacerlo en ese compilador?
-
El de HITECH hace mucho tiempo que no lo toco, ahora uso el de CCS.
Te recomiendo que te agencies el manual del compilador.
En un manual para PIC18 de HITECH que tenía por el disco duro he encontrado lo siguiente, no sé si te servirá:
4.2.2 Configuration Fuses
The PIC18 processor’s have several locations which contain the configuration bits or fuses. These bits
may be set using the configuration macro. The macro has the form:
__CONFIG(n, x)
(there are two leading underscore characters) where n is the configuration register number and x is the
value that is to be the configuration word. The macro is defined in <pic18.h> so be sure to include that
into each module that uses this macro.
The configuration macro programs the upper and lower half of each register, i.e. it programs 16 bits with
each call. Special named quantities are defined in the header file appropriate for the processor you are
using to help you enable the required features. See Table 4 - 1 on page 69 for the available configuration
bit settings associated with the 18Cxxx chip types, and See Table 4 - 2 on page 70 for the settings for
flash devices.
For example, to set a PIC18Cxx1 chip to have an RC type oscillator, an 8-bit bus width, the powerup
timer disabled, the watchdog timer enabled with a post scale factor of 1:1, and the stack full/underflow
reset disabled, the following could be used.
#include <pic18.h> __CONFIG(1, RC); __CONFIG(2, BW8 & PWRTDIS & WDTPS1 & WDTEN); __CONFIG(4, STVRDIS);
Note that the individual selections are ANDed together. Any bits which are not selected in these macros
will remain unprogrammed. You should ensure that you have specified all bits correctly to ensure proper
operation of the part when programmed. Consult your PIC datasheet for more details.
The __CONFIG macro does not produce executable code and should be placed outside function
definitions.
Un saludo
-
que tal carafa por que no lees el archivo header pic.h que es header global para los pics 16xxxx
ahi podras encontrar los valores que tienes que colocar para su configuracion te pongo un ejemplo en hi tech de la palabra de configuracion
__CONFIG(0x3FF1);
en este caso el reloj es en xt
el wdtimer es apagado
el powre on reset es activo
y el codigo de proteccion esta apagado
esta es la instruccion para hi tech y te repito busca en el archivo header del pic los bits de config y los pisibles valores y otra forma de hacerlo es un truco en el mplab 6.xx
entra en la pestaña configure y en configuration bits
y ahi puedes seleccionar wdt, osc etc. etc y conforme hagas las combinacion aparece el valor de la palabra de configuracion saludos
-
Muchas gracias!
Parece que funciona, el lunes lo programaré y a ver si hace lo que debe (espero que sí
). Creo que como premio os mereceis estar en los agradecimientos de mi proyecto (bueno, ya sé que no es mucho pero de todas maneras yo lo hago por amor al arte, o sea que...
).
Ya os comeré la cabeza con otras cosas que me vayan saliendo.
Por cierto, haciendome un poco pesado y ya sólo por curiosidad, ¿lo de la protección de código qué es exactamente? Me lo imagino, pero yo tengo mucha imaginación y si me pongo a pensar al final aparece el bit CPO salvando a la princesa... mejor preguntar.
Salu2!
-
La proteccion de codigo activa cuando estas grabando el PIC obliga al compilador hexadecimal a realizar un scramble con los bits del programa.
De esa forma ni el mismo desarrollador puede levantar ese programa una vez grabado, protegiendo la propiedad intelectual del programador.
El inconveniente de utilizarlo es que debes estar seguro que lo que hiciste esta bien, pues algunos modelos de PIC no te permiten volver a grabarlos una vez utilizada (aunque sea del tipo flash), especialmente tendras problemas con los de ventana de borrado ultravioleta.
Muy lindo pero tener cuidado al utilizarlo!!!
-
Muchas gracias! Una duda existencial menos...
Ahora sólo me queda saber de dónde vienen los niños 
Salu2!
-
Yo ya no me creo mas eso de la cigueña, yo pese 3,800 Kg al nacer y ella pesa menos, como hizo para traerme???

