Хочу измерять частоту вращения вала асинхронной машины. Для этого буду использовать датчик на основе эффекта Холла (с магнитом).
По программе: коэффициент предделителя выбрал 1024, чтобы значения периода было в милисекундах (пускай и слегка не точно).
Полученное значение периода сигнала вывожу на светодиоды в двоичном виде. Далее из двоичного числа делаю десятичное. Делю полученное значение на коэффициент =16/2 (16-частота работы МК, если бы было 1МГц, то на 1000 тактов МК был 1 такт таймера. Это мне дает: Тт1=Кпреддел./Fмк=1024/1000000=1,024мс -т.е. на св-диодах я получаю период сигнала.
откуда взялась двойка: на диске у меня две прорези, т.е. я имею на диске два зуба (см фото).)
Далее математически нахожу частоту и частоту оборотов в минуту.
вот так.
Знаю, Вы скажете мне на это --
но и до этого я дошел не сразу)
С семисегментным индикатором еще не работал, поэтому применяю св-диоды.
Спойлер

Спойлер
Код: Выделить всё
.include "tn2313def.inc"
.def temp =R16
.cseg
.org 0x00 rjmp init
;ТАБЛИЦА ВЕКТОРОВ ПРЕРЫВАНИЙ
.org ICP1addr rjmp T1_capt ;(0х03) Захват таймера/счетчика Т1
.org INT_VECTORS_SIZE
;НАСТРОЙКА СТЕКА И ПОРТОВ
init: ldi temp,RAMEND
out SPL,temp
ser temp
out DDRB,temp ;В на выход с 0
ldi temp,~(1<<PD6)
out DDRD,temp ;D на выход с 0, кроме PD6
ldi temp,(1<<PD6)
out PORTD,temp ;ICP на вход БЕЗ подтяжки
;НАСТРОЙКА ТАЙМЕРА T1
ldi temp,1<<ICIE1
out TIMSK,temp ;Разрешаем прерывание по захвату Т1
ldi temp,(1<<ICNC1 | 1<<ICES1 | 1<<CS12 | 0<<CS11 | 1<<CS10)
out TCCR1B,temp ;1/1024
sei
;ОСНОВНОЙ ЦИКЛ
MAIN: rjmp MAIN
;ОБРАБОТКА ПРЕРЫВАНИЯ ПО ЗАХВАТУ
T1_capt:clr temp
out TCNT1H,temp
out TCNT1L,temp ;Обнулили счетный регистр
in ZL,ICR1L
in ZH,ICR1H
out PORTD,ZH
out PORTB,ZL ;Вывели значение периода на св-диоды
reti
вопросы:
1 можно было бы как то улучшить читабельность путем программного преобразования/расчета периода в частоту. Но как это сделать я не знаю. В интернете пишут для умножения и деления исп. команды mul и div. Но подходят ли они действительно для программирования МК и если нет, то как можно осуществить программный расчет?
2 С учетом текущей внешней схемотехникой формирования импульса мне необходимо настраивать ICP на вход с подтяжкой, верно?
3 на одном из фото указаны параметры датчика. как понять, где говорится про его предельную частоту измерения?
Спасибо!