วันอาทิตย์ที่ 3 ตุลาคม พ.ศ. 2553

Lab5: การใช้งาน Power PWM(18F2431,18F2331,18F4331,18F4431)


#include<18F4431.h>
#define  CLOCK_SP    20000000 // ความเร็วสัญญาณนาฬิกา
#fuses HS                     //   โหมดการทำงานแบบ High Speed
#fuses NOLVP,NOWDT           // No Low Voltage Program, No Watchdog timer
#fuses NOPROTECT              // Code no protection
#use delay (clock=CLOCK_SP)   // ใช้งานฟังก์ชัน delay_ms() & delay_us()

void main(){
   int16 period;

   period =511;            
   //ความถี่ของสัญญาณ = Fosc (ความถี่ของ Crystal)/ (4 * (period+1) * postscale)         setup_power_pwm_pins(PWM_COMPLEMENTARY,PWM_OFF,PWM_OFF,PWM_OFF);                     //กำหนดค่า Power PWM pin B0,B1 ในโหมด Complementary
setup_power_pwm(PWM_CLOCK_DIV_4|PWM_FREE_RUN,1,0,period,0,1,0);
            //กำหนดโหมดการทำงาน (ดูรายละเอียดเพิ่มเติม)
   while(true){
     
      set_power_pwm0_duty(500 * ((period>>8)+1));   //ตั้งค่า PWM 19.45kHz duty cycle 50% pin B0,B1 invert  กัน                                                                                                        
   }
}