|
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 |
01-06-2012, 09:22 AM | #9 |
Nhập môn đệ tử
Tham gia ngày: Aug 2011
Bài gửi: 6
: |
hix, mình cũng đang gặp phải vấn đề thay đổi biến toàn cục trong ngắt mà không biết xử lý code thế nào.Đoạn code sau mình viết để test trên protues. nhưng biến ADCvalues của mình vẫn không thay đổi sau khi có ngắt ADC xảy ra.
#include <p33FJ16MC304.h> _FOSCSEL(FNOSC_PRIPLL&IESO_OFF); //dung dao dong ngoai co bo PLL _FOSC(FCKSM_CSDCMD&OSCIOFNC_OFF&POSCMD_XT); //chon che do XT _FWDT(FWDTEN_OFF); //tat watchdog _FGS( GSS_HIGH & GCP_ON ); //code protection volatile int ADCvalues=0xFF00; void Init_osc(void) { PLLFBD = 78; // M = 78 CLKDIV = CLKDIV&0xFF00; //PLLPOST=0 & PLLPRE = 0 , N1=2, N2=2 while (_COSC !=0b011); //dung bo PLL tao Fosc=40MHz, cho cho dao dong on dinh while (_LOCK !=1); //cho PLL bat dau khoa pha } void Init_ADC(void) { AD1PCFGL = 0xFFFE; //chon AN0 lam ngo vao analog _SSRC = 7; //ADC cham dut lay mau va kich hoat chuyen doi AD1CON2 = 0; AD1CHS0 = 0; AD1CSSL = 0; //ko quet ngo vao AD1CON3 = 0x1F01; //dung 31TAD cho lay mau //dung TAD=2Tcy _AD1IF = 0; _AD1IE = 1; _ASAM = 1; //tu dong lay mau. } void __attribute__((__interrupt__,auto_psv))_ADC1Interr upt(void) { ADCvalues = ADCBUF0; PORTC = ADCvalues; } int main() { TRISB = 0x0000; TRISC = 0x0000; Init_osc(); Init_ADC(); _ADON = 1; while(1) { PORTB = ADCvalues; } } Mong mọi người giúp đỡ với, thanks. |
|
|