问答

汇集网友智慧,解决技术难题

edison吴

TA的家园币:70  

  • 使用MCC的I2C, notification中出現了警告:

    SPIMASTER...如下圖,請問如何解決?Pleaseaddaconficationtoensureproperfunctionality!我沒有使用SPI阿?我的芯片是dspic33ck32mp102,

  • ADC轉換問題, CORE0是正常的, SHARE使用AN3腳輸入, 結果是錯誤的

    我的芯片是dspic33ck32mp105,使用MCC產生代碼,我使用了AN0(可以正常使用了),AN3,AN4(這兩個有問題)我看讀取結果時是有正確讀取正確的BUFER值,但是結果不對?今天下午依照您的建議,關掉CORE0的AN0,及SHARE的AN4,只保留了使用SHARE的AN3,重新用MCC產生新的代碼,結果仍然是錯的.輸入電壓是0V,但是讀值都是1000以上?為什麼?相關代碼如下:main中:while(1){uint16_tValue_ADC=0;DO_ADC(channel_AN3);//只使用SHARE的AN3,Value_ADC=resultADC;}函數://==ADC=====(MCC產生)voidDO_ADC(uint8_tCH){uint32_tconversion,i=0;uint8_tchannel=0;ADC1_Initialize();ADC1_Enable();channel=CH;//ADC1_ChannelSelect(channel);ADC1_SoftwareTriggerEnable();d_ms(1);ADC1_SoftwareTriggerDisable();while(!ADC1_IsConversionComplete(channel));conversion=ADC1_ConversionResultGet(channel);resultADC=conversion;ADC1_Disable();conversion=0;}//讀取值====(MCC產生)inlinestaticuint16_tADC1_ConversionResultGet(ADC1_CHANNELchannel){uint16_tresult;switch(channel){casechannel_AN3:result=ADCBUF3;//有道這裡來讀值,但是結果是錯的break;casechannel_AN4:result=ADCBUF4;break;casechannel_AN19:result=ADCBUF19;break;casechannel_AN20:result=ADCBUF20;break;casechannel_AN0:result=ADCBUF0;break;default:break;}returnresult;}

    2023-10-09 0
  • ADC 更換channel的問題

    我的芯片是dspic33ck32mp105,使用MCC產生代碼,我使用了AN0(可以了),AN3,AN4(這兩個有問題)我看讀取結果時是有正確讀取的,但是結果不對?while(1){DISC=1;d_ms(1);DISC=0;d_ms(1);uint32_tconversion,i=0;ADC1_Initialize();ADC1_Enable();channel=channel_AN3;ADC1_ChannelSelect(channel);//這裡選擇channel,我已經改成了channel_AN3;ADC1_SoftwareTriggerEnable();//ProvideDelayfor(i=0;i

    MUC 单片机DSPIC33 ADC

    2023-10-09 0
  • 芯片是dsPIC33CK32MP105, 我的ADC轉換結果永遠是0? 請問哪裡錯了?

    DearSupporter,如提,芯片是dsPIC33CK32MP105,這個芯片我第一次使用ADC,好複雜,我看了Datashet一周了,還是搞不定.請求協助.我的基本設定:使用ADC中斷,使用腳位AN0腳(如附圖),代碼是MCC產生的.已經執行了ADC相關的代碼了。我在方案中加入了一個AD0_ENABLE()的測試代碼(如下方的while(1)中,我在DEBUG模式中等待中斷發生,然後在中斷中發現ADC的結果都是0,請問哪裡錯了?因為無法附上我的方案,所以我只能提問.SYSTEM_Initialize();ADC1_Initialize();ADC1_Core0PowerEnable();ADC1_SharedCorePowerEnable();IO_Iintialize();/*InitialsetI/O*///======================================================================INTERRUPT_Initialize();INTCON1bits.NSTDIS=0;/*Interruptnestingenabledhere*/INTCON2bits.GIE=1;/*INTERRUPT_GlobalEnable();=INTCON2bits.GIE=1;*/while(1){DISC=1;//放電d_ms(10);DISC=0;//充電到3.3v,已經電阻1k焊接到3.3vADC1_ChannelSelect(channel_AN0);//選擇ADC的輸入腳位ADC0_ENABLE();//開啟ADCd_ms(1000);//在這裡等待ADC中斷產生,並且已經在中斷設置了暫停點,也有成功產生了中斷,但是讀值永遠是0。}adc1.c代碼void__attribute__((__interrupt__,auto_psv,weak))_ADCAN0Interrupt(void){uint16_tvalchannel_AN0;//ReadtheADCvaluefromtheADCBUFvalchannel_AN0=ADCBUF0;if(ADC1_channel_AN0DefaultInterruptHandler){ADC1_channel_AN0DefaultInterruptHandler(valchannel_AN0);}V_AN0=valchannel_AN0;//中斷服務程序,在這裡暫停檢查轉換的結果//clearthechannel_AN0interruptflagIFS5bits.ADCAN0IF=0;}//ADC的中斷服務程式//================================================void__attribute__((__interrupt__,auto_psv,weak))_ADCAN0Interrupt(void){uint16_tvalchannel_AN0;//ReadtheADCvaluefromtheADCBUFvalchannel_AN0=ADCBUF0;valchannel_AN0=ADCBUF2;valchannel_AN0=ADCBUF3;valchannel

    单片机 MUC ADC dspic33

    2023-10-07 7