LINUX.ORG.RU

[радиолюбительство] Счётчик периода имульсов на COM-порту


0

0

Тока не говорите что COM устарел и всё такое...

Вобщем тупо надо подсчитать длительность между импульсами на входе, допустим DCD. Знаю, что это возможно, так работает ИК-приёмник из 4 деталей для lirc...

Допустим:
по линии RXD можно измерять число принятых нулей в байте как кратное
частоте настройки приема UART

elipse ★★★ ()
Ответ на: комментарий от anonymous

Язык без разницы. Берешь любой, где можно сделать морду+вставка кода на асме. Считаешь асмом приходящие биты и выдаешь число на морде.

З.Ы. конкретно регистры я не помню, гугль и «Аппаратные средства IBM PC» Михаила Гука тебе в помощь.

Zhbert ★★★★★ ()

ИМХО, уж лучше на параллельный вешать - проще будет сигнал снимать.

Да, а что, не вариант купить дешевенький контроллер, напаять схемку, и измерять по-человечески: пустить сигнал на какой-нибудь цифровой вход, запустить таймер и по прерыванию при поступлении сигнала измерять период.

Eddy_Em ☆☆☆☆☆ ()

>так работает ИК-приёмник из 4 деталей для lirc

Так у них же там драйвер свой для com написан который ставится вместо стандартного ядреного. Из юзерспейса измерять - дохлый номер.

anonymous ()
Ответ на: комментарий от aldayneko

>Нафига там asm ??

считывать прямо из адресного пространства регистра контроллера компорта

З.Ы. Мб и не нужен, сказывается работа с контроллерами просто =)

Zhbert ★★★★★ ()
Ответ на: комментарий от Eddy_Em

>:) Ни разу не писал для контроллеров на ассемблере - sdcc прекрасно оптимизирует сишный код.

много потерял =) Я раньше писал для пикмикро на голом асме. Сейчас-то использую SL C8051F320, под которые пишется на С и используется Keil С51. А когда учился, то ради шуток писали небольшие проги на делфи, вставляя туда асмовый код, которые записывали значения в контроллер клавы и мигали светодиодами на ней =)

Zhbert ★★★★★ ()
Ответ на: комментарий от Zhbert

Можете полностью уходить с масдая - в линуксе сейчас с разработкой для микроконтроллеров полный порядок. Главное, чтобы программатор тоже работал (т.е. был стандартным, а не каким-нибудь самопальным российским с закрытыми спецификациями).

Eddy_Em ☆☆☆☆☆ ()
Ответ на: комментарий от Eddy_Em

Вобщем, хочу дла линукса я написать. Язык без разницы. Морда тож не нужна. Чтоб по приществии очередного импульса просто в stdout печаталось время в милисекундах. И так до бесконечности )

Про МК тоже думал... впринципе реально, и есть кого напрячь с этим делом ) Ну эт как крайний вариант.

LPT занят, как ни странно, принтером )

А lirc'овский драйверок нельзя как-нить заюзать... там прямо что надо: считается длительность импулься по входу DCD...

Gordon01 ★★ ()
Ответ на: комментарий от Gordon01

Никогда таким не занимался, так что ничего посоветовать не могу. Попробуйте на kazus.ru поискать - вдруг кто-то подобное реализовывал. Просто я даже и не могу представить, как можно заставить RS-232 работать в настолько нестандартном режиме. Кстати, с ИК-приемника не просто импульсы считаются, а принимаются вполне осмысленные данные.

Eddy_Em ☆☆☆☆☆ ()

Если ты прерываний использовать не будешь, то больше 50 Гц с COM-порта навряд ли посчитаешь.

Я бы предложил использовать 8-разрядный счетчик, который подключить на вход LPT, а переполнение с него завести на готовность того же LPT или еще как-то или вообще забить на переполнение, в зависимости от твоей частоты. 1-2 микросхемами обойдешься. LPT вроде позволяют двусторонний обмен данными.

ansky ★★★★★ ()
Ответ на: комментарий от Eddy_Em

>Можете полностью уходить с масдая

Я с него давно уже ушел =)

Просто я даже и не могу представить, как можно заставить RS-232 работать в настолько нестандартном режиме.

ASM, я не зря про него сказал. У нас в шараге, где учился, один чер курсач писал на эту тему, использовался асм для прямого обращения к сомпорту.

LPT вроде позволяют двусторонний обмен данными.

Да, позволяет.

Zhbert ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.