Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Время выполнения команд в Cortex-M3.
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
bs_p
Подскажите, пожалуйста, нет ли таблицы команд процессора Cortex-M3,
в которой указывалось бы время их выполнения.
zltigo
По ядру arm.com а вообще сколько ws Flash? Сколько ws RAM? Какая ширина данных Flash... и понеслось. Это уже НЕ AVR и иже с ним.
DpInRock
http://infocenter.arm.com/help/index.jsp?t...403c/index.html
Типа, в человеком можешь ты не быть, но в гугле понимать обязан.
GetSmart
Так же работает метод тыка.
bs_p
Спасибо за подсказку.
ReAl
А зачем это Вам?

Одной систмы команд мало, как уже сказано. Режим флеша, сочетание команд, работа шин...
На stm32f103
Код
   str куда-то в APB2
   inc r2
   str куда-то в APB2
выполняются за то же время, что и
Код
   str куда-то в APB2
   str куда-то в APB2
Просто во втором случае вторая команда str ждёт готовности шины, а в первом -- нет, за такт команды инкремента шина освободилась (на запись, это ещё никаких чтений не замешалось sm.gif ).
vallav
Цитата(DpInRock @ Jan 7 2011, 17:00) *
http://infocenter.arm.com/help/index.jsp?t...403c/index.html
Типа, в человеком можешь ты не быть, но в гугле понимать обязан.


В этом времянки нет, она есть в
http://infocenter.arm.com/help/topic/com.a...m3_r2p0_trm.pdf

Почему то в последующих ревизиях этого документа времянку убрали.
Deka
А вот интересно, если 1Wire делать, то как посчитать? Или надо для конкретного сочетания кучи параметров делать?
GetSmart
Я считал по таймеру. Там задержки от 5 мкс и выше (если память не изменяет). По таймеру без прерываний. Просто считывая текущее состояние счётчика таймера в цикле.
prottoss
Цитата(Deka @ Jan 10 2011, 19:40) *
А вот интересно, если 1Wire делать, то как посчитать? Или надо для конкретного сочетания кучи параметров делать?
1-ware можно сделать на штатном USART или использовать мост i2C<->1-Ware
Deka
Значит вывод такой, что просто по тактам программно протокол сделать довольно сложно. Нужно почти обязательно задействовать какое-либо аппаратное устройство. Оно может быть любым, лишь бы позволило сделать синхронизацию. Ок. Спасибо за пояснения.
vallav
Цитата(Deka @ Jan 11 2011, 09:25) *
Значит вывод такой, что просто по тактам программно протокол сделать довольно сложно. Нужно почти обязательно задействовать какое-либо аппаратное устройство. Оно может быть любым, лишь бы позволило сделать синхронизацию. Ок. Спасибо за пояснения.


Да не, делаете цикл из трех команд и имеете задержку от 5 наносекунд до нескольких часов с шагом в n наносекунд.
Чему равно n для данного проца - измеряете.
Но если использовать аппаратное устройство, проц при этом можно занять чем то более интересным, чем декремент регистра в цикле.

izerg

Deka, весь вопрос в точности соблюдения времянок протокола. Если надо совсем-совсем точно - то запрещаете все ( прерывания) и по тактам выстраиваете протокол. Время исполнения протокола - любая ИДЕ покажет. Но если что-то нужно поменять - такая "пирамидка" рассыпается, и приходится ее строить заново. Если контроллер работает только с одним протоколом (устройством) - то такой подход понять можно, но если снаружи происходит еще несколько событий, на которые нужно реагировать - то в итоге вы их пропустите sm.gif
Обычно жертвуют одним аппаратным таймером. Он в прерывании отмеряет время кратное всем процессам.
В алгоритме протокола - сравнивают текущее число сработок таймера и предыдущее, если настало время что-то делать - делаем, нет - дальше ожидаем. При этом процессор в состоянии реагировать на остальные внешние и внутренние раздражители. Небольшое "дрожание" времени в протоколе наблюдаться будет (например из-за заходы в прерывания), но это плата за то, что такая "пирамидка" не распадется при изменении кода.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.