새로운 칩에 대해서 테스트 하다 잘 안되는 사항이 있으면 기록하면서 정리 해봐야 겠다.
ADC는 가장 기본이 되는 부분인데 정상 동작을 하지 않는다.
variant_CH32V003F4.h 파일을 보면 디폴트로 ADC Module이 Enable 되저 있지 않다.
/* ENABLE Peripherals */
//#define ADC_MODULE_ENABLED
#define UART_MODULE_ENABLED
// #define SPI_MODULE_ENABLED
#define I2C_MODULE_ENABLED
CH32V003의 ADC는 10비트 이고 ADC핀은 아래와 같이 할당되어 있다.
/* CH32V003F4 Pins */
#define PA1 PIN_A1
#define PA2 PIN_A0
#define PC0 2
#define PC1 3
#define PC2 4
#define PC3 5
#define PC4 PIN_A2
#define PC5 7
#define PC6 8
#define PC7 9
#define PD0 10
#define PD1 11
#define PD2 PIN_A3
#define PD3 PIN_A4
#define PD4 PIN_A7
#define PD5 PIN_A5
#define PD6 PIN_A6
#define PD7 17
ADC_MODULE_ENABLED 를 활성화 하고 다시 구동해 보니 ADC가 정상적으로 동작하는 것을 확인 할 수 있다.
int sensorPin = PD3; // select the input pin for the potentiometer
int ledPin = PD4; // select the pin for the LED
int sensorValue = 0; // variable to store the value coming from the sensor
void setup() {
// declare the ledPin as an OUTPUT:
pinMode(ledPin, OUTPUT);
Serial.begin(115200);
}
void loop() {
// read the value from the sensor:
sensorValue = analogRead(sensorPin);
// turn the ledPin on
digitalWrite(ledPin, HIGH);
// stop the program for <sensorValue> milliseconds:
delay(sensorValue);
// turn the ledPin off:
digitalWrite(ledPin, LOW);
// stop the program for for <sensorValue> milliseconds:
delay(sensorValue);
Serial.println(sensorValue);
}
반응형