main . c
#include "AT91SAM7S256.h" #include "LED.h" #define MASTERCLOCK 48000000 #define DFT_DUTY 100 #define MAX_DUTY 800 void PWM3_DUTY(unsigned int uiDuty); void PWM3_Init(); void Delay_ms(unsigned int ms) { volatile unsigned int count; volatile unsigned int countmax = (MASTERCLOCK / 10000) * ms; for(count = 0; count < countmax; count++); } int main(void) { volatile unsigned int uiCnt; volatile unsigned int uiDuty; PWM3_Init(); uiDuty = DFT_DUTY; while(1) { for(uiCnt=0 ;200000 > uiCnt;++uiCnt); PWM3_DUTY(uiDuty); if( MAX_DUTY>uiDuty) { uiDuty = uiDuty +10; } else { uiDuty = DFT_DUTY; } } } void PWM3_Init() { *AT91C_PMC_PCER = (1<<(AT91C_ID_PWMC)); *AT91C_PIOA_PPUDR = AT91C_PA14_PWM3; // 풀업저항 OFF (PA14)
*AT91C_PIOA_BSR = AT91C_PA14_PWM3;
*AT91C_PIOA_PDR = AT91C_PIO_PA14;
*AT91C_PWMC_MR = (1<<0) | (6 << 8) ; // 750000 / 30 | 48M / 64 *AT91C_PWMC_CH3_CMR = 0xB << 0 | (1<<9) ; *AT91C_PWMC_CH3_CDTYR = DFT_DUTY; // 설정된 값을 접할 경우 상태변화가 일어남 *AT91C_PWMC_CH3_CPRDR = MAX_DUTY; // Y축의 범위 *AT91C_PWMC_ENA = AT91C_PWMC_CHID3; } void PWM3_DUTY(unsigned int uiDuty) { if( MAX_DUTY < uiDuty) { uiDuty = MAX_DUTY; }
*AT91C_PWMC_CH3_CUPDR = uiDuty;
} |
'코스웨어 > 14년 스마트컨트롤러' 카테고리의 다른 글
1107 김상엽 출석번호 5번 업무일지 (7) | 2014.11.07 |
---|---|
20141106업무일지 출석번호 1번 고윤석 (6) | 2014.11.06 |
keil usart (0) | 2014.11.06 |
2014.11.05 업무일지 - 한솔 (7) | 2014.11.06 |
2014.11.04. 업무일지 22번 허수웅 (8) | 2014.11.05 |
STM32F103ZE (3) | 2014.11.04 |
2014.11.03 업무일지 출석번호21 이재우 (9) | 2014.11.04 |
10.31 이경진 (9) | 2014.11.03 |