บันทึกกันลืม
เป็นเรื่อง ADC ของบอร์ดที่ใช้ชิพ STM8S103F3 ปกติก็คุ้นเคยกับ Arduino ถ้าใช้ Arduino IDE มันก็สะดวก แต่ถ้าใช้ STVD+COSMIC นี่ก็วุ่นๆ พิลึก สำหรับเซียน MSC8051 คงไม่ใช่ปัญหา
Register ที่ต้องกำหนดค่า เพื่อเริ่มใช้งาน analogRead
ADC_CR1 //ADC control , ADC On/Off
ADC_CR2 //ADC control , Align
ADC_CSR //Control/Status
ADC_DRL //Data register low
ADC_DRH //Data register high
Fig.1 ADC_CR1 setting. |
Fig.3 ADC_CSR setting. |
ADC_CSR ถ้าจะใช้ D3 เป็นขารับสัญญาณ analog อ้างอิง Fig.3 ADC_CSR
ดูที่ Fig.4 ขานี้ชื่อ AIN4 ดังนั้นต้องกำหนดค่าที่ bit 2
0b0000 AIN0
0b0001 AIN1
0b0010 AIN2
0b0011 AIN3
0b0100 AIN4 *ตั้งค่า bit2 ให้เป็น 1
0b0101 AIN5
โค้ด:
void ADC_Init(){
ADC1_CSR |= (1<<2); //CONTROL&STATUS CHANEL BIT2 AIN4 SET.
ADC1_CR2 |= (1<<3);
ADC1_CR1 |= (1<<0); //CONFIG REG. BIT0=1 A/D ON.
}
uint16_t ADC_READ(){
uint8_t Hval, Lval;
ADC1_CR1 |=(1<<0);
while(!(ADC1_CSR &(1<< 7))); //CONTROL&STATUS BIT7 EOC SET
Lval = ADC1_DRL;
Hval = ADC1_DRH;
ADC1_CSR &=~(1<<7); //CLEAR FLAG
return ((Hval <<8)| Lval );
}
เวลา monitor ก็ใช้ UART ส่งข้อมูลไปดูใน PC เอานะ
สุดท้ายนี่มันก็ได้แค่ analogRead(PD3); ของ Arduino IDE.