|
За сколько времени реально осуществляется переключение направления порта?, в мегах, тинях? |
|
|
|
Mar 2 2006, 18:01
|
Гуру
     
Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521

|
Не совсем всё так просто. Порт действительно переключается на следующий такт. Это действительно можно увидеть в AVR Studio. А теперь тонкости: Как правило когда задают такой вопрос, то подразумевается что планируют операции ввода-вывода. Так вот операция ввода выполняется медленнее операции вывода. В связи с этим возникают иногда проблемы! Приведу пример рабочей программы, где это будет видно наглядно.
readusb: sbic pinb,RXF ; по готовности - продолжить rjmp PC-1 ; иначе повторить cbi portb,RD ; читать ; in wl,pind ; USB (особенности AVR ядра) sbi portb,RD ; завершить in wl,pind ; USB cpi wl, label ; метка? breq read1 ; если да, то ввести команду readex: clt ; иначе, - сбросить
Если не учитывать особенности ядра, то необходимо вводить там где стоит коментарий!
|
|
|
|
|
Mar 3 2006, 03:31
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(SasaVitebsk @ Mar 2 2006, 20:01)  ... Код cbi portb,RD; читать ; in wl,pind ; USB (особенности AVR ядра) sbi portb,RD; завершить Если не учитывать особенности ядра, то необходимо вводить там где стоит коментарий! Это не особенности ядра, а особенности алгоритма и частоты тактирования. Просто с более высойкой частотой тактирования вы промигиваете RD сильно быстро для USB, а командой in автор этого кода делал задержку на 2 такта. AVR и ядро AVR здесь абсолютно не при чем, вместо IN можно было спокойно применить две слудующих подряд команды NOP.
|
|
|
|
|
Mar 3 2006, 09:00
|
Участник

Группа: Участник
Сообщений: 40
Регистрация: 17-06-04
Пользователь №: 36

|
Я раз сталкнулся с этой проблемой на Mege8. Пришлось вводить задержку, причем 1-3 мкс было мало (при кварце 7.3728). Поставил 5 мкс - все четко заработало.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|