Mis pequeñas prácticas con microcontroladores

Iniciado por Tokes, 25 Agosto 2010, 01:48 AM

0 Miembros y 1 Visitante están viendo este tema.

Tokes

andres_5:

Checa este enlace:

http://www.todopic.com.ar/foros/index.php?topic=1732.0

Es para hacer un grabador de PIC con puerto paralelo.


          Saludos.

Mr.Blue

El que te pase yo es el que uso, y funciona bien, lo de la corvencion no se si estara bien o no, lo tendria q ver, cuando pueda te digo, el programa tiene para seleccionar por que puerto se manda la informacion, sea DB9 o LPT1 o 2.

Tokes

#32
¡Ya llegué de nuevo!

Ahora les traigo otro tema que es importantísimo aprender (a los novatos les da mucho dolor de cabeza al ver que sus programas no funcionan).

Tema: La palabra de configuración.

A muchos principiantes les ha sucedido esto: editan su programa, lo compilan o ensamblan, lo revisan en algún simulador y, finalmente, lo graban en el microcontrolador. Pero ¡Oh sorpresa! El microcontrolador no hace nada. ¿Qué sucede? La simulación indicaba que todo estaba bien. ¡¿Por qué no funciona el micro?!

Lo que sucede es que muchas veces olvidamos especificar la palabra de configuración del dispositivo. Esta palabra de configuración, que reside en algún lugar de la memoria de programa, habilita/deshabilita ciertos mecanismos del microcontrolador que tendrán efecto significativo en su funcionamiento. A continuación se explicarán algunos de los mecanismos controlados por la palabra de configuración.

-   Oscilador. Es necesario siempre especificar el tipo de oscilador con el que va a operar el dispositivo. Si el oscilador que se conecta al microcontrolador es diferente del especificado en la palabra de configuración, adivinen ¿qué sucede? Para el caso de los PIC, si queremos que nuestro dispositivo funcione con un cristal de 4 MHz, en la palabra de configuración debemos especificar XT. Si deseamos que trabaje con un cristal de 12 MHz, en la palabra de configuración debemos especificar HS, y de manera similar para los otros osciladores.

Cabe señalar que si no especifica el tipo de oscilador, el oscilador por defecto para los PIC es del tipo RC.

-   Detector de Brown-Out. Un Brown-Out es una baja en la tensión de alimentación del dispositivo. Todos los microcontroladores tienen un rango de voltaje de operación. Si la tensión de alimentación rebasa el límite superior el microcontrolador podría averiarse. Si la tensión de alimentación está por debajo del límite inferior, el microcontrolador trabaja, pero seguramente operará de manera inadecuada. Aquí está el detalle:

Si la tensión de alimentación del dispositivo está por debajo de lo especificado por el fabricante, el microcontrolador puede operar sin riesgo de averías, pero no es seguro que funcione correctamente; podríamos decir que el microcontrolador está "ebrio".

El usuario tiene dos opciones:

1.   Permitir que el microcontrolador opere aún cuando la tensión de alimentación esté por debajo de lo mínimo especificado. Para este caso se inhabilita el detector de Brown-Out.
2.   Impedir que el microcontrolador opere cuando la tensión está por debajo del mínimo especificado. Esto se logra activando el detector de Brown-Out.

Claro está que la activación/desactivación del detector de Brown-Out debe especificarse en la palabra de configuración.

-   Temporizador de arranque. Este temporizador, si está habilitado, inicia su ciclo de tiempo al ser conectada la alimentación y durante su temporizado mantiene al microcontrolador en estado de reset (impide la ejecución del código). Esto es con el objetivo de que el microcontrolador empiece a funcionar cuando el nivel de la tensión de alimentación sea adecuado.

-   Temporizador perro guardián (Watchdog Timer). Este temporizador comienza su temporización una vez que el microcontrolador está correctamente alimentado. Cuando dicho temporizador llega al final de la cuenta resetea al sistema, de manera que el código vuelve a ejecutarse desde el principio. Esto es muy útil para los casos en los que el programa entra en un ciclo infinito esperando que se cumpla una condición que no llega.

Al utilizar el Watchdog Timer hay que refrescar su contenido (ponerlo a 0) en el programa periódicamente para evitar que se desborde y resetee al sistema.

¿Dónde no hay que refrescar el contenido del Watchdog? En las partes de la programación donde el sistema pueda quedar atrapado en un ciclo infinito. Es ahí donde el Watchdog  se desbordará y reiniciará al sistema, sacándolo así del bucle infinito en el que estaba atrapado.

-   Protección de código. Antiguamente, y en algunos casos actuales, los diseñadores de circuitos electrónicos solían raspar la parte superior de los circuitos integrados con el objetivo de borrar la identificación del chip y así evitar que otras personas plagiaran su diseño.

No es necesario hacer esto con los dispositivos que tienen sistema de protección de código. Activando la protección de código, las instrucciones grabadas en la memoria de programa del dispositivo no pueden ser leídas por ningún dispositivo externo. El chip seguirá siendo funcional, se le puede grabar un nuevo programa, pero nunca se sabrá que programa tenía anteriormente.

-   Modo de depuración. Al activar el modo de depuración el dispositivo dedica unas cuantas de sus terminales para comunicarse con el dispositivo depurador, por lo cual estas terminales no pueden funcionar como entrada/salida.

En el modo de depuración el usuario puede controlar la velocidad con la que el microcontrolador ejecuta las instrucciones, puede ver el contenido de las memorias de programa y de datos, entre otras cosas.

-   Programación con bajo voltaje. Los microcontroladores PIC tienen dos modos de grabación:
o   Programación con voltaje alto. En este modo ocurre lo siguiente:
     I.   Si la terminal MCLR recibe un voltaje de 0 V el microcontrolador entra en estado de reset y no ejecuta instrucciones.
     II.   Si la terminal MCLR recibe un voltaje de 5 V el microcontrolador ejecuta instrucciones normalmente.
     III.   Si la terminal MCLR recibe un voltaje de 12 V el microcontrolador entra en modo de grabación y recibe las instrucciones que han de grabarse en su memoria de programa.
o   Programación con voltaje bajo. En este modo de grabación ocurre lo siguiente:
     I.   Si la terminal RB3/PGM recibe un '0' lógico el microcontrolador opera de manera normal.
     II.   Si la terminal RB3/PGM recibe un '1' lógico el microcontrolador entra en modo de grabación.

Cuando el microcontrolador está en modo de grabación las terminales RB7 y RB6 soportan los datos y el reloj, respectivamente.

- Detector de fallas de reloj. Cuando los microcontroladores operan con una señal de reloj externa hay el riesgo de perder conexión con dicha señal (por averías en la pista, porque el dispositivo que brindaba la señal dejó de funcionar, etc.).

Algunos microcontroladores tienen integrado un detector de fallas de reloj, el cual detecta si se ha perdido la señal de sincronía externa, momento en el cual realiza un switcheo hacia el reloj interno. Esto quizá requiera hacer ajustes en el programa, ya que posiblemente el reloj externo operaba a una velocidad diferente del interno.

- Protección de datos. Esto es algo similar a la protección de código. Activando la protección de datos la memoria EEPROM no puede ser leída por ningún dispositivo externo (aunque sí puede ser escrita).

Bien, eston son algunos de los mecanismos que pueden activarse o desactivarse mediante la palabra de configuración.

Ahora ¿Cómo especifico la palabra de configuración en el programa? Esto depende del software ensamblador/compilador que se utilice.

En el software MPASM del MPLAB IDE la palabra de configuración se especifica mediante la directiva __CONFIG (notar que lleva dos guiones bajos) seguida de ciertos parámetros que especifican los mecanismos a configurarse.

Pongamos como ejemplo al PIC16F84A. Los mecanismos de este microcontrolador que pueden configurarse mediante la palabra de configuración son:

- Temporizador de arranque (Power Up Timer).
- Tipo de oscilador.
- Watchdog Timer.
- Protección de código.

Supongamos que deseamos que nuestro microcontrolador:

- Opere con un cristal de 20 MHz (Oscilador HS).
- El Watchdog Timer se desactive (para que no reinicie nuestro programa a cada rato).
-  el Power Up Timer encienda (para que el micro no funcione hasta que el nivel de alimentación se estabilice).
- El código en su memoria de programa quede protegido para que nadie pueda leer el programa guardado en el dispositivo.

Esto se especifica así en el MPASM de MPLAB IDE:

   __CONFIG   _HS_OSC & _WDT_OFF & _PWRTE_ON & _CP_ON

En el compilador PCWH de la empresa CCS se especifica así:

   #fuses   HS, NOWDT, PUT, CP

Bueno, aquí acaba este tema. Nos vemos luego.

meneraing

se me a quebrado una patita de un micro... como hago para arreglarla?

se puede?

snakewather

Cita de: meneraing en 17 Septiembre 2010, 03:49 AM
se me a quebrado una patita de un micro... como hago para arreglarla?

se puede?


Hola si tienes un diodo como el 1N4007 le puedes cortar un pedasito de las patitas del largo de la patilla de un pic despues se la soldas al pin con mucho cuidado y tratando de no calentar demasiado el pic.
"dame un  AP y veras el mundo, dame un pic y lo hare electronico "

Nork

Buena iniciativa!. Aquí dejo como encender un led por interrupciones.

#include<p18F4550.h>
#define freq 8   // Frequencia de la CPU

void Delay_ms(unsigned int t)
    {
unsigned long n,i;
n=t*freq;
n=n*25/2;
    for(i=0;i<n;i++);
    return;
    }

void encender_led();

#pragma code high_vector = 0x08
void high_interrupt(void)
{
_asm
goto encender_led
_endasm
}

#pragma code
#pragma interrupt encender_led
void encender_led()
{
INTCON3bits.INT1IE = 0;
}

void main()
{
TRISA = 0xF0;
TRISB = 0x0F;
PORTA = 0x00;

RCONbits.IPEN = 1;
INTCON2bits.RBIP = 1;
INTCONbits.GIEH = 1;
INTCON3bits.INT1IP = 1;
INTCON3bits.INT1IE = 1;

while(1)
       {
              if(INTCON3bits.INT1IF){
                   INTCON3bits.INT1IF = 0;
            if (LATA) PORTA = 0x00;
            else PORTA = 0x01;
              }
              Delay_ms(10);
      INTCON3bits.INT1IE = 1;
      Delay_ms(10);
}
}


El microcontolador, como se puede ver en las librerias, es un P18F4550. Yo lo tengo sobre una EASYPIC.

Saludos!
C' Est La Vie