This program demonstrates the usage of the PWM. Program sets PWM0 chanel 1 and outputs it to the pin P1.2 where we get a PWM signal with a constant working cycle.

Dependencies:   mbed

main.c

Committer:
71GA
Date:
2015-05-02
Revision:
0:c1305ab902af

File content as of revision 0:c1305ab902af:

#include "LPC4088-ioconfig.h"
#include "LPC4088-system.h"
#include "LPC4088-pwm.h"

int main(){

        //omogocimo PWM0, ki ob zagonu ni prizgan
        PCONP = PCONP | (0x1<<5);

        //resetiranje PWM0
        //RSTCON0 = RSTCON0 | (0x1<<5);
        
        //nastavitev pina P1.2 kot izhoda PWM0_1 - v headerju zakomentiramo timer PWM1
        IOCON_P1_2  = IOCON_P1_2  & !(0x67F);
        IOCON_P1_2  = IOCON_P1_2  | 0x3;
        
        //nastavitev pina P1.18 kot izhoda PWM1_1 - v headerju zakomentiramo timer PWM0
        //IOCON_P1_18  = IOCON_P1_18  & !(0x67F);
        //IOCON_P1_18  = IOCON_P1_18  | 0b010;      

        //pocistimo interrupte za PWM0
        IR = IR | 0x73F;
        
        //nastavimo "individual use"
        TCR = TCR & !(1<<4);
        
        //nastavimo "Timer mode"
        CTCR = CTCR & !(0x3);
                
        //omogočimo PWMx_1 kanal (izhod)
        PCR = PCR | (1<<9);
        
        //nastavimo match register R0 tako, da ob TC == MR0 resetira
        //celotni PWM0. Uporabili bomo kanal PWM0_1 in tega setamo in 
        //resetamo z MR0 in MR1 (UM, tabela 556). 1
        MCR = MCR | (1<<1);
        MR0 = 0x7FFFF;
        MR1 = 0x0FFFF;
        
        //ko so vrednosti vpisane v MR0 in MR1, obe vrednosti omogočimo (istočasno)
        LER = LER | 0x3;

        //nastavimo "timer mode" in ne "PWM mode" (ne deluje) 
        //POZOR! Mora biti za nastavitvijo MR0/MR1
        TCR = TCR & !(1<<3);

        //vklopimo PWM0 - mora biti za nastavitvijo MR0/MR1
        //POZOR! Mora biti za nastavitvijo MR0/MR1
        TCR = TCR | (1<<0); 

        while(1);
        
}