Attachment 'capitulo1h.sgml'

Download

        <sect1 id="interrupt" xreflabel="interrupt">
                <title>M&oacute;dulo Interrupci&oacute;n</title>
                <para> Este m&oacute;dulo genera las funciones necesarias para trabajar con interrupciones.</para>

                <para>
                <screen>
        #include &lt;interrupt.h>
                </screen>
                </para>

                <sect2 id="isrmain" xreflabel="_ISR_MAIN">
                <title>_ISR_MAIN</title>
                <para> 
                        _ISR_MAIN Define la funci&oacute;n interrupci&oacute;n principal, esta funci&oacute;n se ejecutar&aacute; cuando acurra cualquier interrupci&oacute;n.
                </para>
                <para>
                        Puede escoger cualquier nombre para la funci&oacute;n interrupci&oacute;n principal.se utiliza: </para>
                <screen>
        #include &lt;interrupt.h>

        _ISR_MAIN void nombre_de_la_funcion(void);

        //Esta funci&oacute;n se ejecutar&aacute; cuando ocurra cualquier interrupci&oacute;n.
        //Dentro de su c&oacute;digo se deber&aacute; verivicar los FLAG, para saber 
        //que interrupci&oacute;n ocurri&oacute;.
        void nombre_de_la_funcion(void)
        { 
                //c&oacute;digo gen&eacute;rico
                //cuando termines debes limpiar el FLAG de la interrupci&oacute;n que usaste
        }

        int main(void)
        { 
                //En la funci&oacute;n principal se deber&aacute; habilitar la interrupci&oacute;n GLOBAL
        }
                </screen>
                </sect2>

                <sect2 id="isrmain1" xreflabel="ISR_MAIN">
                <title>ISR_MAIN</title>
                <para> 
                        ISR_MAIN Define la funci&oacute;n/c&oacute;digo interrupci&oacute;n principal, esta funci&oacute;n/c&oacute;digo se ejecutar&aacute; cuando acurra cualquier interrupci&oacute;n.
                </para>
                <para>
                        Puede escoger cualquier nombre para la funci&oacute;n/c&oacute;digo interrupci&oacute;n principal. se utiliza: </para>
                <screen>
        #include &lt;interrupt.h>

        //Esta funci&oacute;n/c&oacute;digo se ejecutar&aacute; cuando acurra cualquier interrupci&oacute;n.
        //Dentro de su c&oacute;digo se deber&aacute; verivicar los FLAG, para saber 
        //que interrupci&oacute;n ocurri&oacute;.
        ISR_MAIN(nombre_de_la_funcion)
        { 
                //c&oacute;digo gen&eacute;rico
                //cuando termines debes limpiar el FLAG de la interrupci&oacute;n que usaste
        }
        
        int main(void)
        { 
                //En la funci&oacute;n principal se deber&aacute; habilitar la interrupci&oacute;n GLOBAL
        }
                </screen>
                </sect2>

                <sect2 id="enableintglobal" xreflabel="enable_int_global">
                <title>enable_int_global</title>
                <para> Habilita globalmente todas las interrupciones. </para>
                <screen>
        void enable_int_global(void);

        ejemplo:
        enable_int_global();
                </screen>
                </sect2>

                <sect2 id="disableintglobal" xreflabel="disable_int_global">
                <title>disable_int_global</title>
                <para> Deshabilita globalmente todas las interrupciones. </para>
                <screen>
        void disable_int_global(void);

        ejemplo:
        disable_int_global();
                </screen>
                </sect2>

                <sect2 id="intexterna" xreflabel="interrupcion externa">
                <title>Interrupci&oacute;n Externa</title>
                <para> Las funciones para trabajar con la interrupci&oacute;n externa (RB0) son:</para>
                <sect3 id="enableintext" xreflabel="enable_int_ext">
                <title>enable_int_ext</title>
                <para>Habilita la interrupci&oacute;n externa</para>
                <screen>
        #define  H_TO_L    0
        #define  L_TO_H    1

        void    enable_int_ext(BYTE flanco);

        ejemplo:
        enable_int_global(L_TO_H);
                </screen>
                <para>H_TO_L indica una interrupci&oacute;n activada por el flanco de bajada</para>
                <para>L_TO_H indica una interrupci&oacute;n activada por el flanco de subida</para>
                </sect3>
                <sect3 id="disableintext" xreflabel="disable_int_ext">
                <title>disable_int_ext</title>
                <para>Deshabilita la interrupci&oacute;n externa</para>
                <screen>
        void    disable_int_ext(void);
                </screen>
                <para>Al deshabilitar la interrupci&oacute;n no modifica el habilitador de interrupci&oacute;n global</para>
                </sect3>
                <sect3 id="intextflag" xreflabel="int_ext_flag">
                <title>int_ext_flag</title>
                <para>Devuelve el estado actual del flag indicador de interrupci&oacute;n externa</para>
                <screen>
        BYTE    int_ext_flag(void);
                </screen>
                <para>El uso de esta funci&oacute;n no modifica el flag</para>
                </sect3>
                <sect3 id="intextfreeflag" xreflabel="int_ext_free_flag">
                <title>int_ext_free_flag</title>
                <para>Limpia el flag indicador de interrupci&oacute;n externa</para>
                <screen>
        void    int_ext_free_flag(void);
                </screen>
                <para>El uso de esta funci&oacute;n modifica el flag, poniendolo a 0</para>
                </sect3>
                </sect2>

                <sect2 id="inttimer0" xreflabel="interrupcion TIMER0">
                <title>Interrupci&oacute;n TIMER0</title>
                <para> Las funciones para trabajar con la interrupci&oacute;n por desbordamiento del TIMER0 son:</para>
                <sect3 id="enableinttimer0" xreflabel="enable_int_timer0">
                <title>enable_int_timer0</title>
                <para>Habilita la interrupcion por desbordamiento del TIMER0</para>
                <screen>
        void    enable_int_timer0(void);
                </screen>
                <para>Para que esta interrupci&oacute;n se habilite tambien deber&aacute; activarse la interrupci&oacute;n global</para>
                </sect3>
                <sect3 id="disableinttimer0" xreflabel="disable_int_timer0">
                <title>disable_int_timer0</title>
                <para>Deshabilita la interrupci&oacute;n por desbordamiento del TIMER0</para>
                <screen>
        void    disable_int_timer0(void);
                </screen>
                <para>Al deshabilitar la interrupci&oacute;n no modifica el habilitador de interrupci&oacute;n global</para>
                </sect3>
                <sect3 id="inttimer0flag" xreflabel="int_timer0_flag">
                <title>int_timer0_flag</title>
                <para>Devuelve el estado actual del flag indicador de interrupci&oacute;n por desbordamiento de TIMER0</para>
                <screen>
        BYTE    int_timer0_flag(void);
                </screen>
                <para>El uso de esta funci&oacute;n no modifica el flag</para>
                </sect3>
                <sect3 id="inttimer0freeflag" xreflabel="int_timer0_free_flag">
                <title>int_timer0_free_flag</title>
                <para>Limpia el flag indicador de interrupci&oacute;n por desbordamiento del TIMER0</para>
                <screen>
        void    int_timer0_free_flag(void);
                </screen>
                <para>El uso de esta funci&oacute;n modifica el flag, poniendolo a 0</para>
                </sect3>
                </sect2>

                <sect2 id="intrb4to7" xreflabel="interrupcion RB4 to RB7">
                <title>Interrupci&oacute;n RB4 to RB7</title>
                <para> Las funciones para trabajar con la interrupci&oacute;n por cambio de estado de los pines RB4 a RB7 son:</para>
                <sect3 id="enableintrb4to7" xreflabel="enable_int_rb4to7">
                <title>enable_int_rb4to7</title>
                <para>Habilita la interrupcion por cambio de estado de los pines de Rb4 a RB7</para>
                <screen>
        void    enable_int_rb4to7(void);
                </screen>
                <para>Para que esta interrupci&oacute;n se habilite tambien deber&aacute; activarse la interrupci&oacute;n global</para>
                </sect3>
                <sect3 id="disableintrb4to7" xreflabel="disable_int_rb4to7">
                <title>disable_int_rb4to7</title>
                <para>Deshabilita la interrupci&oacute;n por cambio de estado de los pines de RB4 a RB7</para>
                <screen>
        void    disable_int_rb4to7(void);
                </screen>
                <para>Al deshabilitar la interrupci&oacute;n no modifica el habilitador de interrupci&oacute;n global</para>
                </sect3>
                <sect3 id="intrb4to7flag" xreflabel="int_rb4to7_flag">
                <title>int_rb4to7_flag</title>
                <para>Devuelve el estado actual del flag indicador de interrupci&oacute;n por cambio de estado de los pines de RB4 a RB7</para>
                <screen>
        BYTE    int_rb4to7_flag(void);
                </screen>
                <para>El uso de esta funci&oacute;n no modifica el flag</para>
                </sect3>
                <sect3 id="intrb4to7freeflag" xreflabel="int_rb4to7_free_flag">
                <title>int_rb4to7_free_flag</title>
                <para>Limpia el flag indicador de interrupci&oacute;n por cambio de estado de los pines de RB4 a RB7</para>
                <screen>
        void    int_rb4to7_free_flag(void);
                </screen>
                <para>El uso de esta funci&oacute;n modifica el flag, poniendolo a 0</para>
                </sect3>
                </sect2>

                <sect2 id="intuart" xreflabel="interrupcion Rx UART">
                <title>Interrupci&oacute;n Rx UART</title>
                <para> Las funciones para trabajar con la interrupci&oacute;n por recepcion de caracter en el UART son:</para>
                <sect3 id="enableintuart" xreflabel="enable_int_uart">
                <title>enable_int_uart</title>
                <para>Habilita la interrupci&oacute;n por recepcion de caracter en el UART</para>
                <screen>
        void    enable_int_uart(void);
                </screen>
                <para>Para que esta interrupci&oacute;n se habilite tambien deber&aacute; activarse la interrupci&oacute;n global</para>
                </sect3>
                <sect3 id="disableintuart" xreflabel="disable_int_uart">
                <title>disable_int_uart</title>
                <para>Deshabilita la interrupci&oacute;n por recepcion de caracter en el UART</para>
                <screen>
        void    disable_int_uart(void);
                </screen>
                <para>Al deshabilitar la interrupci&oacute;n no modifica el habilitador de interrupci&oacute;n global</para>
                </sect3>
                <sect3 id="intuartflag" xreflabel="int_uart_flag">
                <title>int_uart_flag</title>
                <para>Devuelve el estado actual del flag indicador de interrupci&oacute;n por recepcion de caracter en el UART</para>
                <screen>
        BYTE    int_uart_flag(void);
                </screen>
                <para>El uso de esta funci&oacute;n no modifica el flag, es mas no puede.</para>
                </sect3>
                <sect3 id="intuartfreeflag" xreflabel="int_uart_free_flag">
                <title>int_uart_free_flag</title>
                <para>esta funci&oacute;n no existe</para>
                <para>El flag no se limpiar&aacute; hasta leer con la funci&oacute;n uart_getc el caracter entrante, esta funci&oacute;n tiene que colocarse dentro de la funci&oacute;n interrupci&oacute;n pues de lo contrario el flag nunca se limpiar&aacute; y nunca saldras de la funci&oacute;n interrupci&oacute;n, pues esta se invocar&aacute; hasta el fin de los tiempos.</para>
                </sect3>
                </sect2>

                <sect2 id="intadc" xreflabel="interrupcion ADC">
                <title>Interrupci&oacute;n ADC</title>
                <para> Las funciones para trabajar con la interrupci&oacute;n por finalizaci&oacute;n de la conversi&oacute;n anal&oacute;gica a digital son:</para>
                <sect3 id="enableintadc" xreflabel="enable_int_adc">
                <title>enable_int_adc</title>
                <para>Habilita la interrupci&oacute;n por finalizaci&oacute;n de la conversi&oacute;n analogica a digital</para>
                <screen>
        void    enable_int_adc(void);
                </screen>
                <para>Para que esta interrupci&oacute;n se habilite tambien deber&aacute; activarse la interrupci&oacute;n global</para>
                </sect3>
                <sect3 id="disableintadc" xreflabel="disable_int_adc">
                <title>disable_int_adc</title>
                <para>Deshabilita la interrupci&oacute;n por finalizacion de la conversi&oacute;n anal&oacute;gica a digital</para>
                <screen>
        void    disable_int_adc(void);
                </screen>
                <para>Al deshabilitar la interrupci&oacute;n no modifica el habilitador de interrupci&oacute;n global</para>
                </sect3>
                <sect3 id="intadcflag" xreflabel="int_adc_flag">
                <title>int_adc_flag</title>
                <para>Devuelve el estado actual del flag indicador de interrupci&oacute;n por rfinalizaci&oacute;n de la conversi&oacute;n anal&oacute;gica a digital</para>
                <screen>
        BYTE    int_adc_flag(void);
                </screen>
                <para>El uso de esta funci&oacute;n no modifica el flag.</para>
                </sect3>
                </sect2>

                <sect2 id="intcomp" xreflabel="interrupcion COMPARADOR">
                <title>Interrupci&oacute;n Comparador</title>
                <para> Las funciones para trabajar con la interrupci&oacute;n por finalizaci&oacute;n de comparaci&oacute;n son:</para>
                <sect3 id="enableintcomp" xreflabel="enable_int_comp">
                <title>enable_int_comp</title>
                <para>Habilita la interrupci&oacute;n por finalizaci&oacute;n de la comparaci&oacute;n</para>
                <screen>
        void    enable_int_comp(void);
                </screen>
                <para>Para que esta interrupci&oacute;n se habilite tambien deber&aacute; activarse la interrupci&oacute;n global</para>
                </sect3>
                <sect3 id="disableintcomp" xreflabel="disable_int_comp">
                <title>disable_int_comp</title>
                <para>Deshabilita la interrupci&oacute;n por finalizaci&oacute;n de la comparaci&oacute;n</para>
                <screen>
        void    disable_int_comp(void);
                </screen>
                <para>Al deshabilitar la interrupci&oacute;n no modifica el habilitador de interrupci&oacute;n global</para>
                </sect3>
                <sect3 id="intcompflag" xreflabel="int_comp_flag">
                <title>int_comp_flag</title>
                <para>Devuelve el estado actual del flag indicador de interrupci&oacute;n por r finalizaci&oacute;n de la comparaci&oacute;n</para>
                <screen>
        BYTE    int_comp_flag(void);
                </screen>
                <para>El uso de esta funci&oacute;n no modifica el flag.</para>
                </sect3>
                </sect2>

                <sect2 id="ejemplomodulointext" xreflabel="Ejemplo_Modulo_int_ext">
                <title>Ejemplo de M&oacute;dulo Interrupcion Externa</title>
                <para> Para compilar necesitas los siguientes comandos </para>
                <para>
                <screen>
Ejemplo de compilacion : ./compila.sh ej_intext 16f877a
                </screen>
                </para>
                <para> ej_intext.c </para>

                <screen>
        #include &lt;pic/p16f877a.h>

        #define FOSC_HZ 20000000

        #include &lt;pinio.h>
        #include &lt;delayms.h>
        #include &lt;interrupt.h>

        BYTE bandera=0;

        void funcion_con_mucho_codigo(void)
        {
                //codigo
                bandera=0;
        }

        ISR_MAIN(funcion_interrupcion_global)
        { 
                if(int_ext_flag()==TRUE)
                {
                        bandera=1;
                        int_ext_free_flag();
                }
        }

        int main (void)
        {
                delayms(100);
        
                enable_int_ext(L_TO_H);
                enable_int_global();

                set_pullup_portb(TRUE);

                while(TRUE)
                {
                        if(bandera==1) funcion_con_mucho_codigo();
                }

                disable_int_ext();
                return 0;
        }
                </screen>
                </sect2>                
                
        </sect1>

Attached Files

To refer to attachments on a page, use attachment:filename, as shown below in the list of files. Do NOT use the URL of the [get] link, since this is subject to change and can break easily.
  • [get | view] (2009-03-02 21:07:01, 0.5 KB) [[attachment:GenerarDoc.sh]]
  • [get | view] (2009-03-02 21:49:40, 642.0 KB) [[attachment:GtkPicGccAbout.eps]]
  • [get | view] (2009-03-02 21:50:10, 28.2 KB) [[attachment:GtkPicGccAbout.png]]
  • [get | view] (2009-03-02 21:47:10, 4.9 KB) [[attachment:adc.eps]]
  • [get | view] (2009-03-02 21:47:24, 0.9 KB) [[attachment:adc.png]]
  • [get | view] (2009-03-02 21:00:02, 0.1 KB) [[attachment:capitulo1.sgml]]
  • [get | view] (2009-03-02 21:00:35, 1.7 KB) [[attachment:capitulo1a.sgml]]
  • [get | view] (2009-03-02 21:00:50, 1.7 KB) [[attachment:capitulo1b.sgml]]
  • [get | view] (2009-03-02 21:01:15, 2.8 KB) [[attachment:capitulo1c.sgml]]
  • [get | view] (2009-03-02 21:01:25, 7.0 KB) [[attachment:capitulo1d.sgml]]
  • [get | view] (2009-03-02 21:01:33, 5.0 KB) [[attachment:capitulo1e.sgml]]
  • [get | view] (2009-03-02 21:01:41, 4.9 KB) [[attachment:capitulo1f.sgml]]
  • [get | view] (2009-03-02 21:02:02, 5.7 KB) [[attachment:capitulo1g.sgml]]
  • [get | view] (2009-03-02 21:02:26, 12.8 KB) [[attachment:capitulo1h.sgml]]
  • [get | view] (2009-03-02 21:02:37, 4.4 KB) [[attachment:capitulo1i.sgml]]
  • [get | view] (2009-03-02 21:02:46, 6.3 KB) [[attachment:capitulo1j.sgml]]
  • [get | view] (2009-03-02 21:02:54, 4.3 KB) [[attachment:capitulo1k.sgml]]
  • [get | view] (2009-03-02 21:03:01, 1.6 KB) [[attachment:capitulo1l.sgml]]
  • [get | view] (2009-03-02 21:03:14, 0.2 KB) [[attachment:capitulo2.sgml]]
  • [get | view] (2009-03-02 21:03:32, 2.6 KB) [[attachment:capitulo2a.sgml]]
  • [get | view] (2009-03-02 21:03:44, 2.8 KB) [[attachment:capitulo2b.sgml]]
  • [get | view] (2009-03-02 21:04:00, 22.0 KB) [[attachment:capitulo2c.sgml]]
  • [get | view] (2009-03-02 21:04:22, 0.3 KB) [[attachment:capitulo3.sgml]]
  • [get | view] (2009-03-02 21:04:59, 0.9 KB) [[attachment:capitulo3a.sgml]]
  • [get | view] (2009-03-02 21:05:11, 0.2 KB) [[attachment:capitulo4.sgml]]
  • [get | view] (2009-03-02 21:05:21, 1.4 KB) [[attachment:capitulo4a.sgml]]
  • [get | view] (2009-03-02 21:05:33, 2.7 KB) [[attachment:capitulo4b.sgml]]
  • [get | view] (2009-03-02 21:05:51, 5.6 KB) [[attachment:capitulo4c.sgml]]
  • [get | view] (2009-03-02 21:06:00, 0.2 KB) [[attachment:capitulo5.sgml]]
  • [get | view] (2009-03-02 21:06:20, 9.1 KB) [[attachment:capitulo5a.sgml]]
  • [get | view] (2009-03-02 21:49:04, 5.6 KB) [[attachment:compare.eps]]
  • [get | view] (2009-03-02 21:46:31, 1.1 KB) [[attachment:compare.png]]
  • [get | view] (2009-03-02 21:49:17, 7.6 KB) [[attachment:eeprom.eps]]
  • [get | view] (2009-03-02 21:48:01, 1.2 KB) [[attachment:eeprom.png]]
  • [get | view] (2009-03-02 21:06:33, 0.8 KB) [[attachment:ejemplos.sgml]]
  • [get | view] (2009-03-02 21:06:48, 1.7 KB) [[attachment:faq.sgml]]
  • [get | view] (2009-03-02 21:48:51, 6.3 KB) [[attachment:flash.eps]]
  • [get | view] (2009-03-02 21:50:20, 1.0 KB) [[attachment:flash.png]]
  • [get | view] (2009-03-02 21:50:40, 5.0 KB) [[attachment:i2c.eps]]
  • [get | view] (2009-03-02 21:50:50, 0.9 KB) [[attachment:i2c.png]]
  • [get | view] (2009-03-02 21:50:59, 8.8 KB) [[attachment:interrupt.eps]]
  • [get | view] (2009-03-02 21:51:09, 1.2 KB) [[attachment:interrupt.png]]
  • [get | view] (2009-03-02 21:07:16, 0.6 KB) [[attachment:introduccion.sgml]]
  • [get | view] (2009-03-02 21:07:33, 1.8 KB) [[attachment:introducciona.sgml]]
  • [get | view] (2009-03-02 21:07:43, 1.1 KB) [[attachment:introduccionb.sgml]]
  • [get | view] (2009-03-02 21:08:06, 1.6 KB) [[attachment:introduccionc.sgml]]
  • [get | view] (2009-03-02 21:08:17, 27.5 KB) [[attachment:introducciond.sgml]]
  • [get | view] (2009-03-02 21:08:29, 1.0 KB) [[attachment:introduccione.sgml]]
  • [get | view] (2009-03-02 21:08:42, 64.9 KB) [[attachment:introduccionf.sgml]]
  • [get | view] (2009-03-02 21:51:21, 6.1 KB) [[attachment:pinio.eps]]
  • [get | view] (2009-03-02 21:51:39, 1.0 KB) [[attachment:pinio.png]]
  • [get | view] (2009-03-02 21:51:54, 4.8 KB) [[attachment:pwm.eps]]
  • [get | view] (2009-03-02 21:52:03, 0.9 KB) [[attachment:pwm.png]]
  • [get | view] (2009-03-02 21:09:06, 1.1 KB) [[attachment:referencias.sgml]]
  • [get | view] (2009-03-02 22:26:32, 4.8 KB) [[attachment:spi.eps]]
  • [get | view] (2009-03-02 22:26:54, 0.8 KB) [[attachment:spi.png]]
  • [get | view] (2009-03-02 22:27:21, 7.6 KB) [[attachment:system.eps]]
  • [get | view] (2009-03-02 22:27:31, 1.2 KB) [[attachment:system.png]]
  • [get | view] (2009-03-02 22:27:42, 7.3 KB) [[attachment:timer0.eps]]
  • [get | view] (2009-03-02 22:28:00, 1.1 KB) [[attachment:timer0.png]]
  • [get | view] (2009-03-02 22:28:32, 7.1 KB) [[attachment:timer1.eps]]
  • [get | view] (2009-03-02 22:28:12, 1.0 KB) [[attachment:timer1.png]]
  • [get | view] (2009-03-02 22:28:45, 7.4 KB) [[attachment:timer2.eps]]
  • [get | view] (2009-03-02 22:28:55, 1.1 KB) [[attachment:timer2.png]]
  • [get | view] (2009-03-02 22:26:07, 587.2 KB) [[attachment:tutorial.pdf]]
  • [get | view] (2009-03-02 22:25:35, 2215.3 KB) [[attachment:tutorial.ps]]
  • [get | view] (2009-03-02 21:09:56, 4.4 KB) [[attachment:tutorial.sgml]]
  • [get | view] (2009-03-02 22:29:05, 5.3 KB) [[attachment:uart.eps]]
  • [get | view] (2009-03-02 22:29:16, 0.9 KB) [[attachment:uart.png]]
 All files | Selected Files: delete move to page copy to page

You are not allowed to attach a file to this page.

Heberge par Ikoula