atmega32 timer 0 , phase correct, inverted mode pwm

boopathy's picture
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Type: 

Compiler/Assembler: 

/************************************************************

PROGRAM : 
-------
    TO GENERATE A WAVE
    TIMER 0
    PHASE CORRECT PWM
    INVERTED MODE
    XTAL = 8 Mhz
    FREQUENCY = 61 hz
    DUTY CYCLE = 87.5 %

--------------------------------------------------------------
FORMULA
-------
IN PHASE CORRECT PWM
1)FREQUENCY
                                                         f timer clock
    Frequency of the generated wave =   -------------
                                                                510  

                                           f oscillator
        where, f timer clock =  -------------
                                                N
            where, N is the decimal prescaling value whose binary is to be loaded in cs02:00
    

                                                             f oscillator
    so, Frequency of the generated wave = -------------
                                                              510  x N           

2) DUTY CYCLE OF THE GENERATED WAVE

    A) NON INVERTED MODE

                              2 * OCR0
        DUTY CYCLE = ----------  * 100
                                 510
                    
    B) INVERTED MODE

                              510 - (OCR0 * 2)
        DUTY CYCLE = ------------------  * 100
                                       510
***********************************************************/

#include <mega32.h>
#include <delay.h>
#define F_CPU 8000000UL 

void timer0_config()
    {
        TCCR0 |= (1 << CS02) | (1 << WGM00) | (1 << COM01) | (1 << COM00);
        OCR0 = 32;
    }  
    
void main()
    {
        while(1) timer0_config();
    }