Панель приборов на мотоцикл
|
|
brut | Дата: Четверг, 31.10.2013, 00:27 | Сообщение # 1 |
Группа: Пользователи
Сообщений: 4
Статус: Offline
| Интересно сделать панель приборов на мот. Основные функции: спидометр, тахометр, уровень топлива. . Для примера хочу взять статью про частотометр. Но там надо одновременное измерение 2 частот. Не могу понять как работать с таймерами. Можете мне обьяснить как для очень туподоходящего как работать с этими штуками.
|
|
| |
exersizze | Дата: Четверг, 31.10.2013, 09:44 | Сообщение # 2 |
Группа: Администраторы
Сообщений: 723
Статус: Offline
| Нужно подключать второй таймер, конфигурируется точно также как и первый http://avrproject.ru/publ/capture_timer1_avr/1-1-0-24 но только нужно подкорректировать предделитель, потому как Timer2 у меги32 8и битный.
Код Config Timer1 = Timer , Prescale = 64 , Capture Edge = Rising Config Timer2 = Timer , Prescale = 64 , Capture Edge = Rising а больше обработка в соответствии с примером из статьи для каждого таймера
|
|
| |
brut | Дата: Пятница, 08.11.2013, 23:45 | Сообщение # 3 |
Группа: Пользователи
Сообщений: 4
Статус: Offline
| Как я понял "Capture1" это прерывание которое срабатывает при сигнале на PD6. А какой порт можно использовать для второго сигнала?
|
|
| |
brut | Дата: Суббота, 09.11.2013, 00:14 | Сообщение # 4 |
Группа: Пользователи
Сообщений: 4
Статус: Offline
| Вот попытка что-то сделать:
$regfile = "m32def.dat" $crystal = 16000000
' указываем конфигурацию подключения дисплея к портам МК
Config Lcdpin = Pin, Rs=Portc.5, E=Portc.4, Db4=Portc.0, Db5=Portc.1, Db6=Portc.2, Db7=Portc.3
Config Lcd = 16*2 ' тип используемого дисплея
'настраиваем таймер в режим захвата по восходящему фронту
Config Timer1 = Timer , Prescale = 64 , Capture Edge = Rising Config Timer2 = Timer , Prescale = 64 , Capture Edge = Rising
Dim Timercounter1 As Word Dim Period1 As Single ' период измеряемого сигнала Dim F11 As Single Dim F1 As Word Dim Timercounter2 As Word Dim Period2 As Single ' период измеряемого сигнала Dim F22 As Single Dim F2 As Word ' переменная для хранения значения частоты
Const T1 = 0.000004 Const T2 = 0.000004 ' примерное время в секундах за которое значение ' счетчика увеличивается на 1
On Capture1 Zaxvat1
Timercounter1 = 0 Waitms 50 Enable Interrupts Enable Capture1
Cursor Off
Do ' главный цикл программы
If Timercounter1 = 0 Then ' проверка значения переменной F1 = 0 ' если 0, то частота тоже 0
Else ' в обратном случае высчитываем частоту
Period1 = Timercounter1 * T1 ' определяем период F11 = 1 / Period1 ' считаем частоту F1 = Abs(f11) ' округляем до целого
End If
If Timercounter2 = 0 Then ' проверка значения переменной F2 = 0 ' если 0, то частота тоже 0
Else ' в обратном случае высчитываем частоту
Period2 = Timercounter2 * T2 ' определяем период F22 = 1 / Period2 ' считаем частоту F2 = Abs(f22) ' округляем до целого
EndIf
'выводим показания на дисплей
Cls Lcd F1 ' обороты двыигателя Lowerline Lcd F2
Waitms 100
Loop
Zaxvat1: Timercounter1 = Timer1 ' копируем значение таймера в переменную Timer1 = 0 ' обнуляем таймер Return
End
Мтодом копипастинга питался сделать что-то, но оно ругаеться на "Capture Edge" в конфигурации второго таймера. И я не знаю как записать прерывание от второго таймера, что то типа "Capture2"?
|
|
| |
exersizze | Дата: Воскресенье, 10.11.2013, 13:27 | Сообщение # 5 |
Группа: Администраторы
Сообщений: 723
Статус: Offline
| У меня без ошибок скомпилировался ваш код, но добавление второго capture не получилось. Выяснилось что у меги32 только один таймер Timer1 умеет работать в этом режиме
|
|
| |
brut | Дата: Понедельник, 11.11.2013, 02:14 | Сообщение # 6 |
Группа: Пользователи
Сообщений: 4
Статус: Offline
| Надо камень с двумя 16 бит таймерами? типа мега 162?
Сообщение отредактировал brut - Понедельник, 11.11.2013, 02:22 |
|
| |
exersizze | Дата: Понедельник, 11.11.2013, 17:48 | Сообщение # 7 |
Группа: Администраторы
Сообщений: 723
Статус: Offline
| про 162-ю не скажу, нет под рукой доков от нее, а вот у меги128 точно есть два таймера с нужным режимом. но на мой взгляд было бы проще, да и гораздо дешевле взять две тиньки 2313 и сделать на них, на одной тахометр а на другой спидометр.
|
|
| |
AlekS | Дата: Понедельник, 11.11.2013, 19:57 | Сообщение # 8 |
Группа: Проверенные
Сообщений: 247
Статус: Offline
| Тахометр и спидометр можно объединить, а вот с баком тяжелей. При езде он плещется и показания разнятся .... их надо усреднять и удерживать. Меги 8 или 16 достаточно. http://xn----7sbbil6bsrpx.xn--p1ai/spidome....x4.html Самый удачный http://speed-light.on.ufanet.ru/speedometr-mega16.shtml http://www.autolada.ru/viewtopic.php?t=106306 правда на Си но все понятно. http://www.zapravka.sura.ru/AV_avr....80.html Это на барсике, найду исходник брошу сюда.
********* Прошу не пинать, за код ))) было давно)))
Сообщение отредактировал AlekS - Понедельник, 11.11.2013, 20:28 |
|
| |
AlekS | Дата: Понедельник, 11.11.2013, 20:26 | Сообщение # 9 |
Группа: Проверенные
Сообщений: 247
Статус: Offline
| Скинул не все! Похоже найти не удастся( , но главное, с часовой микросхемы брался импульс для скорости. Вот тебе еще таймер и время.)
|
|
| |
AlekS | Дата: Суббота, 16.11.2013, 16:41 | Сообщение # 10 |
Группа: Проверенные
Сообщений: 247
Статус: Offline
| http://www.picbasic.ru/publ/spidometr_odometr_i_takhometr/4-1-0-88
|
|
| |