Подключение шагового двигателя к микроконтроллерам AVR

Модератор: boogyman

Аватара пользователя
jes
Любитель
Сообщения: 11
Зарегистрирован: 26 ноя 2019, 10:39

Re: Подключение шагового двигателя к микроконтроллерам AVR

#81

Сообщение jes » 04 дек 2019, 19:29

AntonChip, поясните, почему не обнуляется порт B между нажатиями кнопок, и почему не выполняется условие - контроль состояния двигателя битами D4 и D5 ?
Программа - во вложении.
Вложения
motor.zip
(1.29 КБ) 39 скачиваний

Аватара пользователя
AntonChip
Администратор
Сообщения: 238
Зарегистрирован: 24 дек 2011, 22:11
Откуда: Киров
Контактная информация:

Re: Подключение шагового двигателя к микроконтроллерам AVR

#82

Сообщение AntonChip » 06 дек 2019, 07:54

jes писал(а):
04 дек 2019, 19:29
Почему не обнуляется порт B между нажатиями кнопок?
Когда кнопка не нажата запрещается прерывание по таймеру, в обработчике которого и обнуляется порт B

Аватара пользователя
AntonChip
Администратор
Сообщения: 238
Зарегистрирован: 24 дек 2011, 22:11
Откуда: Киров
Контактная информация:

Re: Подключение шагового двигателя к микроконтроллерам AVR

#83

Сообщение AntonChip » 06 дек 2019, 08:16

Я бы сделал так опрос кнопок

Код: Выделить всё

if((PIND &(1 << PD2)) == 0)// опрос кнопки SB1
{
_delay_ms(100);
status = 1;
TIMSK |= (1 << TOIE0); // Разрешаем прерывания от таймера
}
else if((PIND &(1 << PD3)) == 0)// опрос кнопки SB2
{
_delay_ms(100);
status = 0;
TIMSK |= (1 << TOIE0); // Разрешаем прерывания от таймера
}
else 
{
status = 2;
_delay_ms(100);
TIMSK &= ~(1 << TOIE0); // Запрещаем прерывания от таймера
}

Аватара пользователя
AntonChip
Администратор
Сообщения: 238
Зарегистрирован: 24 дек 2011, 22:11
Откуда: Киров
Контактная информация:

Re: Подключение шагового двигателя к микроконтроллерам AVR

#84

Сообщение AntonChip » 06 дек 2019, 08:19

так как порт D работает на вход и на выход надо управлять битами порта отдельно например

Код: Выделить всё

// признак вращения: бит D4 - "0", бит D5 - "1"
PORTD &= ~(1 << PD4);
PORTD |= (1 << PD5);

Аватара пользователя
jes
Любитель
Сообщения: 11
Зарегистрирован: 26 ноя 2019, 10:39

Re: Подключение шагового двигателя к микроконтроллерам AVR

#85

Сообщение jes » 06 дек 2019, 15:30

AntonChip, спасибо вам за подсказки.
В отладчике походил по программе, да, ведь порт B обнулялся в обработчике прерываний, а если они запрещены, то, туда никогда и не попадем.
Все логично.

Аватара пользователя
jes
Любитель
Сообщения: 11
Зарегистрирован: 26 ноя 2019, 10:39

Re: Подключение шагового двигателя к микроконтроллерам AVR

#86

Сообщение jes » 12 янв 2020, 11:23

AntonChip, не подскажете, в программе есть такая строка " ovftimes = ADCW; // Значение временной задержки "
Это присваивание задержке - параметра, измеренного АЦП, то есть значения напряжения.
А что за регистр такой - ADCW ?

Вроде в АЦП ATmega8A - есть два регистра для результата преобразования, результат можно выровнять вправо и влево битом ADLAR.
И регистры эти для результата - ADCH и ADCL, или я чего-то не учел ?

Аватара пользователя
AntonChip
Администратор
Сообщения: 238
Зарегистрирован: 24 дек 2011, 22:11
Откуда: Киров
Контактная информация:

Re: Подключение шагового двигателя к микроконтроллерам AVR

#87

Сообщение AntonChip » 12 янв 2020, 17:23

16-ти битный регистр, здесь находится 10-ти битный результат преобразования АЦП

Ответить