1. Ä«¿îÅÍ·Î »ç¿ëÇÑ´Ù
PICÀÇ Å¸À̸Ӵ ÀÔ·ÂÀ¸·Î ³»ºÎ Ŭ·Ï ½ÅÈ£ À̿ܿ¡, ¿ÜºÎ·ÎºÎÅÍÀÇ ÆÞ½º½ÅÈ£¸¦ »ç¿ëÇÒ ¼öµµ ÀÖ´Ù.
±× ÀÔ·Â ÇÉÀÌ RA4(T0CKI)ÀÌ´Ù. À̰ÍÀ» ÀÌ¿ëÇÏ¸é ¿ÜºÎ ½ÅÈ£ÀÇ Ä«¿îÆ®¸¦ ÇÒ ¼ö ÀÖ¾î, Àοø¼ö Ä«¿îÅͳª Á֯ļö Ä«¿îÅÍ µîÀ»
¸¸µé ¼ö ÀÖ´Ù.
¿©±â¼´Â ¿ì¼±, ½¬¿î ¿¹·Î Àοø¼ö³ª À̺¥Æ®ÀÇ Ä«¿îÅ͸¦ ¸¸µå´Â ¹æ¹ý°ú, ºñ±³Àû ¾î·Æ´Ù°í ÇÏ´Â Á֯ļö Ä«¿îÅÍ·Î µ¿ÀÛ½ÃŰ´Â
¹æ¹ýÀ» ¼Ò°³ÇÑ´Ù.
2. PICÀÇ Ä«¿îÅÍÀÇ ³»ºÎ ±¸¼º
½ÇÁ¦ PICÀÇ ³»ºÎ Ä«¿îÅÍ ±¸¼ºÀº ¾Æ·§ ±×¸²°ú °°ÀÌ µÇ¾î ÀÖ´Ù.
¿©±â¼ RTE, RTS, PSA¶ó´Â ½ÅÈ£´Â ³»ºÎÀÇ ÀüȯÁ¦¾î½ÅÈ£·Î, OPTION ·¹Áö½ºÅÍ·Î ÁöÁ¤ÇÑ´Ù. Çѹø ÁöÁ¤ÇÏ¸é ±×´ë·Î Àü¿øÀÌ
OFFµÉ ¶§±îÁö, Áï RESETÀÌ °É¸± ¶§±îÁö´Â À¯ÁöµÈ´Ù.
¿©±â¼ °¢ Àǹ̸¦ ¼³¸íÇÑ´Ù.
¡¤RTS: ÀÔ·Â Àüȯ
Ä«¿îÅÍ¿¡ÀÇ ÀԷ½ÅÈ£¸¦ ³»ºÎ Ŭ·Ï·Î ÇÒ °ÍÀÎÁö, ¿ÜºÎ ½ÅÈ£·Î ÇÒ °ÍÀÎÁö¸¦ ÁöÁ¤Çϴµ¥, Ä«¿îÅÍ·Î »ç¿ëÇÒ ¶§¿¡´Â ¿ÜºÎ·Î ÇÑ´Ù.
¡¤RTE: ¿¡Áö Àüȯ
ÀԷ½ÅÈ£ÀÇ »ó½ÂÀÎÁö ÇϰÀÎÁö, ¾î´À ¿¡Áö¿¡¼ Ä«¿îÆ®¾÷ÇÒ °ÍÀΰ¡¸¦ ÁöÁ¤ÇÑ´Ù. ½ÅÈ£°¡ µé¾î°¬À» ¶§¿¡ count upÇϹǷΠ»ó½Â
¿¡Áö·Î ÇØµÐ´Ù.
¡¤PSA: ÇÁ¸®½ºÄÉÀÏ·¯ Àüȯ
ÇÁ¸®½ºÄÉÀÏ·¯ Ä«¿îÅ͸¦ »ç¿ëÇÒ °ÍÀÎÁö »ç¿ëÇÏÁö ¾ÊÀ» °ÍÀÎÁö¸¦ ÁöÁ¤ÇÑ´Ù. ÇÁ¸®½ºÄÉÀÏ·¯´Â Ä«¿îÅÍ TMR0ÀÇ ¾Õ´Ü¿¡ ºÙ´Â
Ä«¿îÅÍ·Î, °í¼ÓÀ¸·Î µ¿ÀÛÇÒ ¼ö ÀÖ´Ù.
±× ´ë½Å, ÇÁ¸®½ºÄÉÀÏ·¯´Â ÇÁ·Î±×·¥À¸·Î Àо ¼ö ¾øÀ¸¹Ç·Î °³°³ÀÇ Ä«¿îÆ® Ç¥½Ã´Â ÇÒ ¼ö ¾ø°Ô µÈ´Ù.
Áï, ÇÁ¸®½ºÄÉÀÏ·¯¸¦ 8Ä«¿îÆ® µ¿ÀÛÀ¸·Î ÁöÁ¤Çϸé 8Ä«¿îÆ® ´ÜÀ§·Î¹Û¿¡ Ç¥ÇöÇÒ ¼ö ¾ø´Ù´Â °ÍÀÌ´Ù. ÇÁ¸®½ºÄÉÀÏ·¯´Â 8ºñÆ®
Ä«¿îÅÍ·Î µÇ¾î Àֱ⠶§¹®¿¡ ÃÖ´ë 256 Ä«¿îÆ®ÀÇ ÇÁ¸®½ºÄÉÀÏÀÌ °¡´ÉÇÏ´Ù.
ÇÁ¸®½ºÄÉÀÏÀÇ µ¿ÀÛ ÁöÁ¤Àº OPTIN ·¹Áö½ºÅÍÀÇ PS0, 1, 2ÀÇ 3ºñÆ®·Î ÇÑ´Ù. 2, 4, 8, 16, 32, 64, 128, 256ÀÇ 8°èÅëÀÇ
ÇÁ¸®½ºÄÉÀϰªÀ» ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù.
¡¤TMR0: Ä«¿îÅÍ º»Ã¼
³»ºÎ Ä«¿îÅÍ º»Ã¼·Î, 8ºñÆ®ÀÇ Ä«¿îÅÍÀÌ´Ù. µû¶ó¼ À̰͸¸À̸é 256 Ä«¿îÆ®°¡ ÃÖ´ë°ªÀ¸·Î µÈ´Ù.
ÇÁ¸®½ºÄÉÀÏ·¯ÀÇ ÃÖ´ë¿¡ ¸ÂÃß¾î 16ºñÆ® Áï, 65,535 Ä«¿îÆ®°¡ ÃÖ´ë°ªÀ¸·Î µÈ´Ù.
Ä«¿îÅÍ¿¡ÀÇ Á¶°Ç ¼³Á¤ µîÀ» ÇßÀ» ¶§¿¡´Â Ç×»ó TMR0Àº zero clearµÈ´Ù. ¶ÇÇÑ Ä«¿îÅͰ¡ ¿À¹öÇ÷ÎÇßÀ» ¶§¿¡´Â overflow flag·Î
INTCON ·¹Áö½ºÅͳ»ÀÇ T0IF ºñÆ®°¡ "1"·Î µÈ´Ù.
¶ÇÇÑ ÀÎÅÍ·´Æ®¸¦ Çã°¡Çϰí ÀÖÀ¸¸é ÀÌ ½ÃÁ¡¿¡¼ ÀÎÅÍ·´Æ®°¡ ¹ß»ýÇÑ´Ù.
ÀÌ T0IF ºñÆ®´Â ÇÁ·Î±×·¥À¸·Î CLEAR ÇÒ ¶§±îÁö "1" ±×´ë·Î À¯ÁöÇÑ´Ù.
µû¶ó¼, ¿À¹öÇ÷Π󸮷ΠÀ̰ÍÀ» 0 CLEARÇÏÁö ¾ÊÀ¸¸é ´ÙÀ½ overflowÀ» ¾Ë ¼ö ¾ø°Ô µÈ´Ù.
3. Ä«¿îÅÍÀÇ ¼º´É
PICÀÇ ³»ºÎ Ä«¿îÅÍ µ¿ÀÛÀÌ ¾î´À Á¤µµ °í¼ÓÀ¸·Î µ¿ÀÛÇϴ°¡´Â ±Ô°ÝÇ¥¿¡¼ ¾Æ·¡¿Í °°ÀÌ µÈ´Ù. ÀüÁ¦´Â Ŭ·ÏÀ» 10MHz·Î ÇÑ´Ù.
°á·ÐºÎÅÍ ¸»Çϸé ÇÁ¸®½ºÄÉÀÏ·¯°¡ ¾øÀ» ¶§´Â ÃÖ´ë 2.3MHz, ÇÁ¸®½ºÄÉÀÏ·¯°¡ ºÎÂøµÇ¾úÀ» ¶§´Â ÃÖ´ë 18MHz·Î µÈ´Ù.
TMR0 Ä«¿îÅÍ º»Ã¼: ÃÖ¼Ò ÆÞ½ºÆø=(Ŭ·Ï»çÀÌŬ)+20ns=420ns ÁÖ±â=2.38MHz
ÇÁ¸®½ºÄÉÀÏ·¯ º»Ã¼ : ÃÖ¼Ò ÆÞ½ºÆø=50ns(Àü¿ø 5V)=20MHz
ÇÁ¸®½ºÄÉÀÏ·¯¿Í TMR0ÀÇ Á¶ÇÕÀÏ ¤¨:
ÃÖ¼Ò ÆÞ½ºÆø=((Ŭ·Ï»çÀÌŬ)+40ns)/(ÇÁ¸®½ºÄÉÀÏ·¯°ª)
ÇÁ¸®½ºÄÉÀÏ·¯°ªº°·Î °è»êÇϸé,
=440/2=220nsec=4.54MHz
=440/4=110nsec=9.09MHz
=440/8=55nsec=18.1MHz(Ãִ뵿ÀÛ°ª)
=440/16=27.5nsec=36.3MHZ>20MHz
4. À̺¥Æ® Ä«¿îÅÍ·Î ÇÑ´Ù
¸ÕÀú, Ä«¿îÅÍÀÇ µ¿ÀÛ ¸ðµå¸¦ ¼³Á¤Çϱâ À§ÇÑ Ãʱ⼳Á¤ºÎÅÍ ½ÃÀÛÇÑ´Ù.
[Ãʱ⼳Á¤ ·çƾ BSF STATUS,RP0 ;Set page 1
RBPU 0 : PORTBÀÇ PullUp =¾øÀ½ |
´ÙÀ½¿¡ Ä«¿îÅÍ °á°ú¸¦ ÀоîµéÀÌ´Â ¹æ¹ýÀÌ´Ù.
TMR0¸¸À̸é 8ºñÆ® Ä«¿îÅÍÀ̹ǷΠ256 Ä«¿îÆ®°¡ ÃÖ´ë Ä«¿îÆ®¼öÀÌ´Ù. ±×·¯³ª, overflow flag°¡ Àֱ⠶§¹®¿¡ À̰ÍÀ» »ç¿ëÇϸé
ÇÁ·Î±×·¥¿¡ ÀÇÇØ ¿À¹öÇ÷ΠÇ÷¡±×¸¦ Ç×»ó °¨½ÃÇÔÀ¸·Î½á Ä«¿îÅÍÀÇ ¹ÙÀÌÆ®¼ö¸¦ ÀÓÀÇ·Î È®ÀåÇÒ ¼ö ÀÖ´Ù.
¾Æ·¡ ¿¹´Â BYTE0, 1ÀÇ 2¹ÙÀÌÆ® Ä«¿îÅÍ·Î µÈ´Ù.
[¿À¹öÇ÷ΠÇ÷¡±×ÀÇ °¨½Ã ·çƾ] LOOP BTFSS INTCON,T0IF ;get overflow flag |
5. Á֯ļö Ä«¿îÅÍ·Î ÇÑ´Ù
ÀÏÁ¤½Ã°£(¿¹¸¦ µé¸é 100msec)¸¸ ¿ÜºÎ½ÅÈ£ÀÇ Ä«¿îÆ®¸¦ ÇÒ ¼ö ÀÖ´Ù¸é Á֯ļö Ä«¿îÅÍ·Î µÈ´Ù. µû¶ó¼, ¿ÜºÎ¿¡ °ÔÀÌÆ® ȸ·Î¸¦
¼³Ä¡Çϰí, ÀÏÁ¤½Ã°£À» PICÀÇ ¼ÒÇÁÆ®¿þ¾î·Î ¸¸µé¾î ÀÌ °ÔÀÌÆ®ÀÇ °³Æó¸¦ Á¦¾îÇÑ´Ù.
±×·¯³ª, °ï¶õÇÔ Á¡Àº ÀÌ ÀÏÁ¤½Ã°£À» ¸¸µé°í ÀÖ´Â µ¿¾È¿¡µµ Á֯ļö Ä«¿îÆ®´Â µ¿½Ã¿¡ ²÷ÀÓ¾øÀÌ °è¼ÓÇϵµ·Ï ¼ÒÇÁÆ®¿þ¾î¸¦
µ¿ÀÛ½ÃŰÁö ¾ÊÀ¸¸é ¾ÈµÈ´Ù´Â °ÍÀÌ´Ù.
[Ä«¿îÅÍ µ¿ÀÛ ·çƾ]
Ä«¿îÆ® °á°ú¸¦ BYTE1~2ÀÇ 3¹ÙÀÌÆ®·Î ÀúÀåÇÑ´Ù. prescaler ¾øÀ½ÀÇ ¼³Á¤À¸·Î ÀüÇ×ÀÇ Ãʱ⼳Á¤°ú °°Àº ¼³Á¤À¸·Î ÇÑ´Ù.
100msÀÇ ÀÏÁ¤½Ã°£¸¸ Ä«¿îÆ®Çϱâ À§ÇØ °ÔÀÌÆ®°¡ ºñ¾î ÀÖ´Â ½Ã°£À» ÇÁ·Î±×·¥ ½ºÅܼö·Î Á¦¾îÇÑ´Ù. ¿ÜºÎ °ÔÀÌÆ®ÀÇ Á¦¾î´Â
PORTBÀÇ RB0À¸·Î Çϰí ÀÖ´Ù.
MESURE CLRF TMR0 ;counter reset ;¿À¹öÇ÷Π°¨½Ã, Ä«¿îÆ®¾÷ LOOP MOVLW 08DH ;loop counter 141 |
´ÙÀ½Àº ¾×Á¤Ç¥½Ã±â¿Í Á¢¼ÓÇϰí, ±× Á¦¾î ¼ÒÇÁÆ®¿þ¾î¿¡ ´ëÇØ ¼³¸íÇÑ´Ù