реклама на сайте
подробности

 
 
> Есть сансеи по AVRам?, Есть сансеи по AVRам?
bigen
сообщение Jul 14 2004, 13:09
Сообщение #1





Группа: Свой
Сообщений: 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:
и т.д. - все в порядке. В чем разница? Ведь можно же читать сразу входной байт, где ошибка?
Go to the top of the page
 
+Quote Post
2 страниц V   1 2 >  
Start new topic
Ответов (1 - 14)
Ander
сообщение Jul 14 2004, 13:38
Сообщение #2


Участник
*

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



А в чем проверял? На симуляторе небось?
Go to the top of the page
 
+Quote Post
maegg
сообщение Jul 15 2004, 06:54
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 129
Регистрация: 22-06-04
Из: S. Peterburg
Пользователь №: 103



попробуй заменить jmp на rjmp, сам не проверял но у атмела в примерах так.
Go to the top of the page
 
+Quote Post
Maxim
сообщение Jul 15 2004, 10:24
Сообщение #4


Участник
*

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



Между командами записи и чтения поставь NOP и все заработает.
Например:
OUT PORTA, R16
NOP
IN R16, PINA
Go to the top of the page
 
+Quote Post
alt
сообщение Jul 23 2004, 14:08
Сообщение #5





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



вы дали не весь код нет команды записи в порт.
непонятно среда, на чем отлаживалась программа (софтверно или на железе).
Бывают ошибки с адресацией к портам ввода вывода.
Входной и выходной имеют различные адреса.

Паузу в виде nop , делать не надо если схема разработана корректно все работает без задержек.
Go to the top of the page
 
+Quote Post
bvn123
сообщение Aug 9 2004, 11:52
Сообщение #6


Частый гость
**

Группа: Свой
Сообщений: 112
Регистрация: 9-08-04
Пользователь №: 468



Если проверка в симуляторе и предв.выполнено:
ser
Go to the top of the page
 
+Quote Post
bvn123
сообщение Aug 9 2004, 11:58
Сообщение #7


Частый гость
**

Группа: Свой
Сообщений: 112
Регистрация: 9-08-04
Пользователь №: 468



Если выполнено:
ser r16
out DDRA,r16
out PORTA,r16
in r16,PINA ;то без доп.действий в r16 и будет 0хff,

для получения другого результата
-в симуляторе в IO view | PORTA | PINA надо сбросить какой-нибудь флажок непосредственно перед считыванием (in r16,PINA)
-в железе соединить с нулем какой-нибудь контакт PORTA до выполнения соотв.куска программы
Go to the top of the page
 
+Quote Post
bvn123
сообщение Aug 9 2004, 12:01
Сообщение #8


Частый гость
**

Группа: Свой
Сообщений: 112
Регистрация: 9-08-04
Пользователь №: 468



Если выполнено:
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 до выполнения соотв.куска программы
Go to the top of the page
 
+Quote Post
DIM
сообщение Aug 10 2004, 08:27
Сообщение #9


Участник
*

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



NOP после чтения очень помогает
порты обновляются в следующей команде
аналогично на вывод
Go to the top of the page
 
+Quote Post
alt
сообщение Sep 1 2004, 11:45
Сообщение #10





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



Не надо вставлять лиший код в программу.
Микруха прекрасно отрабатывает чтение из портов, и не требует дополнительных задержек.
Go to the top of the page
 
+Quote Post
Styv
сообщение Oct 20 2004, 08:52
Сообщение #11


Частый гость
**

Группа: Свой
Сообщений: 133
Регистрация: 16-08-04
Пользователь №: 504



И это точно!
Go to the top of the page
 
+Quote Post
Himer
сообщение Oct 20 2004, 13:07
Сообщение #12


Участник
*

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



Задержки нужны есле относительно большая емкостная нагрузка на выходе висит. например кнопки и т.п.
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Oct 20 2004, 14:41
Сообщение #13


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Абсолютно прав Maxim и без всяких "если".
В Атмеловских даташитах об этом однозначно говорится, что появление сигнала на выходе порта происходит в следующем такте после исполнения соответствующей команды записи в порт. Поэтому команда чтения из соответствующего пина ОБЯЗАНА отставать от команды записи хотя бы на один такт (команда NOP как минимум), иначе будет считано предыдущее состояние пина.
При пошаговой отладке, например через JTAG, может показаться, что это не верно, т. к. тактовый генератор не останавливается и нужные такты проскакивают как раз между соседними шагами.
Go to the top of the page
 
+Quote Post
-Tумблер-
сообщение Dec 2 2004, 11:01
Сообщение #14


Частый гость
**

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



Цитата(IgorKossak @ Oct 20 2004, 17:41)
.. появление сигнала на выходе порта происходит в следующем такте

.. (команда NOP как минимум)..
*


Почему то у Меги128 (16 мГц) "для гарантии" требуется
2 NOP..
sad.gif


--------------------

- ЗАМЕНЯТЬ ДЕТАЛИ НА ХОДУ ВОСПРЕЩАЕТСЯ !!! -
Go to the top of the page
 
+Quote Post
Idler
сообщение Dec 3 2004, 21:57
Сообщение #15





Группа: Новичок
Сообщений: 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-триггера. Соответственно, им еще такт нужен. На самом деле, пол-такта, но пол-нопа в программу не засунешь. Ну, и плюс вышеупомянутый ноп.
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 11:04
Рейтинг@Mail.ru


Страница сгенерированна за 0.0147 секунд с 7
ELECTRONIX ©2004-2016