Pièce jointe « capitulo1k.sgml »
Téléchargement<sect1 id="timer2" xreflabel="timer2"> <title>Módulo timer2</title> <para>Autor: Santiago Gonzalez</para> <para>Correo: santigoro en gmail.com</para> <para>Aquí se muestran las funciones para trabajar con el timer2 de los PIC16F. </para> <sect2 id="timer2init" xreflabel="timer2_init"> <title>timer2_init</title> <para>Inicializa timer2.</para> <screen> void timer2_init(void); </screen> <para> Pone a 0 la cuenta del timer2 y borra flag de interrupciones. El contador se incrementa en cada ciclo de intrucciones (Freq.Osc. / 4) si no se usa el prescaler. </para> </sect2> <sect2 id="timer2setperiod" xreflabel="timer2_set_period"> <title>timer2_set_period</title> <para>Establece periodo de timer2.</para> <screen> void timer2_set_period(unsigned char set_period); </screen> <para> </para> <para> set_period Establece periodo de timer2, debe ser un valor entre 0 y 255. </para> </sect2> <sect2 id="timer2setprescaler" xreflabel="timer2_set_prescaler"> <title>timer2_set_prescaler</title> <para> Establece el valor del prescaler del timer2. </para> <screen> void timer2_set_prescaler(unsigned char set_presc); </screen> <para>set_presc Establece el valor del prescaler.</para> <para>Las posibles opciones son: </para> <screen> T2_PRESC_DIV_1 T2_PRESC_DIV_4 // Frecuencia de ciclo de instrucciones (FOSC/4) del PIC / 4 T2_PRESC_DIV_16 </screen> </sect2> <sect2 id="timer2setpostscaler" xreflabel="timer2_set_postscaler"> <title>timer2_set_postscaler</title> <para> Establece el valor del postscaler del timer2. </para> <screen> void timer2_set_postscaler(unsigned char set_postsc); </screen> <para>set_postsc Establece el valor del postscaler.</para> <para>Las posibles opciones son: </para> <screen> POSTSC_DIV_1 POSTSC_DIV_2 // TMR2IF en alto cada 2 desbordamientos de TMR2. POSTSC_DIV_3 POSTSC_DIV_4 POSTSC_DIV_5 POSTSC_DIV_6 POSTSC_DIV_7 POSTSC_DIV_8 POSTSC_DIV_9 POSTSC_DIV_10 POSTSC_DIV_11 POSTSC_DIV_12 POSTSC_DIV_13 POSTSC_DIV_14 POSTSC_DIV_15 POSTSC_DIV_16 </screen> <para> La salida del postscaler pone en alto el flag de interrupciones del timer2 (TMR2IF). </para> </sect2> <sect2 id="timer2write" xreflabel="timer2_write"> <title>timer2_write</title> <para>Establece (escribe a TMR2) el valor del registro TMR2.</para> <screen> void timer2_write(unsigned char set_count); </screen> <para>set_count Establece el valor del registro TMR2.</para> </sect2> <sect2 id="timer2read" xreflabel="timer2_read"> <title>timer2_read</title> <para>Lee el valor del registro TMR2.</para> <screen> #define timer2_read() TMR2 </screen> </sect2> <sect2 id="ejemplotimer2" xreflabel="Ejemplo timer2"> <title>Ejemplo de uso del timer2</title> <para> para compilar necesitas los siguientes comandos </para> <para> <screen> Ejemplo de compilacion : ./compila.sh ej_timer2.c 16f877a </screen> </para> <para> ej_timer2.c </para> <screen> /* Ejemplo de utilización de las funciones del módulo TIMER2. válido para la familia 16f87Xa, En este ejemplo se utiliza el timer2 junto con un copntador por software, para hacer un led parpadeante: conectar un led u otra salida a RB7. RB7 se pondrá en estado alto (Vdd) durante aprox. 1 segundo con reloj de 4 MHz, y en estado bajo durante otro segundo. */ #include <pic/p16f877a.h> #include <timer2.h> int main(void) { unsigned char contador; TRISBbits.TRISB7 = 0; PORTBbits.RB7 = 0; timer2_init(); // Inicia timer2 timer2_set_prescaler(PRESC_DIV_16); // Establece prescaler en frecuencia de instrucciones / 16 timer2_set_period(255); // Establece periodo en 255 contador = 0; bucle: while (timer2_read() < 255); // Espera aqui mientras la cuenta del timer < 250 contador = contador + 1; // Incrementa contador if (contador == 255) // Si contador = 255 invierte estado de RB7 { if (PORTBbits.RB7 == 0) PORTBbits.RB7 = 1; else PORTBbits.RB7 = 0; contador = 0; // Reinicia contador } goto bucle; } </screen> </sect1>
Fichiers joints
Pour vous référer aux pièces jointes d'une page, utilisez attachment:filename, comme indiqué ci-dessous dans la liste de fichiers. N'utilisez pas l'URL du lien [get], car elle peut changer et donc être facilement cassée.Vous n'êtes pas autorisé à joindre un fichier à cette page.