|
Есть сансеи по AVRам?, Есть сансеи по AVRам? |
|
|
|
Jul 14 2004, 13:09
|
Группа: Свой
Сообщений: 12
Регистрация: 21-06-04
Пользователь №: 72

|
Читаю IN R16,PINA - записывается последний байт, который передавал из порта. Читаю по-битно SBIS PINA,0 JMP M ORI R16,01 M1: SBIS PINA,1 JMP M1 ORI R16,02 M1: и т.д. - все в порядке. В чем разница? Ведь можно же читать сразу входной байт, где ошибка?
|
|
|
|
2 страниц
1 2 >
|
 |
Ответов
(1 - 14)
|
Jul 14 2004, 13:38
|
Участник

Группа: Свой
Сообщений: 24
Регистрация: 9-07-04
Из: Киев
Пользователь №: 308

|
А в чем проверял? На симуляторе небось?
|
|
|
|
|
Jul 15 2004, 10:24
|
Участник

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

|
Между командами записи и чтения поставь NOP и все заработает. Например: OUT PORTA, R16 NOP IN R16, PINA
|
|
|
|
|
Jul 23 2004, 14:08
|
Группа: Свой
Сообщений: 14
Регистрация: 23-07-04
Пользователь №: 360

|
вы дали не весь код нет команды записи в порт. непонятно среда, на чем отлаживалась программа (софтверно или на железе). Бывают ошибки с адресацией к портам ввода вывода. Входной и выходной имеют различные адреса.
Паузу в виде nop , делать не надо если схема разработана корректно все работает без задержек.
|
|
|
|
|
Aug 10 2004, 08:27
|
Участник

Группа: Свой
Сообщений: 70
Регистрация: 6-07-04
Пользователь №: 277

|
NOP после чтения очень помогает порты обновляются в следующей команде аналогично на вывод
|
|
|
|
|
Sep 1 2004, 11:45
|
Группа: Свой
Сообщений: 14
Регистрация: 23-07-04
Пользователь №: 360

|
Не надо вставлять лиший код в программу. Микруха прекрасно отрабатывает чтение из портов, и не требует дополнительных задержек.
|
|
|
|
|
Oct 20 2004, 13:07
|
Участник

Группа: Свой
Сообщений: 51
Регистрация: 22-06-04
Из: Riga,Latvia
Пользователь №: 104

|
Задержки нужны есле относительно большая емкостная нагрузка на выходе висит. например кнопки и т.п.
|
|
|
|
|
Dec 2 2004, 11:01
|

Частый гость
 
Группа: Свой
Сообщений: 146
Регистрация: 4-11-04
Из: Московская область
Пользователь №: 1 040

|
Цитата(IgorKossak @ Oct 20 2004, 17:41) .. появление сигнала на выходе порта происходит в следующем такте .. (команда NOP как минимум).. Почему то у Меги128 (16 мГц) "для гарантии" требуется 2 NOP..
--------------------
- ЗАМЕНЯТЬ ДЕТАЛИ НА ХОДУ ВОСПРЕЩАЕТСЯ !!! -
|
|
|
|
|
Dec 3 2004, 21:57
|
Группа: Новичок
Сообщений: 4
Регистрация: 8-07-04
Пользователь №: 302

|
Цитата(-Tумблер- @ Dec 2 2004, 14:01) Цитата(IgorKossak @ Oct 20 2004, 17:41) .. появление сигнала на выходе порта происходит в следующем такте .. (команда NOP как минимум).. Почему то у Меги128 (16 мГц) "для гарантии" требуется 2 NOP.. :( Потому, что даташиты внимательно читать надо. Открой DS на AT90Sxx и на ATMEGAxx, зайди в раздел I/O Ports, и посмотри схему любого порта. В мегах на всех входах появилась такая штука, как "Synchronizer" - цепочка из защелки и D-триггера. Соответственно, им еще такт нужен. На самом деле, пол-такта, но пол-нопа в программу не засунешь. Ну, и плюс вышеупомянутый ноп.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|