Форум myROBOT.ru » Лаборатория » Микроконтроллеры » Работа оператора if().

Страниц (1): [1]
 

1. ОЛЕГ - 09 Марта, 2010 - 23:59:45 - перейти к сообщению
Вот никак не могу понять, как работает оператор if().

Определение выполнения условия (в моем случае- лог. 0) на некотором пине происходит в тот момент, когда в программе наступает черед выполнения этого оператора? Или это происходит только по фронту сигнала, или как-то иначе?
За сколько тактов МК успевает "сбегать" проверить байт порта и вернуться обратно?
2. nest - 10 Марта, 2010 - 00:20:48 - перейти к сообщению
ОЛЕГ пишет:
За сколько тактов МК успевает "сбегать" проверить байт порта и вернуться обратно?
посмотреть дизассемблером.
Что там компилятор наворотил - иногда полезно знать, что бы прикинуть, как долго будет код выполняться. И это ещё зависит от всяких там оптимизаций...

А вот в асм - все такты в твоих руках, за что мы его и любим :)

ещё для информации: ВСЕ ноги 8-bit-AVR (кроме пары штук, да и то не у всех камней) имеют синхронизацию с тактовым сигналом. Поэтому "фронт/спад" всех импульсов снаружи "синхнонизируется" с тактовым генератором ядра МК.
3. ОЛЕГ - 10 Марта, 2010 - 00:32:46 - перейти к сообщению
nest пишет:
А вот в асм - все такты в твоих руках, за что мы его и любим Улыбка


Вот поэтому мысленно этот вопрос я тебе и адресовал. Улыбка Ты представляешь себе "анатомию" и "физиологию" МК и знаешь как там чего.

За подсказку с синхронизацией- спасибо, я этого не знал. Все встало на свои места.

У меня проверка проходит за три такта, если я ничего не путаю.

Спасибо, nest. Улыбка
4. redcat - 10 Марта, 2010 - 10:37:46 - перейти к сообщению
Чувствую я, что скоро для моих потребной придётся асм ффтыкать...
5. бот_м_16 - 11 Марта, 2010 - 00:38:53 - перейти к сообщению
2олег 3 такта както многовато 1-1.5 вроде по ДС...