ÇнÀ¸ñÇ¥    1

ÇнÀÁÖÁ¦    1

¿¹½À³»¿ë    1

½Ç½À¹æ¹ý    1

°ú    Á¦    1

PWM1(16ºñÆ®)

ÇнÀ¸ñÇ¥

¡°Å¸À̸Ó/Ä«¿îÅÍ1¡±À» ÀÌ¿ëÇØ »ç°¢ÆÞ½º(PWM1)¸¦ ¸¸µç´Ù. À̸¦ PC¿¡¼­ RS232¸¦ ÀÌ¿ëÇØ ÁÖ±â(hz)¿Í µàƼ(Duty)¸¦ Á¶ÀýÇÑ´Ù.

ÇнÀÁÖÁ¦

ÀÌ ³»¿ëÀº ¡°AVR Atmega128 ¸¶½ºÅÍ, À±´ö¿ë, Ohm»ç, P517~P523¡±¸¦ ÂüÁ¶ ÇÏ¿´½À´Ï´Ù.

16bit Phase Correct PWM Mode ·Î ÆÞ½º¸¦ ¸¸µç´Ù. Ãâ·ÂÀº PB6Æ÷Æ® ÀÌ´Ù.

[AVR ÇÁ·Î±×·¥ ³»·Á¹Þ±â]

[PC ÇÁ·Î±×·¥ ³»·Á¹Þ±â]

¿¹½À³»¿ë

Atmega128(L) µ¥ÀÌÅÍºÏ P125~P140À» ÂüÁ¶ÇÑ´Ù.

¿øÇÏ´Â ÆÞ½º¸¦ ¾ò±â À§Çؼ­ TCCR1A, TCCR1B¸¦ °áÁ¤Çϰí Hz¿Í duty¿¡ µû¶ó OCR1A, OCR1B¸¦ °áÁ¤ÇÑ´Ù.

·¹Áö½ºÅÍ TCCR1A=0x21´Â ´ÙÀ½°ú °°ÀÌ ±¸¼ºµÈ´Ù. (µ¥ÀÌÅÍºÏ P129)

7

6

5

4

3

2

1

0

COM1A1

COM1A0

COM1B1

COM1B0

COM1C1

COM1C0

WGM11

WGM10

0

0

1

0

0

0

0

1

Compare Output Mode for Channel A

(OC1A)PB5

Compare Output Mode for Channel B

(OC1B)PB6

Compare Output Mode for Channel C

(OC2/OC1C)PB7

Waveform Generation Mode

Table 60

Table 60

Table 60

Table 61

2

1

¿©±â ½ÇÇè¿¡¼­´Â PB6(OC1B)·Î °á°ú¸¦ Ãâ·ÂÇÑ´Ù.

 

·¹Áö½ºÅÍ TCCR1B=0x13´Â ´ÙÀ½°ú °°ÀÌ ±¸¼ºµÈ´Ù. (µ¥ÀÌÅÍºÏ P132)

7

6

5

4

3

2

1

0

ICNC1

ICES1

-

WGM13

WGM12

CS12

CS11

CS10

0

0

0

1

0

0

1

1

¾Æ·¡ÂüÁ¶

¾Æ·¡ÂüÁ¶

¾Æ·¡ÂüÁ¶

Waveform Generation Mode

Clock Select

 

 

 

Table 61

Table 62

1

3

Bit7 – ICNCn: Input Capture Noise Canceler

Bit6 – ICESn: Input Capture Edge Select

Bit5 – Reserved Bit

 

Table 60 (µ¥ÀÌÅÍºÏ P131)

COMnA1/COMnB1/

COMnC1

COMnA0/COMnB0/

COMnC0

¼³  ¸í

0

0

Normal Port Operatio, OCnA/OCnB/OCnC

disconnected

0

1

WGMn3=0: Normal port operation,

OCnA/OcnB/OCnC disconnected.

WGMn3=1: Toggle OcnA on compare

Match, OCnB/OCnC reserved.

OCnA/OcnB/OCnC disconnected.

1

0

Clear OCnA/OCnB/OCnC on compare

Match when up-counting. Set

OCnA/OCnB/OCnC on compare match

when downcounting.

1

1

Set OCnA/OCnB/OCnC on compare match

when up-counting. Clear

OCnA/OCnB/OCnC on compare match

when downcounting.

 

Table 61 (µ¥ÀÌÅÍºÏ P132)

Mode

WGMn3

WGMn2

(CTCn)

WGMn1

(PWMn1)

WGMn0

(PWMn0)

Timer/Counter Mode of

Operation

TOP

Update of

OCRnx at

TOVn Flag

Set on

9

1

0

0

1

PWM, Phase and

Frequency Correct

ICRn

BOTTOM

BOTTOM

 

Table 62 (µ¥ÀÌÅÍºÏ P133)

CS02

CS01

CS00

¼³  ¸í

0

0

0

No clock source (Timer/Counter stopped)

0

0

1

ClkTOS/1 (No prescaling)

0

1

0

ClkTOS/8 (Form prescaler)

0

1

1

ClkTOS/64 ( Form prescaler)

1

0

0

ClkTOS/256 ( Form prescaler)

1

0

1

ClkTOS/1024 ( Form prescaler)

1

1

0

External clock source on ¾¥ pin. Clock on falling edge

1

1

1

External clock source on ¾¥ pin. Clock on rising edge

¾Æ·¡ ±×¸²Àº Hz,Duty¸¦ °áÁ¤ÇϸéN,OCR1AH,OCR1AL,OCR1BH,OCR1BLÀ» °áÁ¤ÇÏ¿© À̸¦ AVR·Î º¸³»¾î ÇÊ¿äÇÑ ÆÞ½º¸¦ ¸¸µå´Â ÇÁ·Î±×·¥ÀÌ´Ù.

 

½Ç½À¹æ¹ý

¸ñ    Â÷

1. ÁÖ±âÁ¶Àý

 

PWMÀÇ ÁÖ±â´Â ¾Æ·¡¿Í °°ÀÌ °è»êµÈ´Ù. (µ¥ÀÌÅÍºÏ P127)

NÀ» ¡°Table62¡±¿¡¼­ °áÁ¤ÇÏ°í ¿øÇÏ´Â Áֱ⸦ °áÁ¤Çϸé À­½Ä¿¡¼­ TOP °ªÀÌ °áÁ¤µÈ´Ù. À̸¦ OCR1A¿¡ ÀúÀåÇÑ´Ù.

¿©±â¼­ OCR1A´Â 16ºñÆ® °ªÀ̹ǷΠ0~216 »çÀÌÀÇ °ªÀÌ µÇµµ·Ï NÀ» ÀûÀýÇÏ°Ô ¼±ÅÃÇØ¾ß ÇÑ´Ù.

 

2. µàƼÁ¶Àý

ÆÞ½ºÀÇ µàƼ´Â OCR1A¿¡ ÇØ´ç duty¸¦ °öÇÏ¿© À̸¦ OCR1B¿¡ °ªÀ» Á¤ÇÏ¸é ¿øÇÏ´Â Çýº¸¦ ¾òÀ» ¼ö ÀÖ´Ù..

 

3. PCÇÁ·Î±×·¥

´ÙÀ½Àº ÆÞ½º¸¦ ¸¸µå´Â ÇÁ·Î±×·¥ ÀÌ´Ù.

¿¹Á¦1 Hz,Duty¿¡¼­ N,OCR1A,OCR1B¸¦ °áÁ¤ÇÏ¿© ¼Û½Å ÇÁ·Î±×·¥

CString strTemp;

double periodD,dutyD;

unsigned short period,duty;

char OCR1AH,OCR1AL,OCR1BH,OCR1BL;

char cClock; // 0x30=1024 0x31=256 0x32=64 0x33=8 ºÐÁÖ

 

cClock = 0x30;

periodD=(int)(7812.5/m_hz.Value);                      // 1024ºÐÁÖ  

if(periodD < 200) {

              cClock = 0x31;

              periodD=(int)(31250/m_hz.Value);         // 256ºÐÁÖ 

}

if(periodD < 200) {

              cClock = 0x32;

              periodD=125000/m_hz.Value;                                           // 64ºÐÁÖ  

}

if(periodD < 200) {

              cClock = 0x33;

              periodD=(unsigned int)(1000000/m_hz.Value);                  // 8ºÐÁÖ  

}

 

m_cClock.Value = cClock;

 

dutyD = (unsigned short)(periodD*m_duty.Value/100);

period = (unsigned short)periodD;

duty = (unsigned short)dutyD;

 

m_periodD.Value = periodD;

m_dutyD.Value = dutyD;

 

OCR1AH = (period>>8);

OCR1AL = period & 0xff; 

OCR1BH = (duty>>8);

OCR1BL = duty & 0xff;

// ÇØ´ç µ¥ÀÌÅ͸¦ RS232·Î º¸³¿

strTemp.Format( "%c%c%c%c%c%c%c",0x02,cClock,OCR1AH,OCR1AL,OCR1BH,OCR1BL,0x03);

m_ComuPort.WriteComm((unsigned char*)(LPCTSTR)strTemp,7);

 

 

4. AVR ÇÁ·Î±×·¥

¡°¿¹Á¦1¡±¿¡¼­ RS232·Î Àü´ÞµÈ ¹®ÀÚ´Â rx_buffer0¿¡ [0]¹è¿­ºÎÅÍ Â÷·Ê·Î ÀúÀåµÈ´Ù.

¿¹Á¦2 N,OCR1A,OCR1B¸¦ °áÁ¤ÇÏ´Â ÇÁ·Î±×·¥

if(rx_buffer0[0]==0x02) {

              switch(rx_buffer0[1]){

                             case 0x30:            

                                           TCCR1B=0x15;      // 1024ºÐÁÖ

                                           break;

                             case 0x31:            

                                           TCCR1B=0x14;      // 256ºÐÁÖ

                                           break;

                             case 0x32:            

                                           TCCR1B=0x13;      // 64ºÐÁÖ

                                           break;

                             case 0x33:            

                                           TCCR1B=0x12;      // 8ºÐÁÖ

                                           break;

              }

 

              OCR1AH = rx_buffer0[2];

              OCR1AL = rx_buffer0[3]; 

              OCR1BH = rx_buffer0[4];

              OCR1BL = rx_buffer0[5];

}

[Àüü ÇÁ·Î±×·¥ º¸±â]

 

óÀ½

°ú    Á¦