When WAVSEL = 10, the value of TC_CV is incremented from 0 to the value of RC, then auto-
matically reset on a RC Compare. Once the value of TC_CV has been reset, it is then
incremented and so on.
AT91_TC_WAVESEL_UP_AUTO (2 << 13)
значение счетчика должно колебаться в зависимости от латентности прерывания, но если брать идеальный случай значение счетчика в обработчике должно быть 0.
Точно, если ставить скажем бит остановки после срабатывания то
получим как раз число 50000, все как и положенно. А если считывать как говорится в процессе работы, то да счетчик начинает очень круто плавать, потому что мы считываем а он уже насчитал там кучу всего....
По счетчику я вроде как понял Спасибо.
Но все это было сделано, чтобы посчитать минимальное время срабатывания. Идея была такой:
Включаем таймер и измеряем счетчик и как только мы перестаем успевать измерять его тобишь значения начинают плавать, то мы как бы перешли предел....
Но получается что с этим счетчиком мы так не посчитаем...
А может есть аналог rdtsc для АРМ (at91sam9g20-ek)
Тогда бы мы смогли как раз это время и проверить... скажем срабатыват таймер первый раз через 100 тактов, второй раз через 100 (+-5%) и.т.д значит мы успеваем обработать нашу процедуру все ок... (в предположении что таймер срабатывает через 100 тактов) если же нет (второй или какой то раз вошли в процедуру через 200 тактов), то получается что вышли за пределы, так как получается наложение...
Ведь у нас при обработки прерывания , пока не выйдем из процедуры прерывания, нового прерывания не будет я ведь правильно понимаю?
Да чет и правда мутно написал :)
Давайте на живом примере: Вот скажем в Windows есть таймер которому можно задать время аж 1 милиСек. Но как известно он всре равно будет срабатывать через ~15 МилСек. Так как 15 для таймер предельное значение.
Каким образом мы можем подсчитать это минимальное время срабатывания? нам необходим счетчик который скажем считает такты процессора для Интел это rdtsc вот если этот счетчик записывать в момент срабатывания таймера, то мы можем четко сказать через сколько срабатывает таймер... (имя ряд значений скажем 10 срабатываний таймера и для каждого записали значение rdtsc)
Теперь что касается АРМ. я хочу посчитать минимальное время за которое успеет обработаться прерывание и при этом не будет такой ситуации когда мы еще обрабатываем процедуру прерывания, а генерится новое прерывание.