Development/Embedded

ATmega128 - PWM Mode 14 소스

Komastar.Dev 2014. 2. 19. 20:37
반응형

atmega128 / pwm / pwm mode 14 / atmega128 pwm


#include 
void main(void)
{
    DDRB  = 0xFF;
    DDRE  = 0xFF;
    PORTB = 0xFF;
    PORTE = 0xFF;
    
 /* FastPWM 14 mode setting */
    TCCR1A |= (1<<1) | (0<<0);  //WGM 1, 0
    TCCR1B |= (1<<4) | (1<<3);  //WGM 3, 2   
    TCCR3A |= (1<<1) | (0<<0);
    TCCR3B |= (1<<4) | (1<<3);
 
    TCCR1A |= (1<<7) | (0<<6) | (1<<5) | (0<<4) | (1 << 3) | (0 << 2);
    TCCR3A |= (1<<7) | (0<<6) | (1<<5) | (0<<4) | (1 << 3) | (0 << 2);
 
 /* 1024 prescaler */
    TCCR1B |= (1<<2) | (0<<1) | (1<<0);
    TCCR3B |= (1<<2) | (0<<1) | (1<<0);
    TCNT1H = 0x00; 
    TCNT1L = 0x00;
    TCNT3H = 0x00;
    TCNT3L = 0x00;
    
    ICR1H = 0x01;
    ICR1L = 0x36;
    ICR3H = 0x01;
    ICR3L = 0x36;
 
    OCR1AH = 0x00;            
    //OCR1AL = 0x0A;
    OCR1AL = 10; 
    OCR1BH = 0x00;          
    //OCR1BL = 0x28;
    OCR1BL = 40;
    
    OCR1CH = 0x00;           
    OCR1CL = 0x20;
    
    OCR3BH = 0x00;          
    OCR3BL = 0x08;
    
    SREG = 0x80;
 
    while(1);
}
Fast PWM Mode 14 구현 1024 프리스케일러에 ICR 값을 320가량을 줘서 20ms 주기의 PWM 신호를 만들었다.
출력되는 핀은 OC1A, OC1B, OC1C, OC3B 원래는 OC3B대신 OC3A로 출력하려고 했으나
나머지 핀은 출력이 잘되는데 이 녀석만 출력이 안나왔다.
모듈 불량으로 판단된다
4개의 PWM만 있으면 되니 상관은 없다.

2014 / 02 / 19 - 20:36 최초 작성

2014 / 02 / 20 - 01:38 태그 정리

반응형