Может, потому что они висят на одном и том же таймере?константин_KoSS_89 писал(а):неполучаеться связать програмный ШИМ и приём IR команд, вобще запутался. БрррррМяяяуу.....
BASCOM AVR в вопросах и ответах
- Секретный кот
- Поставщик валерьянки для Кота
- Сообщения: 2106
- Зарегистрирован: Ср сен 17, 2008 14:32:15
- Откуда: Старые Васюки
- Контактная информация:
- Реклама
- константин_KoSS_89
- Вымогатель припоя
- Сообщения: 602
- Зарегистрирован: Пн дек 29, 2008 01:40:28
- Откуда: (Украина, г. Стаханов, Луганская обл.) теперь Кемерово :)
- Секретный кот
- Поставщик валерьянки для Кота
- Сообщения: 2106
- Зарегистрирован: Ср сен 17, 2008 14:32:15
- Откуда: Старые Васюки
- Контактная информация:
Я как раз об этом и говорю:константин_KoSS_89 писал(а):Нет, приём был в постоянном цикле, а шим я повесил на таймер0.....
Вы пытались одновременно повесить на один таймер две совершенно разные функции. ШИМ надо переносить на таймер1 (если он есть в данном МК).GETRC5( address, command )
Uses
TIMER0
Since a timer is needed for accurate delays and background processing TIMER0 is used by this statement.
Also the interrupt of TIMER0 is used by this statement.
TIMER0 can be used by your application since the values are preserved by the statement but a delay can occur. The interrupt can not be reused.
Даже остановленные часы два раза в сутки показывают правильное время.
- константин_KoSS_89
- Вымогатель припоя
- Сообщения: 602
- Зарегистрирован: Пн дек 29, 2008 01:40:28
- Откуда: (Украина, г. Стаханов, Луганская обл.) теперь Кемерово :)
- Реклама
- Gryphon
- Нашел транзистор. Понюхал.
- Сообщения: 152
- Зарегистрирован: Пн ноя 03, 2008 12:08:42
- Откуда: Владивосток
- Контактная информация:
Привет всем! Недавно решил на мотоцикл спроектировать полностью приборную панель (а то из-за многих переделок у меня только поворотники на спидометре работают, а все остальное-нет). Начал все с того, что нужно сначала сделать спидометр с одометром и сразу появились первые грабли-слишком долго нужно ждать для получения результата скорости. Датчик я недавно нашел под него 4-х импульсный. Вот код:
Сначала программа находит частоту, а потом из частоты-в скорость, при этом нужно также юзать радиус колеса. В программе я использовал формулу с физики, поэтому так глупо получилось. Где-то видел пример (не помню, где и как ) как использовать таймер для счета скорости за 1 сек, чтобы разгрузить программу МК от ожидания.
Теперь о второй проблеме. Т.к. программа ждет аж 1 сек, то 100% невозможно засунуть все это безобразие в МК с семи сегментными индикаторами. Если кто-то что-то знает - откликнитесь, а то уже месяц борюсь, и не как.
P.s. Если кто-нибудь делал звук стука, переключения или проч. (как в "Рыцарь дорог", когда на спидометре изменялись цифры) или близких звуков-киньте пример.
Код: Выделить всё
$regfile = "m32def.dat"
$crystal = 4000000
Config Timer1 = Counter , Edge = Falling , Prescale = 1
Config Lcdpin = Pin , Db4 = Portc.1 , Db5 = Portc.2 , Db6 = Portc.3 , Db7 = Portc.4 , E = Portc.5 , Rs = Portc.6
Config Lcd = 16 * 2
Stop Counter1
Dim Speed As Single
Dim Speedo As Word
Dim Odo As Integer
Cls
Const 2pi = 6.28
Const R = 0.15
Do
Counter1 = 0
Start Counter1
Waitms 1000
Stop Counter1
Speed = Counter1
Speed = Speed / 4
Speed = Speed * 2pi
Speed = Speed * R
Speed = Speed / 1000
Speed = Speed * 3600
Speedo = Speed
Odo = Odo + Counter1
Locate 1 , 1
Lcd "U= :" ; Speedo ; " "
Locate 2 , 1
Lcd "odo: " ; Odo ; " "
Loop
End
Теперь о второй проблеме. Т.к. программа ждет аж 1 сек, то 100% невозможно засунуть все это безобразие в МК с семи сегментными индикаторами. Если кто-то что-то знает - откликнитесь, а то уже месяц борюсь, и не как.
P.s. Если кто-нибудь делал звук стука, переключения или проч. (как в "Рыцарь дорог", когда на спидометре изменялись цифры) или близких звуков-киньте пример.
Вы получаете от людей больше, если им противоречите
- Аксель
- Опытный кот
- Сообщения: 800
- Зарегистрирован: Ср апр 25, 2007 09:50:43
- Откуда: Киев
- Контактная информация:
Gryphon писал(а):Привет всем! Недавно решил на мотоцикл спроектировать полностью приборную панель .........
Кратенько по двум вопросам сразу:
конфигурация ....
в т.ч. включаешь обработку прерываний
Тебе надо по внешнему прерыванию.
включаешь свой таймер
DO
в основном цикле программы делаешь вывод чисел на семисегментники (из какихто переменных/ой - как организуешь)
LOOP
По внешнему прерыванию
(Как я понял за один оборот колеса будет четыре импульса? - данные о скорости будут обновлятся с каждым новым импульсом) :
смотришь сколько там натикало в таймере, считаешь скорость заносишь данные в переменную/е для семисегментника
обнуляешь таймер
Конец обработки внешнего прерывания.
Прога возвращается в вечный цикл на то место , где застало программу прерывание.
ps посмотреть по быстрому о прерываниях---> набираешь в редакторе баскома interrupt и тыцаешь F1.
Скелет колобка состоит из черепа.
- Аксель
- Опытный кот
- Сообщения: 800
- Зарегистрирован: Ср апр 25, 2007 09:50:43
- Откуда: Киев
- Контактная информация:
Напишите для начала вывод чисел (в будущем это будет вывод скорости) на семисегментный индикатор из переменной (или переменных - по одной штуке на один разряд)
(а дальше можно схему с этим кодом в студию...)
А по прерываниям как писать можете подсмотреть информацию тут:
http://avr.easycoding.org/projects/basc ... /index.htm
(а дальше можно схему с этим кодом в студию...)
А по прерываниям как писать можете подсмотреть информацию тут:
http://avr.easycoding.org/projects/basc ... /index.htm
Скелет колобка состоит из черепа.
- Gryphon
- Нашел транзистор. Понюхал.
- Сообщения: 152
- Зарегистрирован: Пн ноя 03, 2008 12:08:42
- Откуда: Владивосток
- Контактная информация:
Код и схема+протеус в студию.
Сразу отвечу на ваш вопрос. Схема так сделана, потому что необходимо было запихнуть МК за LED, поэтому и программка такая получилась. все в реале РАБОТАЕТ уже несколько месяев.
Сразу отвечу на ваш вопрос. Схема так сделана, потому что необходимо было запихнуть МК за LED, поэтому и программка такая получилась. все в реале РАБОТАЕТ уже несколько месяев.
- Вложения
-
- ОА - копия.rar
- (30.73 КБ) 320 скачиваний
Вы получаете от людей больше, если им противоречите
- Аксель
- Опытный кот
- Сообщения: 800
- Зарегистрирован: Ср апр 25, 2007 09:50:43
- Откуда: Киев
- Контактная информация:
Ну и прекрасно. Как интервал делать в секунду (именно прерыванием, с подробностями) - есть где-то в этой теме, пока разбирайтесь с этим.
Но более актуальной будет скорость если считать не кл-во импульсов за секунду, а считывать количество времени прошедшее от одного импульса до другого.
Попробуйте для начала сделать так - коечто должно измениться. Да и W можно будет уменьшить. (потом можно будет ещё пооптимизировать код для семисегментника
)
Ни протеуса ни баскома под руками нет
Но если совсем не разберётесь - обязательно поможем. Да, и пользуйтесь баскомовским хелпом - он достаточно подробный с готовыми примерами.
Но более актуальной будет скорость если считать не кл-во импульсов за секунду, а считывать количество времени прошедшее от одного импульса до другого.
Sub Indication
Portd.4 = 1
Call Ones_digit
Waitms W
Portd.4 = 0
Portd.3 = 1
Call Tens_digit
Waitms W
Portd.3 = 0
Portb.6 = 1
Call Hundreds_digit
Waitms W
Portb.6 = 0
End Sub
Попробуйте для начала сделать так - коечто должно измениться. Да и W можно будет уменьшить. (потом можно будет ещё пооптимизировать код для семисегментника
Ни протеуса ни баскома под руками нет
Скелет колобка состоит из черепа.
- Gryphon
- Нашел транзистор. Понюхал.
- Сообщения: 152
- Зарегистрирован: Пн ноя 03, 2008 12:08:42
- Откуда: Владивосток
- Контактная информация:
Я не совсем понял, как это организовать. В BASCOMe есть еще такая функция pulsein . Как с ней работать.Но более актуальной будет скорость если считать не кл-во импульсов за секунду, а считывать количество времени прошедшее от одного импульса до другого.
Вы получаете от людей больше, если им противоречите
- Секретный кот
- Поставщик валерьянки для Кота
- Сообщения: 2106
- Зарегистрирован: Ср сен 17, 2008 14:32:15
- Откуда: Старые Васюки
- Контактная информация:


