Просто новость
Форумчане, голову совсем сломал с дипломом. Суть вопроса такова. Имеется микроконтроллер PIC16F84A, имеется программа на ассемблере. Так вот, имеем время выполнения цикла 400 нс при частоте 10 МГц. Допустим команда BCF, количество таковых в тексте 67, выполняется за один цикл (BCF), как посчитать время выполнения всех 67 команд? Или проще, как вообще правильно посчитать время выполнения команды.UPD: Либо 200 нс при частоте в 20 МГц.UPD2: Или думаю, что считать так. 67 команд, команды выполнятся за 67 циклов, т.е 67 х 0,2 (или 0,4), верно ли ?UPD3: И как быть, если на выполнение команды требуется 2 цикла ?На всякий случай, даташит ориджинал.Еще нарыл такую штуку:T = (N * S) / R где N-кол-во маш. комманд в программе, S - среднее кол-во выполняющихся маш. команд за 1 такт, R - тактовая частота.верно ли? Т.е получается надо вместо N - 67, вместо S - среднее количество команд, которые за один цикл выполняются и соответственно на частоту работы поделить ?
Цитата: quality от 29 Мая 2013, 09:23:00Форумчане, голову совсем сломал с дипломом. Суть вопроса такова. Имеется микроконтроллер PIC16F84A, имеется программа на ассемблере. Так вот, имеем время выполнения цикла 400 нс при частоте 10 МГц. Допустим команда BCF, количество таковых в тексте 67, выполняется за один цикл (BCF), как посчитать время выполнения всех 67 команд? Или проще, как вообще правильно посчитать время выполнения команды.UPD: Либо 200 нс при частоте в 20 МГц.UPD2: Или думаю, что считать так. 67 команд, команды выполнятся за 67 циклов, т.е 67 х 0,2 (или 0,4), верно ли ?UPD3: И как быть, если на выполнение команды требуется 2 цикла ?На всякий случай, даташит ориджинал.Еще нарыл такую штуку:T = (N * S) / R где N-кол-во маш. комманд в программе, S - среднее кол-во выполняющихся маш. команд за 1 такт, R - тактовая частота.верно ли? Т.е получается надо вместо N - 67, вместо S - среднее количество команд, которые за один цикл выполняются и соответственно на частоту работы поделить ?67*0.2 (или *0.4) [мс]- решение правильное. Если команда выполняется 2 цикла, то 67*2*0.2 (или *0.4)T=(N*S)/R - в приведенной формуле S - количество ТАКТОВ, за которые выполняется команда, а не количество команд, которые выполняются за 1 такт. (для данного микроконтроллера 1 ЦИКЛ = 4 ТАКТА),т.е. T=(67*4)/10 [мс]или, если команда выполняется 2 цикла T=(67*2*4)/10 [мс]
Если не секрет , зачем такая точность в расчетах , я обычно включаю таймер и смотрю по переполнению успел , ли я за выделенное мне время мили нет. Если пишу на C , то включаю кусок на ассемблере , иначе беру проц с большей тактовой
Цитата: kai от 29 Мая 2013, 13:07:44Если не секрет , зачем такая точность в расчетах , я обычно включаю таймер и смотрю по переполнению успел , ли я за выделенное мне время мили нет. Если пишу на C , то включаю кусок на ассемблере , иначе беру проц с большей тактовой Мне необходимо общее время выполнение команд точное. В итоге посчитав, получилось ~0,2 мс. Я доволен. У меня укладывается
Если не секрет , то что Это за девайс ??