Hola, agradecería mucho si me ayudan.
Estoy empezando a programar pic's, de hecho es el primero, he hecho algunos programas con el 16f84 pero nunca los he quemado, tengo que hacer un proyecto y escogí el 18f452, pero no tengo mucha idea de como comenzar, he leído en el manual y en lo poco que entiendo dice que hay que existen varias caracteristicas especiales del CPU.
En la parte del oscilador dice que tiene varios tipos, y que se programan, entre las caracteristicas especiales está la selección del oscilador, quiero quemar un programa sencillo solo para observar como trabaja el componente, pero no estoy seguro si hay que configurar el oscilador o no es necesario, (pienso colocar un oscilador RC sencillo para probar), leyendo el manual dice que para programar el oscilador hay que acceder a la sección 300000h y solo se accede a la sección 300000h-3FFFFFh por medio de tablas, ¿que quiere decir esto?, como lo hago?.
Me parece bien que uses los 18F. Lo normal es empezar por los 16F pero a mi modo de ver, los 18F tienen muchas menos complejidades en montones de aspectos sobre todo en el tema paginación. Es cierto que tienen muchos modos de oscilación lo cual hace confuso 'comenzar' pero unan vez que lograste entender como se setean los configuration bits, luego opino que es mas facil trabajar con los 18F que con lo 16F.
AL oscilador o al modo oscilador accedes mediante los configuration bits. Esos bits, se configuran cuando vas a 'quemar' como dices tu al pic. Para ahorrar tiempo en la elección de estos configuration bits uno los puede dejar seteados ya en el código de manera de no tener que setearlos cada vez que uno quiere quemar el pic.
Algo que me parece importante notar es que en estos pics, es posible reprogramar los configuration bits durante la ejecución del programa, pero te aconsejo que NO HAGAS ESTO porque podrias dejar al pic sin funcionar y necesitarias reprogramarlo. No es que se dañe el pic, simplemente dejará de funcionar si seteas algo mál en el código.
Maunix he leido tus respuestas y se ve que tienes dominio sobre el componente, quisiera saber que posibilidades hay que coloques algun programa sencillo, encesnder leds, algo facil, solo para ver como se configuran los puertos tanto de entrada como de salida, configurar el oscilador, un programa que me dé alguna idea para arrancar a programar el micro.
Fijate te puse otro post, dime en que lenguaje (entre ensamblador y C18 que es lo que yo uso) y veré de improvisar algun ejemplo aunque para los 18F452 hay cientos de ejemplos por internet. Opino que es una muy buena elección para comenzar ya que tienes todos los módulos y puedes hacer casi de todo con el.
Maunix, sería mucho pedir que volvieras a explicar la parte del latch de los puertos, no tengo muy claro lo que significa latch, creo que eso me crea problemas para entender de que se trata ese registro. Pienso que según la explicacion que escribiste sirve para evitar que por la velocidad del micro no se ejecuten instrucciones, ¿es asi?
No es ningun inconveniente a ver como te explico. Cuando le dices al pic que ponga un PIN en alto, el pin no se pone 'instantanemente en alto' sino que tarda un tiempo. El tiempo varía en como es el circuito de salida. Yendo a un ejemplo simple si enciendes una fuente de voltaje que alimenta a un circuito RC, el circuito llegará a su máxima tensión en un tiempo que depende de la constante RC. Bueno, en el pic sucede lo mismo, el pic recibe el comando de poner un 5V, pero a la salida tarda unos nano segundos o microsegundos en hacerse realidad.
Sumado a esto, es costummbre usar las instrucciones bsf y bcf. Con estas instrucciones uno puede setear un solo bit de un puerto a la vez, lo cual puede ser muy cómodo en muchos casos.
El tema es que dichas instrucciones, no se ejecutan directamente sino que tienen un ciclo de lectura, de modificación y luego de escritura.
Te pongo con un ejemplo a ver si es mas claro
Imaginemos que el PORTA tiene la siguiente salida
1) Paso 1.
PORTA = 000000102) Paso 2. Hacemos un bsf PORTA,2. --> El PORTA, recibió la instrucción. Lee el contenido del
PORTA = 00000010, lo modifica
00000110 y lo escribe (sacandolo por el hardware). Es que la instrucción en si actua sobre un registro interno del pic no directamente sobre el hardware. (Condición esperada es que
PORTA = 00000110)
3) Paso 3. Inmediatamente queremos hacer un
bsf PORTA,3 (para tener una salida esperada
PORTA=00001110). Como la instrucción en realidad lee el contenido del PORTA, lo modifica y escribe luego en el PORTA, lo que sucede es lo siguiente.
3.1) Si el PORTA<2> tiene una salida poco cargada o poco capacitiva , la salida al finalizar el paso 3, habrá sido
PORTA = 00001110.
3.2) Si el PORTA<2> aun no se puso en 1 porque la salida aun no se haya puesto en 1, en realidad al finalizar el paso tres habremos tenido
PORTA = 00001010 Es decir que el PORTA<2> no se habrá seteado!
Como ves, 'depende' de como sea el hardware de salida. La palabra LATCH proviene de los viejos circuitos LATCH que retenian un valor indefinidamente hasta que no se le cambie la condición que haga que cambie. Es por eso que uno entonces en los 18F termina poniendo al LATDA<2> en 1, para que en algun momento se ponga la salida en 1 en dicho pin. Si luego uno de inmediato quiere indicar que e ponga en uno el PORTA<3>, setea el LATA3 , eso se hace de inmediato y luego la salida se irá estableciendo en función de como sea el circuito de salida del PORTA,3
Espero te haya sido más clara esa explicación.
Y por ultimo quisiera saber si la estática daña el componente, en la primera hoja del manual que tiene las caracteristicas generales dice que se fabrica con tecnología CMOS, también dice "Fully static design", qué significa esta frase?, fully es completamente y la lógica dice que la traducción de esa frase es completamente diseño estático, recuerdo que la tecnología CMOS es delicada con la estática y si el componente es fabricado con esa tecnología tengo la duda si la estática lo daña.
Coincido con migsantiago, es muy raro que quemes un pic con estática salvo que le hagas una descarga realmente importante.
Saludos