[an error occurred while processing this directive]
Ответ: проблема проявляется в том, что (+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

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

Отправлено Dimych76 13 ноября 2002 г. 10:33
В ответ на: Ответ: отправлено SergeyL 13 ноября 2002 г. 09:17

Вот выдержка(условная) из кода, который пересылает данные в TX порт (300h):

out TX_CMD_PORT, TX_START_ALL_BYTES ; (304h)<-0C0h
nop
out TX_LEN_PORT, длина пакета (в байтах, четная); (306h)<-длина
nop

;вот тут затычка иногда :(
out ADD_PORT, PP_BusST; (30Ah)<-138h
nop
$1:
in tmp_register, DATA_PORT; (30Ch)->tmp_register
nop
bit tmp_register, 8; проверяем бит готовности READY_FOR_TX_NOW
bbz $1; если не установлен, то ждем его установки

; далее следует пересылка данных из памяти в порт контроллера 300h

Так проблема в том, что 1, 10, 100 , 200 пакетов могут переслаться нормально (как и должно быть), а , например, на 201 пакете он встанет в этом цикле ожидания готовности на пересылку (ждет установку бита READY_FOR_TX_NOW)и будет вертеться в нем секунд 10, 20, 30.. а потом опять нормально пойдет. Остальные флажки ни о чем не говорят о причине, почему он так долго не выставляет этот бит готовности.
прерывания не использую.Пакеты посылаю с периодом от 100мс, до 1 сек. Разницы никакой

в чем может быть проблема?

Спасибо.

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

Ответы



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

E-mail: info@telesys.ru