2016-03-20 12 views
0

Я пытаюсь вычислить количество циклов команд и циклов задержки для HCS12. У меня есть некоторая информация о HCS12расчет циклов задержки для hcs12

HCS12 использует часы шины (часы E) в качестве времени ссылка.

  • Частота часов E равна половине частоты встроенного генератора тактовых импульсов (часы, 48 МГц, E-clock, 24 МГц).
  • Исполнение времен инструкции также измеряется в тактах E

  • Я удивляюсь, что 24MHz кристально частоты? Если это так, только половина частоты генератора используется для времени обучения CPU. Итак, следует уменьшить вдвое?

  • Как я могу сделать 100-миллисекундную задержку для демонстрационной платы с 24-МГц шиной часов?

Для того чтобы создать временную задержку 100 мс, необходимо повторить предыдущей последовательности команд 60000 раз [100 мс ÷ (40 ÷ 24000000) мкс = 60000]. Следующая последовательность команд создаст желаемую задержку: Есть пример, но я не понимаю, как вычисляются значения 60000 и 40.

  ldx #60000  
loop  psha    ; 2 E cycles 
      pula    ; 3 E cycles 
      psha    ; 2 E cycles 
      pula    ; 3 E cycles 
      psha    ; 2 E cycles 
      pula    ; 3 E cycles 
      psha    ; 2 E cycles 
      pula    ; 3 E cycles 
      psha    ; 2 E cycles 
      pula    ; 3 E cycles 
      psha    ; 2 E cycles 
      pula    ; 3 E cycles 
      psha    ; 2 E cycles 
      pula    ; 3 E cycles 
      nop    ; 2 E cycles 
      nop    ; 3 E cycles 
      dbne x,loop 

ответ

1

В первом разделе объясняется, что если внутренний генератор (или внешний кристалл) составляет 48 МГц, EClock составляет 24 МГц. Поэтому, если вы хотите задержать на 100 миллисекунд, то есть 24 000 000 * 100/1000 EClock, а именно 2400 000 циклов обучения.

Максимальный размер регистра доступен 16-бит, так что значение счетчика цикла выбирается то есть < = 65535.

Удобно 60000 является фактором 2400000 быть 60000 * 40. Таким образом, внутренняя петля ухитрялись возьмите 40 циклов. Однако временные комментарии по последним 3 строкам неверны, они должны быть

nop    ; 1 E cycle 
nop    ; 1 E cycle 
dbne x,loop  ; 3 E cycles 

Предоставление необходимого 40-минутного времени выполнения.

Обратите внимание, что если у вас есть прерывания, другие процессы, этот жесткий код не очень точен, а прерывание таймера было бы лучше.

+0

спасибо за разъясняющее объяснение – snr