Jump to content

vd_

Members
  • Content Count

    3
  • Joined

  • Last visited

Community Reputation

0 Обычный

About vd_

  • Rank
    Новенький

Электроника

  • Стаж в электронике
    Менее года
  1. Что вы имеете ввиду под родным отладчиком? AVRStudio4? Я пролистал инструкцию - вроде ничего об этом. Подскажите пожалуйста из какого раздела какого документа можно ознакомится с этим средством. это для зубошлифовального станка, там счетчик оборотов для индикации двойных ходов долбяка на шкиву перед шатуном, зажигания совсем нет, от электромотора приводится...
  2. Именно так. Если вычисления объемные (в смысле, занимают много времени) то лучше вынести в главный цикл, чтобы не мешать другим прерываниям. Если короткие - то можно и в прерываниях. Но в любом случае, естественно, они должны успевать укладываться в интервал между прерываниями. К МК, особенно если это AVR, это относится в большей мере, чем к компам, по причине гораздо меньшей вычислительной мощности. С STM32 это не так актуально. Вообще, в МК избегают арифметики с плавающей точкой, заменяя ее арифметикой с фиксированной точкой, а функции вычисляют не разложением в ряд Тейлора, а таблично с кусочно-линейной интерполяцией. Основной принцип - как можно меньше вычислений. Теперь как замерить время выполнения процедур. Если есть свободный таймер, используешь его. В процедуру вначале вставляешь сброс этого таймера, а в конце запоминаешь то значение, которое он успел насчитать. Это и будет время в "тиках". Его можно преобразовать к единицам времени и вывести на индикацию. Или на терминал через UART. Спасибо - я подозревал что-то в этом роде. А если например расчеты занимают много циклов и неукладываются в предпологаемый интервал между прерываниями наверное нужно запрещать прерывания перед началом расчетов CLI и снова разрешать по окончании SEI? Это обычный индуктивный датчик - он стоит на шкиву с шестью дырками для облегчения, это можно представить как спицы в колесе. Есть металл перед датчиком - на выходе датчика 24в, нет металла - 0в, шесть раз сменился сигнал = один оборот вала.
  3. Подскажите пожалуйста как можно замерить время выполнения сабрутин? Есть ли такие средства в AVRStudio или ещё где? Обдумываю как правильно построить програмку тахометра - сначала делал расчеты в обработчике прерывания таймера, потом в основном цикле, а теперь запутался. Это из Ревича Практическое програмирование основной код и динамическая индикация отсюда http://smartep.ru/index.php?category=electronics&group=project&id=2 Если я правильно понимаю - из прерывания нужно выходить быстро, и делать там по возможности мало. Или к микроконтроллерам это не относится? Ещё такой вопрос - там на входе будет сигнал с индуктивного датчика 24в - его можно просто через резистор понизить (до 5?) и на входной транзистор? Или нужно как-то развязывать? И последний вопрос - почему в протеусе семисегментный индикатор так медленно обновляется когда стробы через транзисторы подключены? Пока было напрямую от атмеги обновлялось нормально, как только добавил транзисторы - перестали прорисовываться цифры. Если нажать паузу и в дебагере прошагать - всё прорисовывается как надо, а если просто выполняется - пусто. Я добавил задержку - в строке 353 поменял 5 на 190 - вроде стало прорисовываться, но обновляется очень медленно. Это в протеусе проблема или я чего-то не так делаю? Заранее спасибо за ответ tacho.zip
×
×
  • Create New...