Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Прием по SSC
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
ktchv
Здравствуйте!

(at91sam7s256)
Настроил ssc на передачу - всё работает как нужно. настроил на примем.. (данные с внешнего устройства идут)

срабатывает прерывание. в статусе

RXRDY: Receive Ready - Data has been received and loaded in SSC_RHR.

как эти данные получить из RHR? или из другого буфера...

спасибо)
a3r3
Цитата(ktchv @ Aug 30 2007, 15:15) *
как эти данные получить из RHR? или из другого буфера...

07.gif Прочитать RHR. Или настроить PDC и читать из другого буфера.
ktchv
Цитата(a3r3 @ Aug 30 2007, 17:36) *
07.gif Прочитать RHR. Или настроить PDC и читать из другого буфера.



А как настроить то?
a3r3
Цитата(ktchv @ Aug 30 2007, 17:39) *
А как настроить то?

Прочитать в документации раздел Peripheral DMA Controller и настроить. Примеры здесь выкладывали, воспользуйтесь поиском.
ktchv
Цитата(a3r3 @ Aug 30 2007, 18:39) *
Прочитать в документации раздел Peripheral DMA Controller и настроить. Примеры здесь выкладывали, воспользуйтесь поиском.



вот допустим. пишу:

AT91F_PDC_Open(AT91C_BASE_PDC_SSC);

AT91F_SSC_ReceiveFrame (AT91C_BASE_SSC,(char*) buffer, lb , 0, 0) ;

дальше срабатывает прерывание ENDRX, потом RXRDY, потом OVRUN.

во время прерываний что с этим делать? в примерах ничего на прием не нашел.
a3r3
Ваша задача как раз не допустить появления RXRDY и OVRUN, своевременно добавляя новые буферы. Лучше задействовать двойную буферизацию и добавлять буфер по ENDRX.
ktchv
это я понимаю. данные то откуда считать?
a3r3
А указатель на буфер для красоты передается???
ktchv
как нужно сделать по шагам?

вот пишу в начале

AT91C_BASE_PDC_SSC->PDC_RPR=(unsigned int)buffer;
AT91C_BASE_PDC_SSC->PDC_RCR=bufferlen;

срабатывает прерывание RXRDY.

буфер пустой.


что делать дальше?
a3r3
Что значит "буфер пустой"? Может быть, правильнее сказать "заполнен нулевыми значениями"?
Тогда можно предположить, что неправильно настроен приемник.
ktchv
Цитата(a3r3 @ Aug 31 2007, 01:09) *
Что значит "буфер пустой"? Может быть, правильнее сказать "заполнен нулевыми значениями"?
Тогда можно предположить, что неправильно настроен приемник.

то есть в принципе а буфер после этого пишутся принятые данные? и в прерывании RXRDY мой буфер должен быть заполнен принятыми данными?
a3r3
Нет. После заполнения буфера будет выставлен ENDRX. RXRDY придет чуть позже, когда SSC получит новые данные, а PDC не сможет их принять, т.к. не запрограммирован.
ktchv
Цитата(a3r3 @ Aug 31 2007, 03:17) *
Нет. После заполнения буфера будет выставлен ENDRX. RXRDY придет чуть позже, когда SSC получит новые данные, а PDC не сможет их принять, т.к. не запрограммирован.


То есть в ENDRX буфер надо считать, и там же написать снова

AT91C_BASE_PDC_SSC->PDC_RPR=(unsigned int)buffer;
AT91C_BASE_PDC_SSC->PDC_RCR=len;

?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.