SN8F570310——ADC測試
平臺:鬆翰 SN8F570310spa
官網:http://www.sonix.com.tw/masterpage-twcode
代碼示例:blog
#include "Equ.h" /* 硬件: P13 AIN10 */ /* 1 將 ADC 輸入通道設置爲輸入模式(由 PnM 寄存器設置); 2 必須禁止 ADC 輸入通道的內部上拉電阻(由 PnUR 寄存器設置); 3 選擇和使能 ADC 輸入通道(由 CHS[3:0]位和 GCHS 位設置); 4 必須將 ADC 模擬輸入通道的控制位設置爲 1(由 PnCON 寄存器設置); 5 選擇 ADC 高參考電壓(由 VREFH 寄存器設置); 6 選擇 ADC 時鐘頻率(由 ADCKS[1:0]位設置); 7 設置 ADENB 位後, ADC 準備開始轉換。 */ void adc_init(void) { P1M &= ~0x08; //1.輸入模式 P1UR &= ~0x08; //2.禁止上拉 ADM |= 0x8A; //3.選擇和使能 ADC 輸入通道 1010 P1CON |= 0x08; //4.模擬輸入通道的控制位設置爲 1 VREFH = 1<<2; //5.高參考電壓 VDD ADR = 1<<6 | 2<<4 ; //6.ADC 時鐘頻率 IEN2 = 3<<1; //開啓ADC中斷 ADM |= 0X40; //7.開始轉換 } void ADCInterrupt(void) interrupt ISRAdc { unsigned int ADCBuffer = 0; // data buffer unsigned long p; if ((IRCON2 &0x01) == 0x01){ IRCON2 &= ~0x01; //清除ADC標誌位 ADCBuffer = (ADB << 4) | (ADR &0x0f); for(p=0;p<30000;p++){} for(p=0;p<30000;p++){} S0BUF = ADCBuffer; ADM &= ~0X20; //轉換結束,手動清零 ADM |= 0X40; //開始轉換 } }
測試:it
復位按鍵和電源ast
筆記:class
1. 11個輸入通道,12位數字信號採集因此分辨率爲2^12=4096 ,參考高壓可設置與參考低壓爲零,則將外部電壓(參考低壓—參考高壓)轉換爲12位數字信號(0—4096);硬件