Цитата(defunct @ Mar 3 2006, 07:31)

Цитата(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.
Господа простите за резкость, но я не такой баран чтобы не подпирать ноги, не учитывать быстродействие подключённых устройств и т.п. Я схемотехник. И когда я привожу пример, я отвечаю за то что дополнительных схемотехнических особенностей нет!
Теперь непосредственно к defunct. Посмотрите внимательно на текст проги. Я не делаю никакую задержку там где стоит коментарий. Коментарий это коментарий!!!!
А если я туда добавлю два нопа как Вы предлагаете то как раз работать и не будет!!! Я их как раз убирал. Т.е будет правильным такой код
cbi
nop
nop
in
sbi
а код который я привёл работает не благодаря а вопреки! Потому как на момент чтения порт ещё не возвращается в "1" !!!
cbi
sbi
in
Это чётко описано в PDF на микросхему. Покрайней мере в PDFах на at90xxxxx
Код я взял с реальной проги работы с ftdi245. Применял такое несколько раз. Первый раз когда столкнулся, то бился и отлаживал, выяснял причину. Потом нашёл где-то в PDFе.
Пока.