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

 
 
> За сколько тактов происходит запись данных в порт?
zheka
сообщение Apr 6 2009, 10:43
Сообщение #1


Гуру
******

Группа: Участник
Сообщений: 2 072
Регистрация: 14-01-06
Пользователь №: 13 164



Интересует не только как бы способность контроллера, но и особенность ассемблирования Сшного кода такими компиляторами, как CodeVision, WinAVR.

То есть к примеру я написал следующее:

CS=1; //допустим это чипселект
PORTA=0xFF;

ОДновременно ли появятся логические единицы на выходах?
На сколько тактов они будут отставать появления лог.1 на CS?

Повторюсь - я пишу на С, и писать некоторые функции в ассемблере буду только в случае крайней необходимости.
Спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 4)
defunct
сообщение Apr 6 2009, 10:51
Сообщение #2


кекс
******

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



Цитата(zheka @ Apr 6 2009, 13:43) *
CS=1; //допустим это чипселект
PORTA=0xFF;

ОДновременно ли появятся логические единицы на выходах?
На сколько тактов они будут отставать появления лог.1 на CS?

Если компилятор сгенерит

Код
ldi   rd, 0xFF
sbi  PORTx, xx
out  PORTA, rd


то разница между CS и данными будет в 1 такт.

Если код будет таким:

Код
sbi  PORTx, xx
ldi   rd, 0xFF
out  PORTA, rd


Тогда разница в 3 такта.


На порту A единицы появятся одновременно. Вывод в порт - 1 такт.
Другие варианты надо смотреть отдельно. Сколько выполняется та или иная команда смотрите в AVR Instruction Set Reference, либо в симуляторе AVR-Studio.
Go to the top of the page
 
+Quote Post
=GM=
сообщение Apr 6 2009, 11:58
Сообщение #3


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Вроде бы команда sbi PORTx,xx выполняется за 2 такта или я что-то пропустил?


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
defunct
сообщение Apr 7 2009, 00:40
Сообщение #4


кекс
******

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



Цитата(=GM= @ Apr 6 2009, 14:58) *
Вроде бы команда sbi PORTx,xx выполняется за 2 такта или я что-то пропустил?

Вы ничего не пропустили насчет команды sbi, время ее выполнения 2 такта, запись непосредственно в бит порта во втором такте.

Команда out (Вывод в порт) выполняется за 1 такт,
а соотв, минимальное время между установкой CS и установкой порта A равно одному такту.
Go to the top of the page
 
+Quote Post
adc
сообщение Apr 7 2009, 06:33
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 409
Регистрация: 29-10-07
Пользователь №: 31 836



здесь один такт:
Код
ldi   rd, 0xFF;1такт
sbi  PORTx, xx;2 такта
out  PORTA, rd;1 такт


здесь два:
Код
sbi  PORTx, xx;2 такта
ldi   rd, 0xFF;1такт
out  PORTA, rd;1 такт


rolleyes.gif


--------------------
Умный программист пишет тупым кодом гениальные вещи, а не наоборот...
Go to the top of the page
 
+Quote Post

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

 


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


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