|
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 |
25-04-2008, 08:58 PM | #9 |
Nhập môn đệ tử
Tham gia ngày: Apr 2008
Bài gửi: 6
: |
chào anh Hungbkhn
Em xem lại và thấy cái bảng ng][ì ta lập trong file AN957 là đúng rồi đó anh ạ.
Lý do của việc lập bảng không theo tuần tự là do tín hiệu Hall thu về cũng không theo tuần tự và bảng này được lập là để phù hợp với tín hiệu Hall đó. Tín hiệu Hall thu về của ta không như trong tài liệu AN85 cung cấp đâu.Em đã tiến hành đo thực tế và thu được bảng tín hiệu Hall như sau:011;001;101;100;110;010 Nếu đem so sánh với bảng trong file AN957 thì hoàn toàn phù hợp về thứ tự dẫn của các pha. Em đang làm và gặp phải một vấn đề:em không vào được ngắt của ADC. Chương trình của em như sau: Code:
#define _dsPIC30F4011_ #include "C:\Program Files\Microchip\MPLAB C30\support\h\p30F4011.h" //Macros for Configuration Fuse Registers _FOSC(CSW_FSCM_OFF & FRC_PLL4); //Set up for Crystal multiplied by 4x PLL _FWDT(WDT_OFF); //Turn off the Watch-Dog Timer. _FBORPOR(PBOR_OFF & MCLR_EN); //Enable MCLR reset pin and turn off the power-up timers _FGS(CODE_PROT_OFF); //Disable Code Protection void Init_ADC10(void) { ADPCFG = 0xFFFE; //Cac chan khac la digital, chan AN0/RB0 la analog ADCON1 = 0x0060; //Module PWM cham dut lay mau va kich hoat //viec chuyen doi A/D // ADCON1 = 0x0040; //Timer 3 cham dut lay mau va kich hoat //viec chuyen doi A/D ADCON2 = 0; ADCHS = 0; //Kenh 0 doc tin hieu giua AN0 va AVss ADCSSL = 0; //Khong quet cac ngo vao ADCON3 = 0x0103; //Dung 1 TAD cho lay mau, dung clock he thong, //TAD = 2xTcy = 250 ns /* TMR3 = 0; //Xoa thanh ghi dem cua Timer 3 PR3 = 0x03E8; //Nguong delay cho TMR3 la khoang 1 ms T2CON = 0x8010; //Prescale = 1:8, bat cho TMR3 chay */ _ADIF = 0; //Xoa co ngat ADC _ADIE = 1; //Cho phep ngat ADC _ADON = 1; //Bat module ADC _ASAM = 1; //Khoi dong che do tu dong lay mau } //Trinh phuc vu ngat cho ADC void _ISR _ADCInterrupt(void) { _LATF0=0; _ADIF = 0; } int main(void) { TRISF = 0xFFCC; //4 chan led la 4 chan ra TRISB = 0xFFFF; //cac chan cong B deu la cac chan vao ADPCFGbits.PCFG3=1; LATF=0xFFFF; //tat cac led while(1) { _LATF1=0; if (_RB3) _LATF4=0; else _LATF4=1; } } Nếu như em vào được ngắt cho ADC thì _LATF0đã về 0 tức là led của em đã sáng,nhưng nó lại không sáng??? EM cũng không hiểu tại sao em cho _LATF1= 0 rồi mà đo vẫn được 3,2V??? Mong các bác trả lời giúp!Cảm ơn!!!! thay đổi nội dung bởi: namqn, 25-04-2008 lúc 10:43 PM. |
|
|