|
приемник/передатчик ARINC 429, ктонить делал? |
|
|
|
 |
Ответов
|
Nov 27 2008, 00:29
|

Ambidexter
    
Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282

|
Цитата(klen @ Nov 26 2008, 19:19)  это ваще можно сделать? а то я уже чувствую что без асма в прерываниях не пролезет с такой скоростью Не надо паниковать раньше времени. Сделать можно, и даже на си. Как сделать приём. Подключаете сигнал к ноге INT0 и для простоты ещё к какому-нибудь пину (можно и одной ногой обойтись). По приходу прерывания настраиваете таймер1 на инверсные 437 тактов (1,5*То), таймер1 работает от клоков проца. По прерыванию от таймера сдвигаете 32-битное слово, опрашиваете входную ногу, запоминаете принятый бит, затем настраиваете таймер на 292 (длительность бита То). Ну, про передачу и так понятно. По такому алгоритму у вас проц будет стоять 90% времени. Единственная возможная проблема может возникнуть - стабильность частот прм-прд должна быть порядка 0,7%.
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
Nov 27 2008, 07:29
|
Знающий
   
Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640

|
Цитата(=GM= @ Nov 27 2008, 03:29)  Не надо паниковать раньше времени. Сделать можно, и даже на си. Как сделать приём. Подключаете сигнал к ноге INT0 и для простоты ещё к какому-нибудь пину (можно и одной ногой обойтись). По приходу прерывания настраиваете таймер1 на инверсные 437 тактов (1,5*То), таймер1 работает от клоков проца. По прерыванию от таймера сдвигаете 32-битное слово, опрашиваете входную ногу, запоминаете принятый бит, затем настраиваете таймер на 292 (длительность бита То). Ну, про передачу и так понятно. По такому алгоритму у вас проц будет стоять 90% времени.
Единственная возможная проблема может возникнуть - стабильность частот прм-прд должна быть порядка 0,7%. Вместо INT0 лучше использовать вход захвата 16-ти разрядного таймера. Тогда в программе можно будет прерывания запрещать, и это на приём влиять не будет. А потом этот-же вход опрашивать по тому-же таймеру. Но приёмник, выполненный таким способом (хоть INT0, хоть захват), будет иметь крайне плохую помехоустойчивость. Будет запускаться от короткой помехи, и при наличии помехи в середине принимаемого бита примет его неверно. Если-уж экономить процессорное время и писать на C, то сигнал приёмника нужно на входы захватов обоих 16-ти разрядных таймеров завести (не помню как они у меги номеруются). Один настроить на передний, другой на задний фронт, прерывания разрешить от обоих. Запускать оба таймера нужно синхронно (железо позволяет), считать они должны тактовую частоту. При таком подключении без проблем можно весь сигнал восстановить при минимальных затратах процессорного времени. В т.ч. на C. Я таким образом сделал анализатор шины RS-485. Скорость, чётность, кол-во стоповых - всё на лету определялось. Байты потом восстанавливались. А здесь задача не в пример легче - формат уже известен. В первом посте я имел ввиду, что даже просто по таймеру сделать можно. С мажоритарной проверкой каждого бита. В этом случае программа существенно проще. Если на асме, то 200 слов, не больше, и проще, чем на C. Но процессор загружать конечно сильнее будет, чем вариант с входами захвата таймеров.
|
|
|
|
|
Nov 27 2008, 12:58
|

Ambidexter
    
Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282

|
Цитата(galjoen @ Nov 27 2008, 07:29)  Вместо INT0 лучше использовать вход захвата 16-ти разрядного таймера. Тогда в программе можно будет прерывания запрещать, и это на приём влиять не будет. А потом этот-же вход опрашивать по тому-же таймеру. Но приёмник, выполненный таким способом (хоть INT0, хоть захват), будет иметь крайне плохую помехоустойчивость. Будет запускаться от короткой помехи, и при наличии помехи в середине принимаемого бита примет его неверно. Вход захвата ничем не лучше INT0. Челу не надо определять скорость, он её и так знает. К тому же, ресурсов проца потребуется больше. Что касается помехоустойчивости rs232. Не хотелось бы затевать полемику, но, похоже, это становится общепринятым заблуждением, что якобы можно как-то улучшить устойчивость rs232 к помехам. Последовательный интерфейс rs232 НЕ помехоустойчив ПРИНЦИПИАЛЬНО, независимо от того, делаете вы трёхкратное мажорирование или нет. Да хоть согласованный фильтр ставьте.
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
Сообщений в этой теме
klen приемник/передатчик ARINC 429 Nov 26 2008, 19:19 galjoen Цитата(klen @ Nov 26 2008, 22:19) свалило... Nov 26 2008, 20:12 Alex128 Цитата(klen @ Nov 26 2008, 23:19) это ващ... Nov 26 2008, 20:41 bloodden Цитата(Alex128 @ Nov 26 2008, 22:41) Дела... Nov 26 2008, 22:47 war4one Я применял микросхемы для ARINC 429 типа HI-8588 +... Nov 27 2008, 05:04  MrYuran Цитата(war4one @ Nov 27 2008, 08:04) Я пр... Nov 27 2008, 07:58   klen Цитата(MrYuran @ Nov 27 2008, 10:58) А чт... Nov 27 2008, 10:43  klen большое спасибо.
буду делать. технология понятна. Nov 27 2008, 07:41 SS85 Случайно, ни у кого нет документации по ARINC 429 ... Nov 28 2008, 15:08 rezident Цитата(SS85 @ Nov 28 2008, 20:08) Случайн... Nov 28 2008, 15:32  SS85 Цитата(rezident @ Nov 28 2008, 19:32) Гуг... Nov 28 2008, 15:43
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|