Добрый день,
Сделал устройство на AVR+CP2200. Даташит Rev.1.0. У меня проблемка. Хочу в прерывании по приему пакета сразу на лету посмотреть, что за пакет (ARP, UDP, порт назначения итп). И если пакет мне не нужен, то сразу тут же его и откидывать. А если нужен, то выставляю флаг и позже в основном цикле пакет считаю и буду разбирать.
Ну вот, при прерывании лезу я через прямой доступ RAMRXDATA в буфер и смотрю что нужно. А потом когда доходит дело до RXAUTORD, оказывается, что указатель авточтения инкрементировался ровно столько раз, сколько я читал из RAMRXDATA. Естественно это очень мешает, т.к. не позволяет потом читать буфер.
В даташите написано, что механизмы RXAUTORD и RAMRXDATA разделены и не влияют друг на друга.
Подскажите, в чем может быть дело? Делает ли кто-нибудь такой смешанный доступ к буферу CP2200?
Пока решил проблему так. В прерывании перед доступом к принятому пакету сохраняю во временной переменной RXFIFOHEAD, а по завершении записываю его значение обратно. РАБОТАЕТ!!!
|