реклама на сайте
подробности

 
 
> Нужен совет, По поводу чтения данных с ножки PIO
mr.smart
сообщение Mar 26 2011, 16:29
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 28
Регистрация: 2-10-10
Пользователь №: 59 884



Всем привет и здравствуйте!
К одной ножке PIO процессора AT91SAM7S256 подключено устройство, которое на эту ногу выдает данные с частотой 4800. Нужен совет - как организовать чтение данных с этого pin'а. Может быть через USART в режиме Асинхронного Приемника?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
sergeeff
сообщение Mar 26 2011, 17:08
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Цитата(mr.smart @ Mar 26 2011, 19:29) *
Всем привет и здравствуйте!
К одной ножке PIO процессора AT91SAM7S256 подключено устройство, которое на эту ногу выдает данные с частотой 4800. Нужен совет - как организовать чтение данных с этого pin'а. Может быть через USART в режиме Асинхронного Приемника?


Сделайте его пином на вход и по прерыванию читайте.
Go to the top of the page
 
+Quote Post
mr.smart
сообщение Mar 26 2011, 17:10
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 28
Регистрация: 2-10-10
Пользователь №: 59 884



Цитата(sergeeff @ Mar 26 2011, 20:08) *
Сделайте его пином на вход и по прерыванию читайте.

А прерывание будет приходить перед каждым битом разве?
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Mar 26 2011, 17:41
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Цитата(mr.smart @ Mar 26 2011, 21:10) *
А прерывание будет приходить перед каждым битом разве?


Если у вас всегда есть изменение сигнала - можно организовать прерывание по фронтам. Если сигнал с частотой 4800 Гц может не меняться - другое дело. Берете счетчик из числа доступных, программируете его на эти самые 4800 Гц, и по прерыванию счетчика читаете состояние этого пина.
Go to the top of the page
 
+Quote Post
mr.smart
сообщение Mar 26 2011, 18:01
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 28
Регистрация: 2-10-10
Пользователь №: 59 884



Цитата(sergeeff @ Mar 26 2011, 20:41) *
Если у вас всегда есть изменение сигнала - можно организовать прерывание по фронтам. Если сигнал с частотой 4800 Гц может не меняться - другое дело. Берете счетчик из числа доступных, программируете его на эти самые 4800 Гц, и по прерыванию счетчика читаете состояние этого пина.

А если так случится, что я буду считывать уровень сигнала не с середины тактового периода, а в момент изменения уровня например? Нужно, получается, запустить таймер через 1/9600 секунды после того как будет пойман первый высокий уровень на ноге, чтобы четко снимать сигнал. Ну и вопрос разсинхронизации встает. Поправьте меня если я не прав.
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Mar 26 2011, 18:40
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Цитата(mr.smart @ Mar 26 2011, 22:01) *
А если так случится, что я буду считывать уровень сигнала не с середины тактового периода, а в момент изменения уровня например? Нужно, получается, запустить таймер через 1/9600 секунды после того как будет пойман первый высокий уровень на ноге, чтобы четко снимать сигнал. Ну и вопрос разсинхронизации встает. Поправьте меня если я не прав.


Ваш сигнал одиночный, без своего сигнала синхронизации. Посему, не к чему синхронизироваться (теоретически ваш сигнал может постоянно стоять в "0" или "1"). Ну и в худшем случае, при использовании своего тактирующего счетчика, будет ошибка на 1 синхротакт (очень важно в вашем случае?).
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 09:51
Рейтинг@Mail.ru


Страница сгенерированна за 0.01411 секунд с 7
ELECTRONIX ©2004-2016