AntonChip, поясните, почему не обнуляется порт B между нажатиями кнопок, и почему не выполняется условие - контроль состояния двигателя битами D4 и D5 ?
Программа - во вложении.
Подключение шагового двигателя к микроконтроллерам AVR
Модератор: boogyman
Re: Подключение шагового двигателя к микроконтроллерам AVR
- Вложения
-
- motor.zip
- (1.29 КБ) 570 скачиваний
- AntonChip
- Администратор
- Сообщения: 265
- Зарегистрирован: 24 дек 2011, 22:11
- Откуда: Киров
- Контактная информация:
Re: Подключение шагового двигателя к микроконтроллерам AVR
Я бы сделал так опрос кнопок
Код: Выделить всё
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
- Администратор
- Сообщения: 265
- Зарегистрирован: 24 дек 2011, 22:11
- Откуда: Киров
- Контактная информация:
Re: Подключение шагового двигателя к микроконтроллерам AVR
так как порт D работает на вход и на выход надо управлять битами порта отдельно например
Код: Выделить всё
// признак вращения: бит D4 - "0", бит D5 - "1"
PORTD &= ~(1 << PD4);
PORTD |= (1 << PD5);
Re: Подключение шагового двигателя к микроконтроллерам AVR
AntonChip, спасибо вам за подсказки.
В отладчике походил по программе, да, ведь порт B обнулялся в обработчике прерываний, а если они запрещены, то, туда никогда и не попадем.
Все логично.
В отладчике походил по программе, да, ведь порт B обнулялся в обработчике прерываний, а если они запрещены, то, туда никогда и не попадем.
Все логично.
Re: Подключение шагового двигателя к микроконтроллерам AVR
AntonChip, не подскажете, в программе есть такая строка " ovftimes = ADCW; // Значение временной задержки "
Это присваивание задержке - параметра, измеренного АЦП, то есть значения напряжения.
А что за регистр такой - ADCW ?
Вроде в АЦП ATmega8A - есть два регистра для результата преобразования, результат можно выровнять вправо и влево битом ADLAR.
И регистры эти для результата - ADCH и ADCL, или я чего-то не учел ?
Это присваивание задержке - параметра, измеренного АЦП, то есть значения напряжения.
А что за регистр такой - ADCW ?
Вроде в АЦП ATmega8A - есть два регистра для результата преобразования, результат можно выровнять вправо и влево битом ADLAR.
И регистры эти для результата - ADCH и ADCL, или я чего-то не учел ?
- AntonChip
- Администратор
- Сообщения: 265
- Зарегистрирован: 24 дек 2011, 22:11
- Откуда: Киров
- Контактная информация:
Re: Подключение шагового двигателя к микроконтроллерам AVR
16-ти битный регистр, здесь находится 10-ти битный результат преобразования АЦП