[an error occurred while processing this directive]
|
Вот выдержка(условная) из кода, который пересылает данные в 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