Добавлен: 11.01.2024
Просмотров: 406
Скачиваний: 8
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
// Установка номеров контактов
#define SwitchPinNumber1 17 // P1.17
#define SwitchPinNumber2 18 // P1.18
#define SwitchPinNumber3 19 // P1.19
#define SwitchPinNumber4 20 // P1. 20
#define LedPinNumber1 28 // P1.28
#define LedPinNumber2 29 // P1.29
#define LedPinNumber3 30 // P1.30
#define LedPinNumber4 31 // P1.31
AD0CR_setup = (CLKDIV << 8) - BURST_MODE_OFF - PowerUP; // Настройка режима АЦП
#define CLKDIV (15-1)
#define BURST_MODE_OFF (0 << 16) // 1 для включения и 0 для выключения
#define PowerUP (1 << 21)
PWMTCR = 0x02; // Сброс PWMTCR
PWMPR = 0x1D; // Установка PWM со значением предварительного делителя
PWMMR0 = 20000; // Сброс при совпадении MR0
PWMMR4 = 0; PWMMR2 = 0; PWMMR3 = 0; PWMMR5 = 0;
PWMMCR = 0x00000002; // Сброс при совпадении MR0
PWMLER = 0x7C; // Разрешение защелки для PWM2, PWM4, PWM4 и PWM5
PWMTCR = 0x09; // Включить ШИМ и счетчик
PWMPCR = 0x7C00; // Включение PWM2, PWM4, PWM4 и PWM5, ШИМ с одним фронтом
switchStatus1 = (IOPIN1 >> SwitchPinNumber1) & 0x01; // Выбор серводвигателя для вращения с помощью кнопок
if (switchStatus1 == 1)
{
IOPIN1 = (1 < AD0CR = AD0CR_setup - SEL_AD01; // Настраиваем АЦП для канала 1
AD0CR - = START_NOW; // Начинаем новое преобразование с АЦП1
while ((AD0DR1 & ADC_DONE) == 0) // Проверяем преобразование АЦП
{
convert1 = (AD0DR1 >> 6) & 0x3ff; // Получить значение АЦП
result1 = map (convert1,0,1023,0,2450); // Преобразование значений АЦП в зависимости от продолжительности включения ШИМ
PWMMR5 = result1; // Установить значение Duty Cylce на PWM5
PWMLER = 0x20; // Включить PWM5
delay_ms (2);
}
} else
{
IOPIN1 = (0 < 1)
}