bigen 0 14 июля, 2004 Опубликовано 14 июля, 2004 · Жалоба Читаю IN R16,PINA - записывается последний байт, который передавал из порта. Читаю по-битно SBIS PINA,0 JMP M ORI R16,01 M1: SBIS PINA,1 JMP M1 ORI R16,02 M1: и т.д. - все в порядке. В чем разница? Ведь можно же читать сразу входной байт, где ошибка? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ander 0 14 июля, 2004 Опубликовано 14 июля, 2004 · Жалоба А в чем проверял? На симуляторе небось? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
maegg 0 15 июля, 2004 Опубликовано 15 июля, 2004 · Жалоба попробуй заменить jmp на rjmp, сам не проверял но у атмела в примерах так. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Maxim 0 15 июля, 2004 Опубликовано 15 июля, 2004 · Жалоба Между командами записи и чтения поставь NOP и все заработает. Например: OUT PORTA, R16 NOP IN R16, PINA Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alt 0 23 июля, 2004 Опубликовано 23 июля, 2004 · Жалоба вы дали не весь код нет команды записи в порт. непонятно среда, на чем отлаживалась программа (софтверно или на железе). Бывают ошибки с адресацией к портам ввода вывода. Входной и выходной имеют различные адреса. Паузу в виде nop , делать не надо если схема разработана корректно все работает без задержек. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bvn123 0 9 августа, 2004 Опубликовано 9 августа, 2004 · Жалоба Если проверка в симуляторе и предв.выполнено: ser Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bvn123 0 9 августа, 2004 Опубликовано 9 августа, 2004 · Жалоба Если выполнено: ser r16 out DDRA,r16 out PORTA,r16 in r16,PINA ;то без доп.действий в r16 и будет 0хff, для получения другого результата -в симуляторе в IO view | PORTA | PINA надо сбросить какой-нибудь флажок непосредственно перед считыванием (in r16,PINA) -в железе соединить с нулем какой-нибудь контакт PORTA до выполнения соотв.куска программы Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bvn123 0 9 августа, 2004 Опубликовано 9 августа, 2004 · Жалоба Если выполнено: ser r16 out DDRA,r16 out PORTA,r16 in r16,PINA ;то без доп.действий в r16 и будет 0хff, для получения другого результата -в симуляторе в IO view | PORTA | PINA надо сбросить какой-нибудь флажок НЕПОСРЕДСТВЕННО перед считыванием (in r16,PINA), после следующего шага галочка восстановится (для симулятора AVR Studio 3.xx) -в железе соединить с нулем какой-нибудь контакт PORTA до выполнения соотв.куска программы Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DIM 0 10 августа, 2004 Опубликовано 10 августа, 2004 · Жалоба NOP после чтения очень помогает порты обновляются в следующей команде аналогично на вывод Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alt 0 1 сентября, 2004 Опубликовано 1 сентября, 2004 · Жалоба Не надо вставлять лиший код в программу. Микруха прекрасно отрабатывает чтение из портов, и не требует дополнительных задержек. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Styv 0 20 октября, 2004 Опубликовано 20 октября, 2004 · Жалоба И это точно! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Himer 0 20 октября, 2004 Опубликовано 20 октября, 2004 · Жалоба Задержки нужны есле относительно большая емкостная нагрузка на выходе висит. например кнопки и т.п. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
IgorKossak 0 20 октября, 2004 Опубликовано 20 октября, 2004 · Жалоба Абсолютно прав Maxim и без всяких "если". В Атмеловских даташитах об этом однозначно говорится, что появление сигнала на выходе порта происходит в следующем такте после исполнения соответствующей команды записи в порт. Поэтому команда чтения из соответствующего пина ОБЯЗАНА отставать от команды записи хотя бы на один такт (команда NOP как минимум), иначе будет считано предыдущее состояние пина. При пошаговой отладке, например через JTAG, может показаться, что это не верно, т. к. тактовый генератор не останавливается и нужные такты проскакивают как раз между соседними шагами. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
-Tумблер- 0 2 декабря, 2004 Опубликовано 2 декабря, 2004 · Жалоба .. появление сигнала на выходе порта происходит в следующем такте .. (команда NOP как минимум).. <{POST_SNAPBACK}> Почему то у Меги128 (16 мГц) "для гарантии" требуется 2 NOP.. :( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Idler 0 3 декабря, 2004 Опубликовано 3 декабря, 2004 · Жалоба .. появление сигнала на выходе порта происходит в следующем такте .. (команда NOP как минимум).. <{POST_SNAPBACK}> Почему то у Меги128 (16 мГц) "для гарантии" требуется 2 NOP.. :( <{POST_SNAPBACK}> Потому, что даташиты внимательно читать надо. Открой DS на AT90Sxx и на ATMEGAxx, зайди в раздел I/O Ports, и посмотри схему любого порта. В мегах на всех входах появилась такая штука, как "Synchronizer" - цепочка из защелки и D-триггера. Соответственно, им еще такт нужен. На самом деле, пол-такта, но пол-нопа в программу не засунешь. Ну, и плюс вышеупомянутый ноп. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться