Спасибо за ответ
Как сделать счетчик импульсов на AVR
- Реклама
Вообщем для того что бы посчитать число проходящих
через него предметов.
Параметры сам не знаю.
через него предметов.
Параметры сам не знаю.
Я думаю, что для тупого подсчета "взмахов хвоста" достаточно повесить конструкцию из фотоприемника, транзистора и резисторов на таймер-счетчик с внешним прерыванием.
А если еще охото знать время прибывания хвоста
в зоне датчика (а заранее знаю скорость можно определить его толщину), то можно перецепить ту же конструкцию на прерывание настроенное на срабатывание по смене состояния и мерить время между срабатываниями.
А если еще охото знать время прибывания хвоста
в зоне датчика (а заранее знаю скорость можно определить его толщину), то можно перецепить ту же конструкцию на прерывание настроенное на срабатывание по смене состояния и мерить время между срабатываниями.
- Реклама
- Сообщения: 8
- Зарегистрирован: Сб апр 10, 2010 20:21:07
- Сообщения: 17
- Зарегистрирован: Вс июл 31, 2011 03:17:15
Энкодер и Bascom-AVR. Счетчик импульсов
http://avrproject.ru/publ/ehnkoder_i_ba ... v/1-1-0-14

код в Bascom-AVR:
http://avrproject.ru/publ/ehnkoder_i_ba ... v/1-1-0-14
код в Bascom-AVR:
Код: Выделить всё
$regfile = Attiny2313.dat
$crystal = 8000000
Dim W As Word
Dim N1 As Byte
Dim N2 As Byte
Dim N3 As Byte
Dim N4 As Byte
Dim N5 As Byte
Dim N6 As Byte
Dim M1 As Long
Dim M2 As Long
Dim M3 As Long
Dim M4 As Long
Dim M5 As Long
Dim M6 As Long
Ddrd = &B11011011 ' аноды
Ddrb = &B11111111 ' сегменты
Config Int0 = Falling ' прерывание INT0 по нисходящему фронту (c + на -)
On Int0 Encod
Enable Interrupts
Enable Int0
Do ' в главном цикле отображаем количество импульсов
Portd = &B11111110
Select Case N1
Case 0 : Portb = &B11000000
Case 1 : Portb = &B11111001
Case 2 : Portb = &B10100100
Case 3 : Portb = &B10110000
Case 4 : Portb = &B10011001
Case 5 : Portb = &B10010010
Case 6 : Portb = &B10000010
Case 7 : Portb = &B11111000
Case 8 : Portb = &B10000000
Case 9 : Portb = &B10010000
End Select
Waitms 5
Portd = &B11111101
Select Case N2
Case 0 : Portb = &B11000000
Case 1 : Portb = &B11111001
Case 2 : Portb = &B10100100
Case 3 : Portb = &B10110000
Case 4 : Portb = &B10011001
Case 5 : Portb = &B10010010
Case 6 : Portb = &B10000010
Case 7 : Portb = &B11111000
Case 8 : Portb = &B10000000
Case 9 : Portb = &B10010000
End Select
Waitms 5
Portd = &B11110111
Select Case N3
Case 0 : Portb = &B11000000
Case 1 : Portb = &B11111001
Case 2 : Portb = &B10100100
Case 3 : Portb = &B10110000
Case 4 : Portb = &B10011001
Case 5 : Portb = &B10010010
Case 6 : Portb = &B10000010
Case 7 : Portb = &B11111000
Case 8 : Portb = &B10000000
Case 9 : Portb = &B10010000
End Select
Waitms 5
Portd = &B11101111
Select Case N4
Case 0 : Portb = &B11000000
Case 1 : Portb = &B11111001
Case 2 : Portb = &B10100100
Case 3 : Portb = &B10110000
Case 4 : Portb = &B10011001
Case 5 : Portb = &B10010010
Case 6 : Portb = &B10000010
Case 7 : Portb = &B11111000
Case 8 : Portb = &B10000000
Case 9 : Portb = &B10010000
End Select
Waitms 5
Portd = &B10111111
Select Case N5
Case 0 : Portb = &B11000000
Case 1 : Portb = &B11111001
Case 2 : Portb = &B10100100
Case 3 : Portb = &B10110000
Case 4 : Portb = &B10011001
Case 5 : Portb = &B10010010
Case 6 : Portb = &B10000010
Case 7 : Portb = &B11111000
Case 8 : Portb = &B10000000
Case 9 : Portb = &B10010000
End Select
Waitms 5
Loop
End
Encod: ' тут узнаем в каком направлении вращают ручку энкодера
If Pind.5 = 1 Then ' если на ноге единица (импульс не пришел) тогда
Incr W ' инкременируем переменную (увеличиваем на 1)
Else ' в обратном случае
Decr W ' декрементируем переменную (уменьшаем на 1)
End If
Waitms 5 ' ждем пока утихнет дребезг контактов
Gifr = 64 ' сбрасываем регистр хранения прерывания INT0
' а тут готовим переменную к выводу на дисплей
M1 = W
M2 = M1
M3 = M1
M4 = M1
M5 = M1
M1 = M1 / 10000 ' обработка первого разряда
N1 = Abs(M1)
M2 = M2 Mod 10000 ' обработка второго разряда
M2 = M2 / 1000
N2 = Abs(M2)
M3 = M3 Mod 1000 ' обработка третьего разряда
M3 = M3 / 100
N3 = Abs(M3)
M4 = M4 Mod 100 ' обработка четвертого разряда
M4 = M4 / 10
N4 = Abs(m4)
M5 = M5 Mod 10 ' обработка пятого разряда
N5 = Abs(m5)
Return
- Вложения
-
- s19234711.jpg
- shem_m
- (20.28 КБ) 11829 скачиваний
-
- 19234711.png
- shem
- (87.23 КБ) 1053 скачивания
-
- counter.rar
- arhiv
- (1.55 КБ) 528 скачиваний
из ХЗ делаю ТЗ
- Сообщения: 65
- Зарегистрирован: Пт авг 26, 2011 18:30:21
Есть ли смысль собирать?у нас в новосибирске с LCD стоит не больше 450 рублей (простой), при стоймости тиньки2313 126 рублей?
о! моя тема!
будем наблюдать!
Мои верные друзья - АМD и AVR
LM317 - атцтой, LM2576ADJ - форева!
LM317 - атцтой, LM2576ADJ - форева!
- Сообщения: 3961
- Зарегистрирован: Пн июл 13, 2009 14:37:39
- Откуда: Московская область, наукоград.....
Это где вы берете такие тиньки 2313?vervoolf писал(а):у нас в новосибирске с LCD стоит не больше 450 рублей (простой), при стоймости тиньки2313 126 рублей?
Давно было, но покупал в новосибирском представительстве Аргуссофта (на советской) по 37р\шт. Еще можно вточку опоры заглянуть (была на Коммунистической) а не шастать по Микронике, Радиоле и пр. Современные цены не знаю.
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Богатенькие Буратины ! Я в нашем захолустном Минске за 1$ покупал. За 3$ - AT90USB162. Вот те и кризис с инфляцией.vervoolf писал(а): у нас в новосибирске с LCD стоит не больше 450 рублей (простой), при стоймости тиньки2313 126 рублей?
А не подскажет ли ALL схему счетчика с таймером.
Т.е. выставляем время счета 5...10...45сек...1...5...10 минут(т.е. регулируемое время) и считаем число импульсов пришедших за это время.
Т.е. выставляем время счета 5...10...45сек...1...5...10 минут(т.е. регулируемое время) и считаем число импульсов пришедших за это время.
Ну так сам же весь алгоритм расписал, и все понятно : 2 счетчика, на один подаются считаемые импульсы, на другой - таймерные кварцованные, стартуются и останавливаются одновременно. А если на АВР, так это все вместо железки реализуется внутри МК программно. Программа - пара страничек ассемблера. Делов-то.eXL писал(а):А не подскажет ли ALL схему счетчика с таймером.
Т.е. выставляем время счета 5...10...45сек...1...5...10 минут(т.е. регулируемое время) и считаем число импульсов пришедших за это время.
BOB51
Где есть частотомеры с регулируемым плавно временем счета ?\
Ссылку плиз.
Где есть частотомеры с регулируемым плавно временем счета ?\
Ссылку плиз.
Последний раз редактировалось eXL Сб июн 30, 2012 16:46:25, всего редактировалось 2 раза.
Дуб я в программированииJack_A писал(а):Ну так сам же весь алгоритм расписал, и все понятно : 2 счетчика, на один подаются считаемые импульсы, на другой - таймерные кварцованные, стартуются и останавливаются одновременно. А если на АВР, так это все вместо железки реализуется внутри МК программно. Программа - пара страничек ассемблера. Делов-то.eXL писал(а):А не подскажет ли ALL схему счетчика с таймером.
Т.е. выставляем время счета 5...10...45сек...1...5...10 минут(т.е. регулируемое время) и считаем число импульсов пришедших за это время.
тогдыть ничем не поможем - обЪявляй тему как "сделайте мне того и этого под заказ" 
Открою страшную тайну ( только для участников ветки "Цифровая техника"
) - частотомеры можно делать и без МК ! Более того, именно так их и делали со времен Петра I вплоть до Ильича II . Легкими движениями руки за полдня частотомер паяется на рассыпухе типа 1533, 155 и т.п. Точность порядка 10^-5 -- легко, а если больше, надо мудрить с термостатированием опорного генератора или питаться от цезиевого стандарта частоты ( у кого есть
)
Можно ли сделать счетчик на 5 каналов, на Тиньке 2313?
[color=#4080FF]- Бежит этот подлец-электрон, а вокруг его масса (аж 10 в 23й) штук ионов кремния и 10 в 15й ионов примеси и он, подлец, взаимодействует![/color]


