![]() |
|
Tài trợ cho PIC Vietnam |
dsPIC - Bộ điều khiển tín hiệu số 16-bit Theo dự kiến của Microchip, vào khoảng năm 2011 dsPIC sẽ có doanh số lớn hơn PIC |
|
Ðiều Chỉnh | Xếp Bài |
![]() |
#31 |
Nhập môn đệ tử
Tham gia ngày: Mar 2010
Bài gửi: 3
: |
Chào mọi người!
Em đang dùng con Dspic 30f2020 để điều khiển đóng mở FET bằng cách điều chỉnh PWM. Em thay đổi PDC1 để thay đổi Duty nhưng khi thay đổi PDC1 thì Duty đo trên osiloscope luôn không đổi. thầy Nam và mọi người xem giúp em với ạ? #include <p30F2020.h> #include <adc10.h> // cau hinh cho chip _FOSC(CSW_FSCM_OFF) // tat che do du phong _FOSCSEL(FRC_PLL) //chon nguon xung trong _FWDT(FWDTEN_OFF) //tat bo dinh thoi giam sat _FPOR(PWRT_OFF) // dinh nghia cac dinh nghia cac nhan cua chuong trinh #define PWM_PORT PORTE // thanh ghi port E #define PWM_TRIS TRISE // thanh ghi tris E #define PWM_LAT LATE // thanh ghi lat E #define Fcy 925000000 // TAN SO THUC THI LENH #define Fpwm 50000 //tan so PWM = 50 kHz // cac prototype void Init_ADC0(void); // khoi tao adc void Init_PORT(void); // khoi tao port void Init_MCPWM(void); //khoi tao cac module PWM //int duty = 50; // CHUONG TRINH CHINH int main(void) { Init_PORT(); Init_ADC0(); Init_MCPWM(); // asm("nop"); // asm("nop"); // asm("nop"); while (1) ; // cho ngat return 0; } // chuong trinh khoitao cong void Init_PORT(void) { PWM_LAT = 0x0000; //Xoa thanh ghi chot tin hieu ra PWM PWM_TRIS = 0x0000; // port E la output TRISB = 0xFFFF; // port B la in put ADPCFG = 0x0000; // port B la dau vao tuong tu } //Chuong trinh con khoi tao PWM chung cho cac module void Init_MCPWM(void) { //PTCON = 0x0000; PTPER = Fcy/Fpwm - 1; //Dat thanh ghi chu ky voi tan so PWM = 40 kHz SEVTCMP = PTPER; //su kien dac biet duy nhat là khi bo dem bang PTPER PWMCON1 = 0x0080; // thanh ghi dieu khien pwm1, dung rieng PDCx,lo dead_time //PWMCON2 = 0x0080; // thanh ghi dieu khien pwm2, dung rieng PDCx,lo dead_time PHASE1 = 0x0000; PWMCON1 = 0x0001; FCLCON1 = 0x0003; //PHASE2 = Fcy/Fpwm - 1; // khoi tao period cho pwm2 PDC1 = 0.8*(PTPER + 1) ; // dat khoi tao duty cycle cho pwm1 //PDC2 = 0x00A0; // dat khoi tao duty cycle cho pwm2 IOCON1 = 0xC000; IOCON2 = 0xC000; PTCON = 0x8000; //Kich hoat module PWM } // chuong trinh khoi tao module ADC void Init_ADC0(void) { ADCON = 0x2003; // CHO PHEP ADC HOAT DONG O 4 CHAN B0, B1, B2, B3 ADCPC0 = 0xC3C3; // lien ket voi PWM// _ADIF = 0; //Xoa co ngat ADC _ADCP0IF = 0; //-------------- ADSTATbits.P0RDY = 0; //XOA co bao data is ready _ADCP1IF = 0; //-------------- ADSTATbits.P1RDY = 0; //XOA co bao data is ready _ADIE = 1; //Cho phep ngat ADC _ADON = 1; // cho phep ADC hoat dong } void _ISR _ADCInterrupt(void) //ham ngat cua adc { PDC1 = ADCBUF0*10; // gan ket qua adc ra pw1 (chan E0 va E1) PDC2 = ADCBUF2*10; // gan ket qua adc ra pw2 (chan E3 va E4) _ADIF = 0; // xoa co ngat _ADCP0IF = 0; //xoa co ngat ADSTATbits.P0RDY=0; //xoa bit bao du lieu _ADCP1IF = 0; //xoa co ngat ADSTATbits.P1RDY=0; //xoa bit bao du lieu |
![]() |
![]() |
Tags |
dspic30f adc, dspic30f pwm |
Ðiều Chỉnh | |
Xếp Bài | |
|
|
![]() |
||||
Ðề tài | Người gửi | Chuyên mục | Trả lời | Bài mới |
dsPIC Tutorial 3-Đọc ngõ vào và giao tiếp LCD | namqn | dsPIC - Bộ điều khiển tín hiệu số 16-bit | 92 | 19-02-2017 11:15 PM |
dsPIC Tutorial 2-Các kỹ thuật cơ bản | namqn | dsPIC - Bộ điều khiển tín hiệu số 16-bit | 33 | 17-10-2013 11:09 PM |
dsPIC Tutorial 1-Tạo và biên dịch một project (ASM30) | namqn | dsPIC - Bộ điều khiển tín hiệu số 16-bit | 16 | 22-08-2012 12:35 AM |
dsPIC Tutorial 4-Module UART và I2C | namqn | dsPIC - Bộ điều khiển tín hiệu số 16-bit | 76 | 09-05-2012 10:55 AM |
RF module | khanh_pic | Tìm mua sản phẩm | 22 | 20-08-2007 11:25 AM |