atXmega - Quadrature Decoder Channels

Обсуждаем контроллеры компании Atmel.
Ответить
Слесарь-программист
Аватара пользователя
Сообщения: 341
Зарегистрирован: Вт сен 11, 2012 23:08:28
Откуда: город Кстово Нижегородская обл.

Сообщение ev3658 »

Это просто не вероятно, но Xmega поддерживает квадратурную дешифрацию на аппаратном уровне и до кучи, так-же на аппаратном уровне без использования ЦП вести счёт в 16 битном счётчике! Правда ограничение всего от 0 до 65535. У меня не удалось сделать из 2х таймер/счётчиков 32 битный счётчик, разве, что только в одну сторону.
Сам смысл в отличии от Mega в xMega кардинально поменялся.
В Bascom Avr это выглядит так:
Реализация аппаратного подсчёта вот такая:
1. Делаем порты энкодера на вход:
Config Porta.5 = Input
Config Porta.6 = Input
2. Если нужно, включаем подтягивающие регистры, мне не надо было:
Porta_pin5ctrl = &B00000000
Porta_pin6ctrl = &B00000000
3. Настраиваем мультиплексор с поддержкой квадратурной дешифрации (это №0,2,4) на 1 Pin5 (если на Pin6, то не работает):
Evsys_ch0mux = &B01010101
4. Настраиваем квадратурное событие и фильтр канала (фильтр канала если =0, то ничего не происходит):
Evsys_ch0ctrl = &B00011001
5. Настраиваем счётчик/таймер Tcc0 на подсчёт импульсов по каналу события 0 по принципу квадратурной шифрацией и ставим задержку "Event_delay " (в хелпе говорят нужнодля 32битной реализации):
Config Tcc0 = Normal , Prescale = &B111 , Event_source = &B1000 , Event_action = Qdec , Event_delay = Enabled

Очень хорошо и кратко описали весь процесс в журнале радио №2 2015 года. Так-же хорошо курится мануал @Xmega на русском серии A", припас его - https://vk.com/doc5082961_439017711

[youtube]https://www.youtube.com/watch?v=ook_DwOGlCk[/youtube]
https://www.youtube.com/watch?v=ook_DwOGlCk

Скорость обработки поражает, в лёгкую а 1 секунду можно переполнить счётчик без ошибок.
Реклама
Ответить

Вернуться в «AVR»