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

 
 
 
Reply to this topicStart new topic
> Нужен совет, По поводу чтения данных с ножки 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
aaarrr
сообщение Mar 26 2011, 16:36
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Если кодировка данных совместима с одним из режимов USART'а, и ножка PIO является по совместительству входом RX, то можно.
Go to the top of the page
 
+Quote Post
mr.smart
сообщение Mar 26 2011, 16:59
Сообщение #3


Участник
*

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



Цитата(aaarrr @ Mar 26 2011, 19:36) *
Если кодировка данных совместима с одним из режимов USART'а, и ножка PIO является по совместительству входом RX, то можно.

Походу ножка не 5ая, а 9ая. Неужели нельзя как-то переназначить вход RXD? Если нет, то как тогда читать конкретно с 9ой ноги?

Погодите... 9ая нога это же RXD Дебаг Юнита! Если настроить его на прием пакетов по 9 бит, то можно считывать информацию через DBGU! Я где-то не прав?

Сообщение отредактировал mr.smart - Mar 26 2011, 17:04
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 26 2011, 17:05
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(mr.smart @ Mar 26 2011, 19:59) *
Неужели нельзя как-то переназначить вход RXD? Если нет, то как тогда читать конкретно с 9ой ноги?

Переназначить нельзя. Читать соответствующий бит в PIO_PDSR, перед этим не забыть разрешить тактирование модуля PIO.
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Mar 26 2011, 17:08
Сообщение #5


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

Группа: Свой
Сообщений: 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
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 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
Сообщение #7


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

Группа: Свой
Сообщений: 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
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 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
Сообщение #9


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

Группа: Свой
Сообщений: 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
mr.smart
сообщение Mar 26 2011, 19:10
Сообщение #10


Участник
*

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



Друзья!!! Всем спасибо за советы! Обязательно завтра попробую в учебных целях сделать чтение данных с пина через чтение PIO_PDSR при прерывании от счетчика!
Сейчас я сделал чтение данных через блок DBGU (как никак, данные идут на девятую ножку), думаю в перспективе так и оставлю.

Еще раз всем спасибо!
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 20th July 2025 - 22:30
Рейтинг@Mail.ru


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