8051
AVR
EZLab
PIC
80C196KC
DSP
ARM
VHDL
¸¶ÀÌÅ©·Î¸¶¿ì½º
·Îº¿Ã౸
Battle ·Îº¿
·Îº¿´ëȸ
È޸շκ¿
Embeded Linux
HW/SW °­ÁÂ
RTOS
 
 

2. TIMER0, TIMER1 ´Ù·ç±â

 

¡á TIMER0 ¸ðµâ

    (1) Theory

      1) address : 01H
      2) ¿ªÇÒ : ŸÀÌ¸Ó / Ä«¿îÅÍ·Î »ç¿ë

        ¨çŸÀ̸Ó

          :PIC Ŭ·°À» ·Î ºÐÁÖÇÑ °ª°ú prescaler ¼³Á¤ °ªÀ» °öÇؼ­ »ç¿ë. ´ëºÎºÐ Á¤È®ÇÑ ½Ã°£À» ¸¸µé±â À§ÇØ ¶Ç´Â OS¸¦ ³»ÀåÇϴµ¥ ÀÖ¾î Timer ticÀ¸·Î ¾²±â À§ÇØ ¸¹ÀÌ »ç¿ëµÈ´Ù.

        ¨è°ø½Ä

          TIMER0 = { (Fosc/4) *frescaler + 2 }¿¡ Çѹø¾¿ TMR0°¡ Áõ°¡ÇÑ´Ù. ±×¸®°í TIMER0°¡ FFh ¡æ 00h°¡ µÇ¸é ÀÎÅÍ·´Æ®°¡ ¹ß»ýÇÑ´Ù.

                             

       ¨é»ç¿ë¹ý

        TMR0 °ªÀÌ À§ÀÇ °ø½Ä¿¡ ÀÇÇؼ­ Áõ°¡ÇÏ´Ù°¡ OVERFLOW Áï, FFh ¡æ 00h·Î µÇ´Â ¼ø°£ ÀÎÅÍ·´Æ®°¡ ¹ß»ýÇÏ¿© ÀÎÅÍ·´Æ® ¼­ºñ½º ·çƾÀ» ¼öÇàÇÑ´Ù. ¨êÀÇ ¿¹Á¦¸¦ Âü°íÇϱ⠹ٶõ´Ù.

         

      ¨ëÄ«¿îÅÍ

        PIC µ¿ÀÛ Å¬·°ÀÌ ¾Æ´Ñ RTCCÇÉ¿¡¼­ µé¾î¿À´Â Ŭ·°°ú ³»ºÎ Ŭ·°À» µ¿±â½ÃÄÑ »ç¿ëÇϱ⠶§¹®¿¡ ¾à°£ÀÇ ¿¡·¯°¡ ¹ß»ýÇÑ´Ù.

      ¨ê¿¹Á¦ : ¹«ÇÑ·çÇÁ¸¦ µ¹¸é¼­ Ŭ·° ¸¸µé±â

                  ½ÇÁ¦ È°¿ëÇÒ ¼ö ÀÖ´Â ¿¹Á¦´Â ¾Æ´Ï°í ÀÌ·± ½ÄÀ¸·Î »ç¿ëÇÑ´Ù´Â °ÍÀ» º¸¿©ÁØ ¿¹Á¦ÀÔ´Ï´Ù.

 

#include <H_16C74B.h>
#use Delay(Clock=4000000)

 

long cnt;

 

/////////////////////////////////////////////////////////////

////             interrupt service function                  ////

/////////////////////////////////////////////////////////////

#int_srv
void tmr0_sr(void) {
        if( cnt==10000 ) {
                output_high( pin_b0 ); delay_us(200)
                cnt = 0;
        }
        else {
                cnt++;
        }
        set_timer0(153);
}

/////////////////////////////////////////////////////////////

 

void main(void)
{
        set_timer0(153);
        setup_counters( RTCC_INTERNAL, RTCC_DIV_128 );
        enable_interrupts( RTCC_ZERO ); enable_interrupts( GLOBAL );

        while(1) {
                output_low( pin_b0 );
        }
}

 

 

 

¡á TIMER1 ¸ðµâ

    (1) Theory

      1) address : 01H

      2) ¿ªÇÒ : ŸÀ̸ӷΠ»ç¿ë( 16 bit )

        ¨çŸÀ̸Ó

          PIC Ŭ·°À» ·Î ºÐÁÖÇÑ °ª°ú prescaler ¼³Á¤ °ªÀ» °öÇؼ­ »ç¿ë. ´ëºÎºÐ ½Ã°£ Áö¿¬ÇÏ¿© Á¤È®ÇÑ ½Ã°£À» ¸¸µé±â À§ÇØ ¶Ç´Â OS¸¦ ³»ÀåÇϴµ¥ ÀÖ¾î Timer ticÀ¸·Î ¾²±â À§ÇØ ¸¹ÀÌ »ç¿ëµÈ´Ù.

        ¨è°ø½Ä

          TIMER1 = { (Fosc/4) * frescaler }ÀÌ´Ù. ÀÎÅÍ·´Æ® ¹ß»ý ½ÃÁ¡Àº TIMER1ÀÌ FFFF( hex °ª ) ¡æ 0000( hex °ª )À¸·Î º¯ÇÒ ¶§ÀÌ´Ù.

  

      ¨é»ç¿ë¹ý

        TMR0 °ªÀÌ À§ÀÇ °ø½Ä¿¡ ÀÇÇؼ­ Áõ°¡ÇÏ´Ù°¡ OVERFLOW Áï, FFh ¡æ 00h·Î µÇ´Â ¼ø°£ ÀÎÅÍ·´Æ®°¡ ¹ß»ýÇÏ¿© ÀÎÅÍ·´Æ® ¼­ºñ½º ·çƾÀ» ¼öÇàÇÑ´Ù. ¨êÀÇ ¿¹Á¦¸¦ Âü°íÇϱ⠹ٶõ´Ù.

      ¨ê¿¹Á¦ : Àü¾Ð Display Çϱâ

 

#include "H_16C73B.h"

#include "H_V_DSP.h"

#use delay(clock=4000000)

#include "F_4TADC.c"

#include "F_7SEG.c"

 

#define         GAIN    139

 

long tmr1_cnt;

 

/////////////////////////////////////////////////////////////

////             interrupt service function                  ////

/////////////////////////////////////////////////////////////

#INT_TIMER1
void INT_TMR1_SVR(void)
{
        // TIMER 1 STOP
        TMR1IF = 0; TMR1ON = 0;       // Á¦°¡ ¸¸µç H_16c74B.h" ÆÄÀÏ ¶«¿¡ °¡´ÉÇÔ

        tmr1_cnt++;
        // 2ÃÊ¿¡ Çѹø¾¿ V°ªÀ» °»½Å
        if( tmr1_cnt==40 ) {
                V = ( (float) adc_value/255 )*GAIN;  // V, I, adc_value´Â H_V_DSP.h³»¿¡ Á¤ÀǵÊ.
                I = V;
                tmr1_cnt=0;
        }
        // TIMER 1 START
        set_timer1(5536); // 50 [ms] ¸¶´Ù interrupt ¹ß»ý
        TMR1ON = 1;      // Á¦°¡ ¸¸µç H_16c74B.h" ÆÄÀÏ ¶«¿¡ °¡´ÉÇÔ
}

/////////////////////////////////////////////////////////////

 

void main(void)
{
        ////////////////////////////////////////////////////
        ///         timer1 interrupt setting                 ///
        ////////////////////////////////////////////////////
        setup_timer_1(T1_INTERNAL|T1_DIV_BY_1);
        enable_interrupts(INT_TIMER1);
        set_timer1(5536);
        enable_interrupts(global);

 

        while(1) {

                // aver_adc_4time()ÇÔ¼ö´Â ÀÎÅ©·çµåµÈ F_4TADC.c ÆÄÀÏ¿¡ ÀÖÀ½.
                adc_value = aver_adc_4time();   

                // get_value(), display() ÇÔ¼ö´Â ÀÎÅ©·çµåµÈ F_7SEG.c ÆÄÀÏ¿¡ ÀÖÀ½.
                get_value(I);
                display();
        }

 

 

À§ÀÇ ¿¹Á¦´Â Á¦°¡ Àü¾Ð °ªÀ» Display Çϱâ À§ÇØ ¸¸µç ¼Ò½ºÀÔ´Ï´Ù. Á÷Á¢ ÄÄÆÄÀÏÇÏ¸é ¿¡·¯°¡ ¸¹ÀÌ ³ª°ÚÁÒ~ ¿Ö³ª±¸¿ä! ÀÎÅ©·çµå ÆÄÀÏÀÌ ¾ø±â ¶§¹®ÀÔ´Ï´Ù. Àû´çÇÑ ¿¹Á¦ °°¾Æ¼­ ¿Ã·Á ³õ¾Ò½À´Ï´Ù. Âü°í¸¸ ÇϽñ⠹ٶø´Ï´Ù. ´ÙÀ½ °­Á¿¡´Â ÀÎÅÍ·´Æ®¸¦ ¼ÂÆà ÇÏ¿´À» ¶§ ÀÎÅÍ·´Æ® ¼­ºñ½º ·çƾÀ» ¾î¶»°Ô ¸¸µå´ÂÁö¿¡ ´ëÇØ °­ÀÇÇÏ°Ú½À´Ï´Ù.

* »õ·Î³ª¿Â ÇÔ¼ö

    set_timer0(), setup_counter(), enable_interrupts(), setup_timer_1(), set_timer1() ÇÔ¼ö³ª ¾ÕÀ¸·Î ³ª¿À°Ô µÉ ÇÔ¼öÀÇ ÀÚ¼¼ÇÑ »ç¿ë¹ýÀº °Ô½ÃÆÇ¿¡ °ø°³ÇÑ ¸Å´º¾ó Áß Built-In Functions Command Summary ºÎºÐ¿¡ ÀÚ¼¼È÷ ¼³¸íµÇ¾î ÀÖ½À´Ï´Ù. Âü°íÇϽñ⠹ٶø´Ï´Ù. ¸¸ÀÏ Àß ¸ð¸£½Ã´Â ³»¿ëÀÌ ÀÖÀ¸½Ã¸é °Ô½ÃÆÇ¿¡ Áú¹® ³»¿ëÀ» ¿Ã·Á Áֽñ⠹ٶø´Ï´Ù.





»óÈ£ : (ÁÖ) ·Îº¸ºí·° »ç¾÷ÀÚµî·Ï¹øÈ£:214-86-56219 Åë½ÅÆǸž÷½Å°í19-2544 ´ëÇ¥: ½Å´ë¼· ÀüÈ­:(02)2679-8556 Fax :(02)2679-8557 [°³ÀÎÁ¤º¸Ã³¸®¹æħ]
º»»ç : °æ±âµµ ºÎõ½Ã ¿ø¹Ì±¸ ¾à´ëµ¿ ºÎõ Å×Å©³ëÆÄÅ© 401µ¿ 502È£     ¼­¿ï»ç¹«¼Ò : ¼­¿ï½Ã ¿µµîÆ÷±¸ ¹®·¡µ¿ 4°¡ 8-1 4Ãþ
Copyright(C) 2004, (ÁÖ) ·Îº¸ºí·° ½Ã½ºÅÛÁî All Rights Reserved E-Mail : WebMaster