Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Микроконтроллеры (MCU) и микропроцессоры (MPU) > скорость тиканья таймера


Автор: supercelt 14.9.2017, 22:02
Привет! Хочу посоветоваться... вот кусок кода. МК stm32f405

Код

case 1:
if(TIM6->CNT >= (10*KEY_SCAN_DELAY)){
row_port[0]->BSRRL = (1 << row_pin[0]); //1
state = 2;
TIM6->CNT = 0;
GPIOB->ODR |= (1<<14);
}
break;


ставлю точку останова на state=2 и начинаю шагать.
TIM6->CNT = 0; - обнуляет, но при обнулении допустим с 480 перескачет сразу на 300
а когда я перехожу на следующую строку, в TIM6->CNT уже 613. 

Настройки:

Код

//TIM6
    RCC->APB1ENR |= RCC_APB1ENR_TIM6EN;
    TIM6->PSC |= 8399; //F = 10 kHz; Fmax TIM6 = 84 mHz
    TIM6->ARR = 65535;


то есть вопрос, может ли 1 строчка занимать 300 тиков таймера с частотой 10 кгц?

Автор: xvr 15.9.2017, 16:34
Предполагаю, что все это происходит в отладчике на реальном процессоре. так же предполагаю, что отладчик не останавливает весь CPU когда программа остановлена (в частности таймер может продолжать считать). Тогда вполне возможно, что 1 строчка + нажатие пары клавиш на клавиатуре РС (что бы до этой строчки дойти) вполне может насчитать в таймере и 300 и 3000 и сколько угодно  smile 

Автор: supercelt 15.9.2017, 16:43
Аааа, не понятно. А то я уже начал волноваться)))

Автор: Мелена 30.9.2017, 16:04
а вот мне непонятно

Автор: Курсант 5.11.2017, 20:20
Мелена, а чего непонятного? После того, как Вы настроили тактирование периферийных устройств, они работают самостоятельно, параллельно с ядром, общение ядра и периферии обычно происходит через специальные регистры или через шину. Если Вы остановили выполнение программы ядром в режиме отладки, это ещё не значит, что вся периферия остановилась. Вполне возможно, что таймеры продолжают считать, контроллеры интерфейсов - отправлять и принимать данные, выставлять флаги прерываний, и так далее. А ядро остановлено, и программист копается в коде. А периферия работает.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)