Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Трансляция внешнего сигнала с пина на пин
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
LexaK
1. Есть некая последовательность импульсов с максимальной частотой следования 150кГц
2. Форма - для простоты пусть будет меандр со скажностью 50%

Задача - транслировать эту последовательность с пина А на пин B и при определенных условиях прерывать (эдакий программный ключ).
Пины - любые, сдвиг фазы минимальный. Контроллер Tiny2313.

Единственное, что приходит на ум - задействовать INT0/1 или PCINTx и решить задачу "в лоб". При этом частота прерываний 300кГц, что сильно разорительно, ибо есть другие задачи. Ставить внешний ключ не хочу.

Какие будут мысли?
V.K
Цитата(LexaK @ Oct 28 2012, 01:52) *
Какие будут мысли?

Поставить простейший коммутатор на корпусе 2И-НЕ. Сигнал проходит через коммутатор. При определённых условиях, контроллер выключает коммутатор.
LexaK
Как вариант. Но
Цитата
Ставить внешний ключ не хочу.
Genadi Zawidowski
Соединить пины через резистор. Перепрограммироватьт приёмный пин на ввод/или вывод в зависимости от. Или коротить Open drain какого-то третьего вывода.
ae_
Или соединить два пина напрямую, без резистора, и отключать пин передатчика, конфигурируя DDRx.N как вход.
На пин приёмника включить подтяжку.
upd: Если сигнал должен выходить наружу МК всегда, то выводить его на 2 пина одновременно, один из которых отключать.
LexaK
Прошу у сообщества прощения за не совсем точно сформулированное ТЗ.
Поступающий сигнал надо прерывать и ЗАМЕНЯТЬ СВОИМ - сгенеренным программно.
Цитата
Соединить пины через резистор.
Точно! Я думаю это так:

PD2/INT0 используется для анализа входной последовательности и при наступлении условия PD3 переключается на выход с "0", а PD5 - на выход, на котором генерим свою последовательность. Думаю, должно работать.
Спасибо всем за советы.
ILYAUL
А не будет ли маловато 1к пока PD3 в нуле
Genadi Zawidowski
Цитата(LexaK @ Oct 28 2012, 15:23) *
Думаю, должно работать.

R1 лишний
LexaK
Цитата
А не будет ли маловато 1к пока PD3 в нуле
5В/1к=5мА вполне подъемно для пина. Впрочем, тут вариации возможны. Лишь бы постоянная времени RC-цепочки, образованной R26, R1 и емкостью цепи OUTPUT была в пределах допустимой.
Цитата
R1 лишний
Почему же? В режиме трансляции сигнала этот сигнал пойдет через R1. В режиме подмены, когда PD3 в нуле и блокирует прохождение со входа на выход, а PD5 работает на выход и генерит свою последовательность – R1 просто тупая нагрузка для него.
@Ark
Цитата(LexaK @ Oct 27 2012, 23:52) *
1. Есть некая последовательность импульсов с максимальной частотой следования 150кГц
2. Форма - для простоты пусть будет меандр со скажностью 50%
Задача - транслировать эту последовательность с пина А на пин B и при определенных условиях прерывать (эдакий программный ключ).
Пины - любые, сдвиг фазы минимальный. Контроллер Tiny2313.

Не являюсь большим знатоком AVR-ок и конкретно Tiny2313. Но, по моему, встроенный компаратор на борту там имеется.
Если это так, то решение с его использованием будет наиболее изящным и не требующим лишней внешней обвески.
LexaK
Цитата
встроенный компаратор на борту там имеется
Уже занято sm.gif
@Ark
Цитата(LexaK @ Oct 28 2012, 21:52) *
Уже занято sm.gif

Так, освободить! Или поискать другую модель МК, где есть несколько компараторов на борту.
LexaK
Все равно выход компаратора наружу не выходит. Изменение его состояния только выставляет флаг и вызывает прерывание. Таким образом решение задачи сводится к описанному в п.0
@Ark
Цитата(LexaK @ Oct 28 2012, 22:32) *
Все равно выход компаратора наружу не выходит...

Так Вы найдите такой МК, где выход наружу есть.
Что, во всём богатом семействе AVR-ок нет моделей с двумя компараторами и с выходами наружу?
Тогда переходите на PIC-ки. Там таких моделей полно... sm.gif
_Артём_
Цитата(@Ark @ Oct 28 2012, 20:47) *
Так Вы найдите такой МК, где выход наружу есть.
Что, во всём богатом семействе AVR-ок нет моделей с двумя компараторами и с выходами наружу?

Есть такой - atxmegaxxxA3 (xxx - 64, 128, 192, 256).
sKWO
Цитата(LexaK @ Oct 28 2012, 14:23) *
PD2/INT0 используется для анализа входной последовательности и при наступлении условия PD3 переключается на выход с "0", а PD5 - на выход, на котором генерим свою последовательность. Думаю, должно работать.
Спасибо всем за советы.

По моему вы задействовали лишний вывод.
PD3 можно исключить. Вместо него включить PD2 и при наступлении условия выводить "0", После генерить с PD5 и по окончании генерации PD5,PD3 опять на вход, если это будет не критично по реакции на входной сигнал.
defunct
Цитата(sKWO @ Nov 20 2012, 09:19) *
По моему вы задействовали лишний вывод.
PD3 можно исключить. Вместо него включить PD2 и при наступлении условия выводить "0"

Так пропадет возможность мониторить входной сигнал во время генерации собственного.
sKWO
Цитата(defunct @ Dec 2 2012, 04:05) *
Так пропадет возможность мониторить входной сигнал во время генерации собственного.

Согласен. Но это и незачем.
Учитывая, что автор будет входной сигнал заменять, а заменять его будет только при наступлении какого-то условия, на момент генерации своего сигнала он точно знает продолжение входного сигнала, который он исключает, заменяя своим в реальном масштабе времени.
Надёжность будет пониже но программа попроще.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.