#ifndef _LMCAL_ADC_CFG_H
#define _LMCAL_ADC_CFG_H

//******************************************** Включаемые файлы *********************************************

#include "at32f403a_407_gpio.h"
#include "at32f403a_407_adc.h"

//******************************************* Локальные константы *******************************************

// Номера ADC в цифровом формате
#define LMCAL_ADC0                   (ADC1)
#define LMCAL_ADC1                   (ADC2)
#define LMCAL_ADC2                   (ADC3)
#define LMCAL_ADC3                   (3U)
#define LMCAL_ADC4                   (4U)
#define LMCAL_ADC5                   (5U)


// Номера каналов ADC в цифровом формате
#define LMCAL_ADC_CH0                (ADC_CHANNEL_0)
#define LMCAL_ADC_CH1                (ADC_CHANNEL_1)
#define LMCAL_ADC_CH2                (ADC_CHANNEL_2)
#define LMCAL_ADC_CH3                (ADC_CHANNEL_3)
#define LMCAL_ADC_CH4                (ADC_CHANNEL_4)
#define LMCAL_ADC_CH5                (ADC_CHANNEL_5)
#define LMCAL_ADC_CH6                (ADC_CHANNEL_6)
#define LMCAL_ADC_CH7                (ADC_CHANNEL_7)
#define LMCAL_ADC_CH8                (ADC_CHANNEL_8)
#define LMCAL_ADC_CH9                (ADC_CHANNEL_9)
#define LMCAL_ADC_CH10               (ADC_CHANNEL_10)
#define LMCAL_ADC_CH11               (ADC_CHANNEL_11)
#define LMCAL_ADC_CH12               (ADC_CHANNEL_12)
#define LMCAL_ADC_CH13               (ADC_CHANNEL_13)
#define LMCAL_ADC_CH14               (ADC_CHANNEL_14)
#define LMCAL_ADC_CH15               (ADC_CHANNEL_15)
#define LMCAL_ADC_CH16               (ADC_CHANNEL_16)
#define LMCAL_ADC_CH17               (ADC_CHANNEL_17)
#define LMCAL_ADC_CH18               (18U)
#define LMCAL_ADC_CH19               (19U)
#define LMCAL_ADC_CH20               (20U)
#define LMCAL_ADC_CH_NONE            (0xFFFFFFFF)


// Номера портов в буквенном формате
#define LMCAL_ADC_PORTA              (GPIOA)
#define LMCAL_ADC_PORTB              (GPIOB)
#define LMCAL_ADC_PORTC              (GPIOC)
#define LMCAL_ADC_PORTD              (GPIOD)
#define LMCAL_ADC_PORTE              (GPIOE)
#define LMCAL_ADC_PORTF              (5U)
#define LMCAL_ADC_PORTG              (6U)
#define LMCAL_ADC_PORTH              (7U)
#define LMCAL_ADC_PORTI              (8U)
#define LMCAL_ADC_PORT_NONE          (0xFFFFFFFF)

// Номера портов в цифровом формате
#define LMCAL_ADC_PORT0              (GPIOA)
#define LMCAL_ADC_PORT1              (GPIOB)
#define LMCAL_ADC_PORT2              (GPIOC)
#define LMCAL_ADC_PORT3              (GPIOD)
#define LMCAL_ADC_PORT4              (GPIOE)
#define LMCAL_ADC_PORT5              (5U)
#define LMCAL_ADC_PORT6              (6U)
#define LMCAL_ADC_PORT7              (7U)
#define LMCAL_ADC_PORT8              (8U)
#define LMCAL_ADC_PORT_NONE          (0xFFFFFFFF)

// Номера пинов в цифровом формате
#define LMCAL_ADC_PIN0               (GPIO_PINS_0)
#define LMCAL_ADC_PIN1               (GPIO_PINS_1)
#define LMCAL_ADC_PIN2               (GPIO_PINS_2)
#define LMCAL_ADC_PIN3               (GPIO_PINS_3)
#define LMCAL_ADC_PIN4               (GPIO_PINS_4)
#define LMCAL_ADC_PIN5               (GPIO_PINS_5)
#define LMCAL_ADC_PIN6               (GPIO_PINS_6)
#define LMCAL_ADC_PIN7               (GPIO_PINS_7)
#define LMCAL_ADC_PIN8               (GPIO_PINS_8)
#define LMCAL_ADC_PIN9               (GPIO_PINS_9)
#define LMCAL_ADC_PIN10              (GPIO_PINS_10)
#define LMCAL_ADC_PIN11              (GPIO_PINS_11)
#define LMCAL_ADC_PIN12              (GPIO_PINS_12)
#define LMCAL_ADC_PIN13              (GPIO_PINS_13)
#define LMCAL_ADC_PIN14              (GPIO_PINS_14)
#define LMCAL_ADC_PIN15              (GPIO_PINS_15)
#define LMCAL_ADC_PIN16              (16U)
#define LMCAL_ADC_PIN17              (17U)
#define LMCAL_ADC_PIN18              (18U)
#define LMCAL_ADC_PIN19              (19U)
#define LMCAL_ADC_PIN20              (20U)
#define LMCAL_ADC_PIN21              (21U)
#define LMCAL_ADC_PIN22              (22U)
#define LMCAL_ADC_PIN23              (23U)
#define LMCAL_ADC_PIN24              (24U)
#define LMCAL_ADC_PIN25              (25U)
#define LMCAL_ADC_PIN26              (26U)
#define LMCAL_ADC_PIN27              (27U)
#define LMCAL_ADC_PIN28              (28U)
#define LMCAL_ADC_PIN29              (29U)
#define LMCAL_ADC_PIN30              (30U)
#define LMCAL_ADC_PIN31              (31U)
#define LMCAL_ADC_PIN_NONE           (0xFFFFFFFF)


//******************************************* Определения типов *********************************************

// Размер слова АЦП
// Доступные значения: u8, u16, u32
typedef u16     lmcal_adc_wsize;


//************************************ Глобальные (публичные) константы *************************************

//---------------------------------------------------------
// Канал 0 - Для примера
//---------------------------------------------------------

// Включить или отключить канал
// Доступные значения: ON\OFF, 1\0
#define LMCAL_ADC_CH0_ENABLE            (ON)

// Номер аппаратного ADC.
// Доступные значения: LMCAL_ADC0..LMCAL_ADC5
#define LMCAL_ADC_CH0_ADC_NUM           (LMCAL_ADC0)

// Время преобразования (в циклах преобразования)
// Доступные значения: зависит от МК (см. библиотеку от производителя)
#define LMCAL_ADC_CH0_SAMPLE_TIME       (ADC_SAMPLETIME_239_5)

// Количество каналов группового преобразования
// Доступные значения: 1...8 (или LMCAL_ADC_IN_QTY_MAX)
#define LMCAL_ADC_CH0_IN_QTY            (5)

// Номера каналов АЦП для группового преобразования
// Доступные значения: LMCAL_ADC_CH0..LMCAL_ADC_CH20
#define LMCAL_ADC_CH0_IN0_NUM           (LMCAL_ADC_CH0)
#define LMCAL_ADC_CH0_IN1_NUM           (LMCAL_ADC_CH1)
#define LMCAL_ADC_CH0_IN2_NUM           (LMCAL_ADC_CH2)
#define LMCAL_ADC_CH0_IN3_NUM           (LMCAL_ADC_CH3)
#define LMCAL_ADC_CH0_IN4_NUM           (LMCAL_ADC_CH4)
#define LMCAL_ADC_CH0_IN5_NUM           (LMCAL_ADC_CH_NONE)
#define LMCAL_ADC_CH0_IN6_NUM           (LMCAL_ADC_CH_NONE)
#define LMCAL_ADC_CH0_IN7_NUM           (LMCAL_ADC_CH_NONE)


//---------------------------------------------------------
// Канал 1
//---------------------------------------------------------
#define LMCAL_ADC_CH1_ENABLE            (OFF)
#define LMCAL_ADC_CH1_ADC_NUM           (LMCAL_ADC0)
#define LMCAL_ADC_CH1_SAMPLE_TIME       (0)
#define LMCAL_ADC_CH1_IN_QTY            (1)
#define LMCAL_ADC_CH1_IN0_NUM           (LMCAL_ADC_CH_NONE)
#define LMCAL_ADC_CH1_IN1_NUM           (LMCAL_ADC_CH_NONE)
#define LMCAL_ADC_CH1_IN2_NUM           (LMCAL_ADC_CH_NONE)
#define LMCAL_ADC_CH1_IN3_NUM           (LMCAL_ADC_CH_NONE)
#define LMCAL_ADC_CH1_IN4_NUM           (LMCAL_ADC_CH_NONE)
#define LMCAL_ADC_CH1_IN5_NUM           (LMCAL_ADC_CH_NONE)
#define LMCAL_ADC_CH1_IN6_NUM           (LMCAL_ADC_CH_NONE)
#define LMCAL_ADC_CH1_IN7_NUM           (LMCAL_ADC_CH_NONE)


//---------------------------------------------------------
// Канал 2
//---------------------------------------------------------
#define LMCAL_ADC_CH2_ENABLE            (OFF)
#define LMCAL_ADC_CH2_ADC_NUM           (LMCAL_ADC0)
#define LMCAL_ADC_CH2_SAMPLE_TIME       (0)
#define LMCAL_ADC_CH2_IN_QTY            (1)
#define LMCAL_ADC_CH2_IN0_NUM           (LMCAL_ADC_CH_NONE)
#define LMCAL_ADC_CH2_IN1_NUM           (LMCAL_ADC_CH_NONE)
#define LMCAL_ADC_CH2_IN2_NUM           (LMCAL_ADC_CH_NONE)
#define LMCAL_ADC_CH2_IN3_NUM           (LMCAL_ADC_CH_NONE)
#define LMCAL_ADC_CH2_IN4_NUM           (LMCAL_ADC_CH_NONE)
#define LMCAL_ADC_CH2_IN5_NUM           (LMCAL_ADC_CH_NONE)
#define LMCAL_ADC_CH2_IN6_NUM           (LMCAL_ADC_CH_NONE)
#define LMCAL_ADC_CH2_IN7_NUM           (LMCAL_ADC_CH_NONE)


//---------------------------------------------------------
// Канал 3
//---------------------------------------------------------
#define LMCAL_ADC_CH3_ENABLE            (OFF)
#define LMCAL_ADC_CH3_ADC_NUM           (LMCAL_ADC0)
#define LMCAL_ADC_CH3_SAMPLE_TIME       (0)
#define LMCAL_ADC_CH3_IN_QTY            (1)
#define LMCAL_ADC_CH3_IN0_NUM           (LMCAL_ADC_CH_NONE)
#define LMCAL_ADC_CH3_IN1_NUM           (LMCAL_ADC_CH_NONE)
#define LMCAL_ADC_CH3_IN2_NUM           (LMCAL_ADC_CH_NONE)
#define LMCAL_ADC_CH3_IN3_NUM           (LMCAL_ADC_CH_NONE)
#define LMCAL_ADC_CH3_IN4_NUM           (LMCAL_ADC_CH_NONE)
#define LMCAL_ADC_CH3_IN5_NUM           (LMCAL_ADC_CH_NONE)
#define LMCAL_ADC_CH3_IN6_NUM           (LMCAL_ADC_CH_NONE)
#define LMCAL_ADC_CH3_IN7_NUM           (LMCAL_ADC_CH_NONE)




//******************************************* Проверка параметров *******************************************

// Нет


#endif

//*********************************************** КОНЕЦ ФАЙЛА ***********************************************
