Страница 5 из 5

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

Добавлено: 04 дек 2019, 19:29
jes
AntonChip, поясните, почему не обнуляется порт B между нажатиями кнопок, и почему не выполняется условие - контроль состояния двигателя битами D4 и D5 ?
Программа - во вложении.

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

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

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

Добавлено: 06 дек 2019, 08:16
AntonChip
Я бы сделал так опрос кнопок

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

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); // Запрещаем прерывания от таймера
}

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

Добавлено: 06 дек 2019, 08:19
AntonChip
так как порт D работает на вход и на выход надо управлять битами порта отдельно например

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

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

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

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

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

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

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

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

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