Ответ: Станная штука. Похоже, что память не выделяется динамически
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено vit2005 29 января 2005 г. 15:50
В ответ на: Не должно такого быть отправлено fikus 29 января 2005 г. 14:15

Сценай #1
Посылаю 3 80-byte пакета и 100 ms пауза мужду пакетами
Все три пакета приняты :-)
rxStatus = 0x0904
rxLength = 0x0050

rxStatus = 0x0904
rxLength = 0x0050

rxStatus = 0x0904
rxLength = 0x0050

Сценай #2
Посылаю 3 80-byte пакета и без паузы мужду пакетами
Вс три пакета приняты :-)
rxStatus = 0x0904
rxLength = 0x0050

rxStatus = 0x0904
rxLength = 0x0050

rxStatus = 0x0904
rxLength = 0x0050

Сценай #3
Посылаю 3 298-byte пакета и 100 ms пауза мужду пакетами
Вс три пакета приняты :-)

rxStatus = 0x0904
rxLength = 0x012A

rxStatus = 0x0904
rxLength = 0x012A

rxStatus = 0x0904
rxLength = 0x012A


Сценарий #4
Посылаю 3 298-byte пакета и без паузы мужду пакетами.
Один пакет потерян :-(
rxStatus = 0x0904
rxLength = 0x012A

!!! RxMiss = 1 !!!
rxStatus = 0x0904
rxLength = 0x012A

Сценарий #5
Посылаю 3 пакета ( 178,182 и 186) и без паузы мужду пакетами.
Один пакет потерян :-(
rxStatus = 0x0904
rxLength = 0x00B2

!!! RxMiss = 1 !!!
rxStatus = 0x0904
rxLength = 0x00B6
Пакет, который был послан в середине ( 182 = 0xB4), пропал. Похоже, что Cs8900 не буфферирует пакеты. Почему ????

Я использую очень простой код для тестирования
for (;;)
{
if (CS8900_PP_READ(PP_RxEvent) & RX_OK)
CS8900_RECEIVE();

if ( CS8900_PP_READ(0x12C) & 0x0400)
printf ("\n!!! RxMiss = 1 !!!");
}

Сниффер (Ethereal) показывает все правильно. Все пакеты пролетают нормально.
У меня три платы. Результаты на всех платах идентичны.


Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru