Вот никак не могу понять, как работает оператор if().
Определение выполнения условия (в моем случае- лог. 0) на некотором пине происходит в тот момент, когда в программе наступает черед выполнения этого оператора? Или это происходит только по фронту сигнала, или как-то иначе?
За сколько тактов МК успевает "сбегать" проверить байт порта и вернуться обратно?
1. ОЛЕГ - 09 Марта, 2010 - 23:59:45 - перейти к сообщению
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 вроде по ДС...