Оформи код соответствующим тэгом
Добрый день.
Не могу считать фронты фазы А энкодера. В чём может быть проблема?
Энкодер рабочий, на ардуино без проблем всё работает.
Т.к. энкодер 5В, его выход А к пину 0 Миландра подключил через делитель(схему прилагаю). Между выходом энкодера и gnd намерил сопротивление 30 Ом(в даташите почему-то указано 3.3 Ома).
Соответственно светодиод не загорается. Пытался также реализовать на Таймере в режиме захвата фронтов - аналогично ничего не приходит.
Не могу считать фронты фазы А энкодера. В чём может быть проблема?
Энкодер рабочий, на ардуино без проблем всё работает.
Т.к. энкодер 5В, его выход А к пину 0 Миландра подключил через делитель(схему прилагаю). Между выходом энкодера и gnd намерил сопротивление 30 Ом(в даташите почему-то указано 3.3 Ома).
Код:
int main(void){
Init_HSE_PLL(); //80 МГц
Init_SysTick(); //системный таймер 1 мс
//PORTD Pin 0 - вход фазы А энкодера
//PORTD Pin 10 - светодиод
MDR_RST_CLK->PER_CLOCK |= (1 << 24); //тактирование PORTD
MDR_PORTD->ANALOG |= (1 << 0); //пин 0 - цифровой
MDR_PORTD->OE |= (0 << 0); //пин 0 - вход
MDR_PORTD->ANALOG |= (1 << 10); //пин 10 - цифровой
MDR_PORTD->OE |= (1 << 10); //пин 10 - выход
MDR_PORTD->PWR |= (2 << 10*2); // 0 - off, 1 - 100 ns front, 2 - 20 ns front, 3 - 10 ns front
while(1){
if(MDR_PORTD->RXTX & (1 << 0)) //если высокий уровень на пине 0, тогда загорается светодиод
MDR_PORTD->RXTX |= (1 << 10);
}
}
Изменено: