artemkad 69 16 февраля Опубликовано 16 февраля · Жалоба У таймеров Atxmega есть несколько каналов захвата/сравнения. Не подскажет ли кто, а что именно переключает режим работы канала между захватом и сравнением? Можно ли сделать так, что-бы канал осуществивший захват в одном периоде работы таймера, в следующем периоде уже работал как канал сравнения? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
artemkad 69 16 февраля Опубликовано 16 февраля · Жалоба Плюс еще вопросик вдогонку... Является ли регистр захвата канала физически тем-же что и регистр сравнения? Т.е. если надо захваченное значение в дальнейшем использовать для сравнения, можно ли его после захвата не перезаписывать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Obam 37 16 февраля Опубликовано 16 февраля · Жалоба А в RefMan, что про всё это написано? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
artemkad 69 16 февраля Опубликовано 16 февраля · Жалоба Если бы было написано - не спрашивал-бы. Впрочем, английский не мой родной, потому вдруг чего пропустил... Там есть только утверждение, что канал не может работать одновременно на захват и сравнение, но прямо что его переключает между режимами - не нашел. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Obam 37 17 февраля Опубликовано 17 февраля · Жалоба Если бы было написано... ... про конкретное семейство, по сему открыл мануал на XMEGA E (doc42004a апр'13): TC4/5, регистр CTRLE, четыре двубитовых поля (откл\сравнение\захват\и то и другое). Стр. 178. Дальше - сам или чтение доки online по соответствующему тарифу ;-) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
artemkad 69 17 февраля Опубликовано 17 февраля · Жалоба 28 минут назад, Obam сказал: про конкретное семейство, по сему открыл мануал на XMEGA E Любопытно... 56 минут назад, Obam сказал: регистр CTRLE, четыре двубитовых поля (откл\сравнение\захват\и то и другое) К сожалению серия Е в данном семействе это вещь в себе и в остальных подобных регистров не наблюдается. Более того, там нет таймеров "Type 4,5". Там этот регистр выглядит так: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Obam 37 17 февраля Опубликовано 17 февраля · Жалоба Продолжаем сеанс телепатии: а не в CTRLD для семейств A или B? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
artemkad 69 17 февраля Опубликовано 17 февраля · Жалоба 7 часов назад, Obam сказал: Продолжаем сеанс телепатии: а не в CTRLD для семейств A или B? Возможно. Но если это так, то режим захвата/сравнения относится не только к каналам таймера, а ко всему таймеру целиком. Т.е. или все включенные каналы будут работать в режиме захвата или все в режиме сравнения. Вопрос в первом посту собственно сводился к тому достаточно ли для переключения только этого регистра или надо еще менять режим в CTRLB.WGMODE. Впрочем, по CTRLD там тоже не все прозрачно - что переключает режим CTRLD.EVACT или установка событий для каналов в CTRLD.EVSEL. Т.е. если в CTRLD.EVACT будет OFF, но CTRLD.EVSEL останутся события подключенные к каналам, переключатся ли каналы в режим сравнения и что произойдет если при этом EVENT придет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 59 17 февраля Опубликовано 17 февраля · Жалоба On 2/17/2024 at 12:26 PM, artemkad said: Возможно. Но если это так, то режим захвата/сравнения относится не только к каналам таймера, а ко всему таймеру целиком. Т.е. или все включенные каналы будут работать в режиме захвата или все в режиме сравнения. Вопрос в первом посту собственно сводился к тому достаточно ли для переключения только этого регистра или надо еще менять режим в CTRLB.WGMODE Какое у вас семейство xMega ? Какой таймер вы используете ? Например, для XMEGA B, таймер ТС0/1 Quote CTRLB – Control register B • Bit 7:4 – CCxEN: Compare or Capture Enable When input capture operation is selected, the CCxEN bits enable the capture operation for the corresponding CC channel. Т.е. каждый канал захвата включается своим битом в регистре CTRLB. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
artemkad 69 17 февраля Опубликовано 17 февраля · Жалоба 20 минут назад, dimka76 сказал: Т.е. каждый канал захвата включается своим битом в регистре CTRLB. Это только включение/отключение канала. А вопрос в том, в каком режиме включенный канал будет работать - в режиме захвата или в режиме сравнения. 47 минут назад, dimka76 сказал: When input capture operation is selected, the CCxEN bits enable the capture operation for the corresponding CC channel Т.е. тут "когда захват включен" - интересует что необходимо и достаточно для этого "когда" Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 59 17 февраля Опубликовано 17 февраля · Жалоба On 2/17/2024 at 1:17 PM, artemkad said: Т.е. тут "когда захват включен" - интересует что необходимо и достаточно для этого "когда" Вообще, такое ощущение, что этой xmega мало кто занимается. Поэтому вам наверняка самому придется экспериментировать. Кстати, а у вас плата уже имеется, чтобы экспериментировать ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
artemkad 69 17 февраля Опубликовано 17 февраля · Жалоба 14 минут назад, dimka76 сказал: Кстати, а у вас плата уже имеется, чтобы экспериментировать ? Плата у меня есть и даже в ней в целом рабочая прога имеется и кой-какое средство отладки(отладочный UART). B вот сейчас решаю поэкспериментировать с крутым изменением одного из модулей программы или начать с заплаток. Собственно плата работает на 2 UARTа + отладочный UART, + SPI c жестким таймингом + 19200 9-битная последовательная шина связи с другими платами тоже реализованная на UART. Вот только вылезла проблемка в том, что тайминги на этой шине в связи с работой почти без кварцов с другой стороны в некоторых пределах плавают и при хреново сошедшихся звездах (по статистике 1 пара плат из сотни при разлете температур между платами в 30 градусов) связь может теряться. Вот и стала задача подстройки скорости приемника под текущую скорость шины. Сперва подумалось, что достаточно подстроить частоту тактовой, но это повлияет и на остальные 2 UARTа чего не хочется. Вот и рассматриваю сейчас возможность реализации подстраиваемого софтового UART-а на таймере. Идея была запустить таймер на постоянку с периодом равным битовой скорости(изменением периода можно подстроить скорость) и захватом одного канала ловить фазу старт-бита. После чего перевести два канала в режим сравнения - одного канала с пойманным значением, второго с пойманным плюс пол периода скорости. При этом прерывание первого канала будет работать на передачу, а второго на прием. Если бы можно было еще один канал одновременно использовать для захвата, то по смещению фазы фронтов можно было бы даже делать непрерывную автоподстройку по принимаемым данным, но можно и без этого по байту синхронизации. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться