타이머 / PWM [마컴 예비레포트]
본 자료는 3페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
해당 자료는 3페이지 까지만 미리보기를 제공합니다.
3페이지 이후부터 다운로드 후 확인할 수 있습니다.

목차

타이머 / PWM

1. 실험 목적

2. 실험도구

3. 이론

⑴ 타이머 / 카운터에 대한 간단한 필요한 지식

⑵ 듀티비 가변 PWM(타이머0)

⑶ 듀티비 가변 PWM(타이머1)

⑷ 주기, 듀티비 가변 PWM

4. 실험 소스 코드 분석

⑴ EXP05.1.asm

⑵ EXP05.2.asm

⑶ EXP05.3.asm

4. 실험 예상

⑴ Exp05.1.asm

⑵ Exp05.2.asm

⑶ Exp05.3.asm

본문내용

저장한다.
LDI DH,high(125); set default PWM duty ratio
LDI DL,low(125)//DH, L에 125를 대입
OUT OCR1BH,DH; D(PWM) = 125/1250 = 10%
OUT OCR1BL,DL//OCR1B에 16비트 레지스터 값을 대입
;------------------------------------------------
;PWM Control by Key Input
;------------------------------------------------
READ_KEY:CALLKEY_IN; key input
CPIAL,0b11100000; if SW1, decrement duty ratio
//스위치 1번을 눌렀을시 듀티 ratio를 감소하게 하는 명령어
BRNECK_KEY2; ( DH:DL = DH:DL - 125 )
//위의 연산에 의해 Z flag 가 0이면 아래로 내려가고 1이면 CK_Key2 로 이동한다. 즉 스위치1이 안 눌러졌을 경우 CK_Key2로 간다.
CPIDH,0
BRNECK_KEY1A
//DH가 0이면 CK_KEY1A로 분기하고, 0이 아니면 아래로 간다.
CPIDL,0
BREQREAD_KEY
// DL이 0가 되면 다시 READ_KEY로 돌아가 키 입력 수행을 한다.
CK_KEY1A:SUBIDL,125
//DL에 즉치데이터 125를 감해준다.=> 스위치1이 눌러지고 1250에서 0으로 125씩 감소된다.
CLRAL //AL을 초기화 한다.
SBCDH,AL//DH-AL-C
RJMPCK_KEY2B//CK_KEY2B 로 상대점프
CK_KEY2:CPIAL,0b11010000; if SW2, increment duty ratio
BRNECK_KEY3; ( DH:DL = DH:DL + 125 )
CPDH,CH
BRNECK_KEY2A
CPDL,CL
BREQREAD_KEY
//스위치2번의 입력 코드로서 스위치 1번이 눌러졌을 때와 동일하다
CK_KEY2A:LDIAL,125
ADDDL,AL
CLRAL
ADCDH,AL
// 스위치 2번이 눌리면 듀티가 125만큼 증가하게 된다.
CK_KEY2B:OUTOCR1BH,DH; output duty ratio
OUT OCR1BL,DL
LDILCD_BUFFER,0xCA; display duty ratio
CALLLCD_COMMAND
MOVAH,DH
MOVAL,DL
CALLLCD_4DEC
RJMPREAD_KEY
// CK_KEY2B 전에 계산된 DH, DL의 결과물을 텍스트 LCD 2번째 줄에 10진수 4자리로 표현한다.
CK_KEY3:CPIAL,0b10110000; if SW3, decrement period
BRNECK_KEY4; ( CH:CL = CH:CL - 125 )
CPICH,0
BRNECK_KEY3A
//스위치3번이 눌러졌으면 아래로 계속가고 다른 스위치가 눌러졌을 경우 CK_KEY3A로 간다
CPICL,125
//CL에 125 가 감소 된다. CH, CL은 Period 다.
BREQREAD_KEY
//다시 키입력을 받을 준비를 한다.
CK_KEY3A:CPCH,DH //CH[주기], DH[듀티]를 뺀다.
BRNECK_KEY3B//연산 결과의 Z flag가 0이면 CK_Key3B로 가고 1이면 아래로 진행한다.
CPCL,DL
BREQREAD_KEY
CK_KEY3B:SUBICL,125//듀티에서 125를 뺀다.
CLRAL//AL을 초기화
SBCCH,AL//CH-AL-C
RJMPCK_KEY4B//CK_Key4B로 이동
CK_KEY4:CPIAL,0b01110000; if SW4, increment period
BRNEREAD_KEY; ( CH:CL = CH:CL + 125 )
CPICH,high(1250)
BRNECK_KEY4A
CPICL,low(1250)
BREQREAD_KEY
//스위치4번의 입력 코드로서 CH를 125만큼 증가시키는 입력 코드이며 CH-1250을 하여 Z flag가 0이면 CK_KEY4A로 이동하고 1이면 다시 입력을 받는다.
CK_KEY4A:LDIAL,125
ADDCL,AL
CLRAL
ADCCH,AL
// 스위치 4번이 눌리면 Period가 125만큼 증가하게 된다.
CK_KEY4B:OUTOCR1AH,CH; output frequency
OUT OCR1AL,CL
LDILCD_BUFFER,0x8A; display frequency
CALLLCD_COMMAND
MOVAH,CH
MOVAL,CL
CALLLCD_4DEC
RJMPREAD_KEY
// CK_KEY4B 전에 계산된 CH, CL의 결과물을 텍스트 LCD 2번째 줄에 10진수 4자리로 표현한다.
;====================================================================
;Include User Subroutine File
;====================================================================
.include "OK128SUB.INC"; include OK-128 subroutine file
4. 실험 예상
⑴ Exp05.1.asm
분기를 설정한 대로 51씩 듀티가 증가한다. 255까지 증가하면 다시 초기화 된다. 그와 동시에 LED 2가 껏다 켜진다. 0일 땐 꺼진다.
⑵ Exp05.2.asm
250부터 1250까지 증가한다. 1번 실험과 마찬가지로 LED2가 껏다 켜진다. 0일 때도 꺼진다.
⑶ Exp05.3.asm
위에는 스위치 1부터 4까지 있는데 실제 AVR을 이용할 때는
SW2 -> 주기 증가 (125씩)
SW3 -> 주기 감소 (125씩)
SW4 -> duty 증가 (125씩)
SW5 -> duty 감소 (125씩)
그리고 실제로 duty가 클수록 평균 전력 -> LED3의 밝기가 달라진다.
period가 작고 duty가 클수록 펄스들의 간격이 좁기 때문에 평균 전력이 상승한다. 그러므로 LED3에 들어가는 전력 또한 상승하므로 밝기가 증가하고, period가 크고 duty가 작을수록 펄스간의 간격이 커져서 평균 전력이 감소한다. 그러므로 LED3의 밝기는 줄어 들 것이다.

키워드

  • 가격1,000
  • 페이지수10페이지
  • 등록일2012.05.22
  • 저작시기2011.5
  • 파일형식한글(hwp)
  • 자료번호#748637
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니