CURSO BÁSICO MICROCONTROLADORES PIC
CONFIGURACIÓN BÁSICA FUSIBLES Los fusibles son palabras de configuración que definen las condiciones de funcionamiento del microcontrolador. Algunos fusibles importantes son: XT, HS, RC,LP, INTRC,INTRC_iO MCLR, NOMCLR PROTECT, NOPROTECT WDT, NOWDT PLL TIPO DE OSCILADOR HABILITAR O DESHABILITAR EL RESET EXTERNO PROTEGER CÓDIGO HABILITAR EL PERRO GUARDIAN O NO. HABILITA PLL PARA CIERTOS DISPOSITIVOS.
CONFIGURACIÓN BÁSICA FUSIBLES CONFIGURACIÓN DE OSCILADOR:
INICIO DE PROGRAMA PARA PIC EN CCS COMPILER #include<12f1822.h>//se define el modelo de PIC con el que se va a trabajar. #fuses intrc_io,nomclr,noprotect,nowdt // se definen los fusibles o configuración de arranque #use delay(clock=4m)//se define la frecuencia de operación del microcontrolador.
FUNCIONES PARA GENERAR RETARDOS Función Delay_ms(x) Delay_us(x) Delay_cycles(x) Operación Genera un retardo en milisegundos correspondiente al valor de x. Genera un retardo en microsegundos correspondiente al valor de x. Genera un retardo en ciclos correspondiente al valor de x.
DIRECTIVAS PARA EL CONTROL DE PUERTOS Función #Use fast_io(puerto) #use standard_io(puerto) Operación Indica que el usuario tiene control sobre la determinación de entradas p salidas. Indica que el compilador determina de forma automática cuando un pin se comporta como entrada o como salida.
FUNCIONES PARA CONFIGURACIÓN DE PUERTOS Función Set_tris_X(Valor) Port_x_pullups(Valor) Operación Define la operación del puerto X como entrada o como salida. Si el valor del bit respectivo es cero, el pin se comporta como salida y uno para el caso contrario. Activa las resistencias de pullups internas para el puerto respectivo si las tiene.
MANEJO DE BITS EN CCS EN UNA VARIABLE O PUERTO Función Bit_clear(variable,bit) Bit_set(variable, bit) Bit_test(variable,bit) Operación Pone en cero el bit en la variable seleccionada. Pone en uno el bit en la variable seleccionada. Lee el valor actual del bit dentro de la variable.
FUNCIONES PARA EL CONTROL DE ENTRADAS Y SALIDAS Función Input_x(); Output_x(valor); Bit_test(variable,bit) Output_high(pin_x) Output_low(pin_x) Output_toggle(pin_x) Operación Se lee el valor de todo el puerto x Se escribe el valor en el puerto X. Lee el valor actual del bit dentro de la variable. Pone en 1 el puerto x Pone en 0 el puerto x Invierte el valor anterior del puerto x.
EJERCICIO MANEJO DE PUERTOS En un pic 12f1822 implemente un programa, mediante el cual, se pueda generar una señal de reloj en el pin_a2 con una frecuencia de 1 Hz, siempre y cuando el pin_a3 se encuentre en estado bajo.
MANEJO DE TEMPORIZADORES NOMBRE DEL TIMER TIMER_0 BITS 8-16 según el modelo del PIC FUNCIONES Sirve para el sincronismo de tareas en general. TiMER_1 16 bits Sirve para el sincronismo de tareas y para el calculo de anchos de pulso. TIMER_2 8 bits Sirve para la generación de PWM entre otras funciones.
CALCULOS PARA EL TIMER_0 PERIODO = 255 X ( )*PREESCALADOR FRE.OSC. 4 El valor de x corresponde al valor de inicio del timer. Normalmente se actualiza inmediatamente el timer ha terminado su ciclo normal.
FUNCIONES PARA EL MANEJO DEL TIMER_0 FUNCIÓN Operación Set_timer0(x) Inicializa el timer en el valor X. Get_timer0() Setup_timer_0(T0_internal T0_ div_x) Entrega el valor actual del timer0 en un momento determinado. Inicialización del timer_0. Se define la fuente de reloj del timer y el valor del preescalador.
ACTIVAR INTERRUPCIONES PARA EL MAJEJO DE TIMER FUNCIÓN Operación Enable_interrupts(global); Inicializa el timer en el valor X. Enable_interrupts(int_timer0); Entrega el valor actual del timer0 en un momento determinado.
EJERCICIO CONFIGURACIÓN TIMER_0 En un pic 12f1822 implemente un programa, mediante el cual, se pueda generar una señal de reloj en el pin_a2 con un semiperiodo de aproximadamente 65 ms, mediante el uso de interrupciones.
CONFIGURACIÓN PUERTO SERIAL Mediante el uso de la directiva #use rs232 es posible configurar una comunicación serial de forma rápida y eficiente.
PARÁMETROS DE LA DIRECTIVA #USE RS232 PARÁMETRO BAUD Xmit=pin_x Rcv=pin_x uart1 Stream Enable FUNCIÓN Determina la velocidad de la comunicación. Define el pin de transmisión. Define el pin de recepción. Define el módulo de comunicación en caso de que haya varios. Define el nombre de la comunicación en caso de que haya varias. Pin adicional en caso de establecer comunicación RS485.
FUNCIONES PARA EL MANEJO DE PUERTO SERIAL FUNCIÓN Operación Getc() Putc() printf Captura un dato por puerto serial Escribe un dato por puerto serial Escribe un dato por puerto serial con formato ASCII.
EJERCICIO PUERTO SERIAL Envíe mediante el puerto serial el mensaje Hola Mundo, cada vez que se habilite la función de interrupción por timer_0.
PASOS PARA CONFIGURAR CANALES ANÁLOGOS Defina el reloj para el conversor Análogo Digital. Defina los puertos que operarán en modo Análogo. Defina el canal por el cual se hará la captura. Tome el valor de la conversión análoga digital. Setup_adc(adc_clock_internal) Setup_adc_ports(sAN1 san2) Set_adc_channel(canal) Dato=read_adc();
CONFIGURACIÓN MÓDULO PWM PERIODO = PR2 + 1 ( 4 FRE.OSC. )*PREESCALADOR_TIMER_2 Configure el timer 2 Configure el módulo CCP como PWM. Defina el valor del ciclo de dureza. Setup_timer_2(T2_DIV_BY_1, PR2,1); Setup_CCP!(CCP_PWM); Set_pwm1_duty(valor);
EJERCICIO PUERTOS ANÁLOGOS Lea el voltaje de un potenciometro mediante el puerto análogo An3 de un microcontrolador PIC 12f1822. Utilice el valor de la conversión para variar el ciclo de dureza de una señal pwm en el puerto A2.