Jump to content

IMXO

Moderators
  • Content Count

    11980
  • Joined

  • Last visited

  • Days Won

    6

IMXO last won the day on July 1 2018

IMXO had the most liked content!

Community Reputation

2159 Очень хороший

About IMXO

  • Rank
    system error

Информация

  • Пол
    Мужчина
  • Город
    НовоВасюки

Электроника

  • Стаж в электронике
    Не связан с электроникой

Recent Profile Visitors

  1. вот интересно вы какой ожидаете результат в попытке 32бита впихнуть в 16битную переменную? ну и тему перечитайте формула частоты и как она получается выше написано.
  2. КМК 1. DEC декремент , что-то вычитаем 2. ACC переменное напряжение, подстройка делителя напряжения 3. ХЗ 4. GAIN регулировка усиления ОУ 5. ILIMIT установка ограничения тока 6. NMAX установка максимальных оборотов 7. JOG толчек/импульс
  3. судя по всему не дошло... не первые 16бит, а старшие 16бит , когда считается сумма, младшие 16бит берутся из текущего состояния таймера SumNew = timer + TCNT1 можно и просто инкрементировать timer описавши его как unsigned int , но тогда при нахождении суммы нужно принудительно компилятору указывать размерность переменной при сложении SumNew = ((unsigned long int)timer)<<16 + TCNT1
  4. /* Locate array[] in flash memory */ const __flash int array[] = { 3, 5, 7, 11, 13, 17, 19 }; или нет?
  5. затем, что включив предделитель на таймере, вы его загрубили возьмем средний тахометр 12000обр/мин это 200Гц или 5000мкс инкремент таймера у вас 32мкс те всего 156 тактов формула расчета F=1875000/N F=1875000/156=12019обр/мин F=1875000/157=11942 F=1875000/158=11867 те единица отсчета на придельной частоте дает ошибку в +/-75..77 обр/мин те чем меньше время приращения таймера тем точнее измерение на приделе тахометра, и тем больше нужна разрядность счетчика на нижнем приделе тахометра. все тоже самое... пока МК зашел в прерывание пока выполнил нужные вычисление таймер тикает, обнулил = создал ошибку сделал вычитание = нивелировал ошибку
  6. timer+=(1<<16) могу, предположим вы настроили таймер на приращение 1мкс. пусть таймер переполнился 10 раз, и когда прошло прерывание от ногадрыга таймер досчитал до пусть будет 34566, то в сумме вы получите SumNew = 10*2^16+34566 = 689926 при первом проходе SumLast=0 то T = SumNew - SumLast = 689926 - 0 = 689926мкс F=60/(T*10^-6)=60000000/T = 86 обр/мин если нужно точнее F=600/(T*10^-6)=600000000/T = 86,9 обр/мин (естественно получим 869 , а запятую ставим сами в нужном месте)
  7. в принципе да, только подразумевался инкремент старших 16 бит, и по ногадрыгу таймер не обнуляется.
  8. сам алгоритм вычисления периода. обычно запускается 16-и битный таймер, в прерывании по переполнению таймера инкриминируется переменная тайм 32бит в прерывании от ногадрыга читается таймер и складывается с тайм , полученная сумма вычитается из предыдущего значения суммы и получается значение периода в тактах таймера. далее полученные значения пропускаются через цифровой фильтр скользящего среднего и переводятся в частоту. ЗЫ и использовать тип флоат в 8-ми битниках кагбе моветон.
  9. https://forum.cxem.net/index.php?/topic/183908-как-подружить-attiny-2313-и-биполярный-шаговый-двигатель/&do=findComment&comment=2690436
  10. не... КМК протеус такую хотелку не умеет.
  11. о каких семействах речь, если изменяется всего один параметр? или вы что-то не договариваете?
  12. только потому, что напряжения на конденсаторах симулятор поставил по дефолту. КМК в реальности, в не зависимости, есть RC-цепь на 2 выводе или нет, 555й сразу сформирует импульс при подаче питания.
  13. ТС вы предыдущий пост смогли прочитать? что не понятно в написанном?
×
×
  • Create New...