BASCOM AVR в вопросах и ответах

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
Секретный кот
Поставщик валерьянки для Кота
Сообщения: 2106
Зарегистрирован: Ср сен 17, 2008 14:32:15
Откуда: Старые Васюки
Контактная информация:

Сообщение Секретный кот »

константин_KoSS_89 писал(а):неполучаеться связать програмный ШИМ и приём IR команд, вобще запутался. БрррррМяяяуу.....

Может, потому что они висят на одном и том же таймере? :))
Даже остановленные часы два раза в сутки показывают правильное время.
Аватара пользователя
константин_KoSS_89
Вымогатель припоя
Сообщения: 602
Зарегистрирован: Пн дек 29, 2008 01:40:28
Откуда: (Украина, г. Стаханов, Луганская обл.) теперь Кемерово :)

Сообщение константин_KoSS_89 »

Нет, приём был в постоянном цикле, а шим я повесил на таймер0.....
Аватара пользователя
Секретный кот
Поставщик валерьянки для Кота
Сообщения: 2106
Зарегистрирован: Ср сен 17, 2008 14:32:15
Откуда: Старые Васюки
Контактная информация:

Сообщение Секретный кот »

константин_KoSS_89 писал(а):Нет, приём был в постоянном цикле, а шим я повесил на таймер0.....

Я как раз об этом и говорю:
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.

Вы пытались одновременно повесить на один таймер две совершенно разные функции. ШИМ надо переносить на таймер1 (если он есть в данном МК).
Даже остановленные часы два раза в сутки показывают правильное время.
AVRDaemon
Открыл глаза
Сообщения: 54
Зарегистрирован: Сб дек 06, 2008 13:48:59

Сообщение AVRDaemon »

кто нибудь рабостал с 3-х цветными светиками с плавной сменой цветов?
как задествовать ШИМ на 3 ноги?(код был в ветке, не помню на какой странице)
Аватара пользователя
константин_KoSS_89
Вымогатель припоя
Сообщения: 602
Зарегистрирован: Пн дек 29, 2008 01:40:28
Откуда: (Украина, г. Стаханов, Луганская обл.) теперь Кемерово :)

Сообщение константин_KoSS_89 »

AVRDaemon
Открыл глаза
Сообщения: 54
Зарегистрирован: Сб дек 06, 2008 13:48:59

Сообщение AVRDaemon »

благодарю...
кстати меню которое я пытался сделать, сделал =) все нормально работает.

спасибо всем за ответы... спрашивайте если что)))
artem_zp
Родился
Сообщения: 5
Зарегистрирован: Ср сен 23, 2009 12:16:43
Контактная информация:

Сообщение artem_zp »

Кто знает как имитировать звук колокольчика?
Аватара пользователя
Gryphon
Нашел транзистор. Понюхал.
Сообщения: 152
Зарегистрирован: Пн ноя 03, 2008 12:08:42
Откуда: Владивосток
Контактная информация:

Сообщение Gryphon »

Привет всем! Недавно решил на мотоцикл спроектировать полностью приборную панель (а то из-за многих переделок у меня только поворотники на спидометре работают, а все остальное-нет). Начал все с того, что нужно сначала сделать спидометр с одометром и сразу появились первые грабли-слишком долго нужно ждать для получения результата скорости. Датчик я недавно нашел под него 4-х импульсный. Вот код:

Код: Выделить всё

$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 сек, чтобы разгрузить программу МК от ожидания.
Теперь о второй проблеме. Т.к. программа ждет аж 1 сек, то 100% невозможно засунуть все это безобразие в МК с семи сегментными индикаторами. Если кто-то что-то знает - откликнитесь, а то уже месяц борюсь, и не как. :(
P.s. Если кто-нибудь делал звук стука, переключения или проч. (как в "Рыцарь дорог", когда на спидометре изменялись цифры) или близких звуков-киньте пример.
Вы получаете от людей больше, если им противоречите
Аватара пользователя
pavel123
Грызет канифоль
Сообщения: 268
Зарегистрирован: Чт май 17, 2007 09:44:13
Откуда: Украина, г. Кривой Рог

Сообщение pavel123 »

А зачем ждать 1 секунду, жди 0,1 секунды и выводи в цикле целые данные на семи сегментный индикатор.
Аватара пользователя
Аксель
Опытный кот
Сообщения: 800
Зарегистрирован: Ср апр 25, 2007 09:50:43
Откуда: Киев
Контактная информация:

Сообщение Аксель »

Gryphon писал(а):Привет всем! Недавно решил на мотоцикл спроектировать полностью приборную панель .........



Кратенько по двум вопросам сразу:


конфигурация ....
в т.ч. включаешь обработку прерываний
Тебе надо по внешнему прерыванию.
включаешь свой таймер


DO
в основном цикле программы делаешь вывод чисел на семисегментники (из какихто переменных/ой - как организуешь)
LOOP


По внешнему прерыванию
(Как я понял за один оборот колеса будет четыре импульса? - данные о скорости будут обновлятся с каждым новым импульсом) :

смотришь сколько там натикало в таймере, считаешь скорость заносишь данные в переменную/е для семисегментника
обнуляешь таймер

Конец обработки внешнего прерывания.
Прога возвращается в вечный цикл на то место , где застало программу прерывание.



ps посмотреть по быстрому о прерываниях---> набираешь в редакторе баскома interrupt и тыцаешь F1. :))
Скелет колобка состоит из черепа.
Аватара пользователя
Gryphon
Нашел транзистор. Понюхал.
Сообщения: 152
Зарегистрирован: Пн ноя 03, 2008 12:08:42
Откуда: Владивосток
Контактная информация:

Сообщение Gryphon »

А как все это дело организовать в программе, т.е. как написать в программу?
Вы получаете от людей больше, если им противоречите
Аватара пользователя
Аксель
Опытный кот
Сообщения: 800
Зарегистрирован: Ср апр 25, 2007 09:50:43
Откуда: Киев
Контактная информация:

Сообщение Аксель »

Напишите для начала вывод чисел (в будущем это будет вывод скорости) на семисегментный индикатор из переменной (или переменных - по одной штуке на один разряд)

(а дальше можно схему с этим кодом в студию...)


А по прерываниям как писать можете подсмотреть информацию тут:

http://avr.easycoding.org/projects/basc ... /index.htm
Скелет колобка состоит из черепа.
Аватара пользователя
Gryphon
Нашел транзистор. Понюхал.
Сообщения: 152
Зарегистрирован: Пн ноя 03, 2008 12:08:42
Откуда: Владивосток
Контактная информация:

Сообщение Gryphon »

Программа для вывода чисел уже месяца два, как готова и устройство собрано, да и на том сайте был. Я единственно не могу понять, как настроить таймер на 1 сек
Вы получаете от людей больше, если им противоречите
Аватара пользователя
Gryphon
Нашел транзистор. Понюхал.
Сообщения: 152
Зарегистрирован: Пн ноя 03, 2008 12:08:42
Откуда: Владивосток
Контактная информация:

Сообщение Gryphon »

Код и схема+протеус в студию.
Сразу отвечу на ваш вопрос. Схема так сделана, потому что необходимо было запихнуть МК за LED, поэтому и программка такая получилась. все в реале РАБОТАЕТ уже несколько месяев.
Вложения
ОА - копия.rar
(30.73 КБ) 320 скачиваний
Вы получаете от людей больше, если им противоречите
Аватара пользователя
Аксель
Опытный кот
Сообщения: 800
Зарегистрирован: Ср апр 25, 2007 09:50:43
Откуда: Киев
Контактная информация:

Сообщение Аксель »

Ну и прекрасно. Как интервал делать в секунду (именно прерыванием, с подробностями) - есть где-то в этой теме, пока разбирайтесь с этим.

Но более актуальной будет скорость если считать не кл-во импульсов за секунду, а считывать количество времени прошедшее от одного импульса до другого.


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
Откуда: Владивосток
Контактная информация:

Сообщение Gryphon »

Но более актуальной будет скорость если считать не кл-во импульсов за секунду, а считывать количество времени прошедшее от одного импульса до другого.

Я не совсем понял, как это организовать. В BASCOMe есть еще такая функция pulsein . Как с ней работать.
Вы получаете от людей больше, если им противоречите
Аватара пользователя
Деня
Открыл глаза
Сообщения: 43
Зарегистрирован: Вс дек 07, 2008 00:45:10
Откуда: Задворки родины

Сообщение Деня »

Люди сприемопередатчичами кто нибудь работал?
Нужно ганять пакеты по радиоканалу.
Аватара пользователя
Деня
Открыл глаза
Сообщения: 43
Зарегистрирован: Вс дек 07, 2008 00:45:10
Откуда: Задворки родины

Сообщение Деня »

Люди сприемопередатчичами кто нибудь работал?
Нужно ганять пакеты по радиоканалу.
ravilkh
Родился
Сообщения: 14
Зарегистрирован: Вс сен 27, 2009 14:21:54

Сообщение ravilkh »

хотел полениться :) на баскоме написать простенькую прогу. упёрся в wait. она вообще правильно время отсчитывать может?
Аватара пользователя
Секретный кот
Поставщик валерьянки для Кота
Сообщения: 2106
Зарегистрирован: Ср сен 17, 2008 14:32:15
Откуда: Старые Васюки
Контактная информация:

Сообщение Секретный кот »

ravilkh писал(а):она вообще правильно время отсчитывать может?

При правильном кварце – почему бы и нет? От внутреннего генератора сильно врёт, но это и неудивительно.
Даже остановленные часы два раза в сутки показывают правильное время.
Ответить

Вернуться в «AVR»