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

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
TRIOD
Вымогатель припоя
Сообщения: 693
Зарегистрирован: Вт сен 15, 2009 16:23:06
Откуда: Москва

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

Сообщение TRIOD »

доброе время суток.
Подскажите как управлять аппаратными ШИМ в Баскоме.
Надо трехканальный шим на меге8, а как делать в непойму.

в какойто проге нашол но что значат некоторые пункты не понимаю.
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 1
Config Timer2 = Pwm , Async = Off , Pwm = On , Compare Pwm = Clear Up , Prescale = 1
Pwm1a = 254
Pwm1b = 128
Ocr2 = 15
Только абсолютная пустота бездны принесёт мне покой.
Реклама
Аватара пользователя
Секретный кот
Поставщик валерьянки для Кота
Сообщения: 2106
Зарегистрирован: Ср сен 17, 2008 14:32:15
Откуда: Старые Васюки
Контактная информация:

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

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

Gordon Shumway писал(а):Вы как-нибудь решили проблему с занятием линии ?

Да, решил. Тут совершенно правильно советовали отключать таймер сразу по окончании DTMF посылки. Жаль, что Баском сам этого не делает, хотя по логике должен.

Gordon Shumway писал(а):Я ставил разделительный конденсатор, чтобы транзистор не был открыт постоянно, но через него вообще не пищит...

Так тоже можно, но тогда на базу транзистору надо подавать смещение...

Gordon Shumway писал(а):Можно увидеть ваш выходной каскад DTMF ?

Он примитивнейший. На базу транзистора резистор 9,1 К с ноги Portd.5 (у меня М8515), коллектор к (+) линии после моста, эмиттер через резистор 200 Ом на землю. Минус линии, естественно, туда же.
А я вот встречный вопрос хотел задать: Ваше устройство "ловит" посылки вызова (звонки) с линии? Если да, то как сделан этот узел?

aleksandr-zh писал(а):это как? как вы изменили генерируемые шишом частоты?
вочень-вочень интересно :)

Да проще не придумать – поковырялся во встроенной библиотеке :))
Кстати, это в любом случае не вредно, т.к. там заложено много сюрпризов, например команда DTMFOUT "#" или DTMFOUT "*" даст совсем не тот результат, которого от неё можно было бы ждать :)))
А ещё эту команду можно использовать для генерации точных однотональных частот, чего от SOUND не дождёшься.
Даже остановленные часы два раза в сутки показывают правильное время.
Реклама
aleksandr-zh
Сверлит текстолит когтями
Сообщения: 1278
Зарегистрирован: Пн июн 18, 2007 21:51:20

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

Сообщение aleksandr-zh »

Секретный кот писал(а):
aleksandr-zh писал(а):это как? как вы изменили генерируемые шишом частоты?
вочень-вочень интересно :)

Да проще не придумать – поковырялся во встроенной библиотеке :))

А как это сделать? что-то я не понял... в смысле, ассмом?


Секретный кот писал(а):Кстати, это в любом случае не вредно, т.к. там заложено много сюрпризов, например команда DTMFOUT "#" или DTMFOUT "*" даст совсем не тот результат, которого от неё можно было бы ждать :)))
.

о как :( а что выдает?

чем больше знаю Баском, тем меньше нравится (да и изначально не нравился - по личным причинам)
Аватара пользователя
Gordon Shumway
Мучитель микросхем
Сообщения: 485
Зарегистрирован: Пн авг 20, 2007 21:35:45
Откуда: Мытищи, Московская область
Контактная информация:

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

Сообщение Gordon Shumway »

Секретный кот писал(а):
Gordon Shumway писал(а):Можно увидеть ваш выходной каскад DTMF ?

Он примитивнейший. На базу транзистора резистор 9,1 К с ноги Portd.5 (у меня М8515), коллектор к (+) линии после моста, эмиттер через резистор 200 Ом на землю. Минус линии, естественно, туда же.
А я вот встречный вопрос хотел задать: Ваше устройство "ловит" посылки вызова (звонки) с линии? Если да, то как сделан этот узел?


Я вспомнил мои любимые АОНы на Z80, которые когда-то клепал налево и направо ! :)
К цепи вызова добавил транзистор, который при входящем вызове землит int0. И добавил waitms 1000, чтобы не сразу трубку хватал. Работает !
Вложения
vy.GIF
Схема вызова.
(2.95 КБ) 570 скачиваний
С уважением,
Алексей.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
Секретный кот
Поставщик валерьянки для Кота
Сообщения: 2106
Зарегистрирован: Ср сен 17, 2008 14:32:15
Откуда: Старые Васюки
Контактная информация:

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

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

aleksandr-zh писал(а):
Секретный кот писал(а):Да проще не придумать – поковырялся во встроенной библиотеке :))

А как это сделать? что-то я не понял... в смысле, ассмом?

Ну собственно в асм влезать не требуется, достаточно пересчитать таблицу частот, которая там лежит, к тому же с неплохими комментариями.

aleksandr-zh писал(а):
Секретный кот писал(а):команда DTMFOUT "#" или DTMFOUT "*" даст совсем не тот результат, которого от неё можно было бы ждать :)))

о как :( а что выдает?

Три варианта на выбор: тишина, непрерывный тон отфонарной частоты, зависание МК (также возможны их сочетания :)) )
А всё потому, что для команды DTMFOUT формируемая посылка передаётся не символами, а их ASCII-кодами (это видно из библиотеки). Т.е. если нам нужна звёздочка, надо делать DTMFOUT ":", а решётка - DTMFOUT ";".

aleksandr-zh писал(а):чем больше знаю Баском, тем меньше нравится (да и изначально не нравился - по личным причинам)

У меня всё с точностью до наоборот. После ручного отлавливания глюков в асме тут просто отдыхаешь. Да и на готовые библиотеки не надо тратить драгоценное время.

Gordon Shumway писал(а):Я вспомнил мои любимые АОНы на Z80, которые когда-то клепал налево и направо ! :)

Спасибо. У меня в конструкциях на Z80/ВВ55 эта цепочка тоже успешно работала (даже без транзистора), а сейчас почему-то глючит – на каждую вызывную посылку даёт один короткий пик в начале и потом - тишина. В выходные попробую всё же с оптроном поэкспериментировать.

Gordon Shumway писал(а):добавил waitms 1000, чтобы не сразу трубку хватал. Работает !

А мне бы вот надо брать трубку после заданного звонка. Для этого требуется чёткий подсчёт вызывных посылок...
Даже остановленные часы два раза в сутки показывают правильное время.
Реклама
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

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

Сообщение Мурик »

TRIOD писал(а):доброе время суток.
Подскажите как управлять аппаратными ШИМ в Баскоме.
Надо трехканальный шим на меге8, а как делать в непойму.

в какойто проге нашол но что значат некоторые пункты не понимаю.
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 1
Config Timer2 = Pwm , Async = Off , Pwm = On , Compare Pwm = Clear Up , Prescale = 1
Pwm1a = 254
Pwm1b = 128
Ocr2 = 15

Вот сюда вписывайте необходимые значения ШИМ (0 - 255)

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

Pwm1a = 254
 Pwm1b = 128
 Ocr2 = 15

Это управление 3 каналами.
Реклама
aleksandr-zh
Сверлит текстолит когтями
Сообщения: 1278
Зарегистрирован: Пн июн 18, 2007 21:51:20

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

Сообщение aleksandr-zh »

Секретный кот писал(а):
aleksandr-zh писал(а):
Секретный кот писал(а):Да проще не придумать – поковырялся во встроенной библиотеке :))

А как это сделать? что-то я не понял... в смысле, ассмом?

Ну собственно в асм влезать не требуется, достаточно пересчитать таблицу частот, которая там лежит, к тому же с неплохими комментариями..

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

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

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

aleksandr-zh писал(а):где лежит, чем открывать? :)

Файл mcs.lib, в папке библиотек Баскома, открывать чем угодно, например блокнотом :))
Даже остановленные часы два раза в сутки показывают правильное время.
aleksandr-zh
Сверлит текстолит когтями
Сообщения: 1278
Зарегистрирован: Пн июн 18, 2007 21:51:20

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

Сообщение aleksandr-zh »

US! Прикольненько!
надо засмотреть и подумать! :)

СПАСИБО!
Аватара пользователя
Gordon Shumway
Мучитель микросхем
Сообщения: 485
Зарегистрирован: Пн авг 20, 2007 21:35:45
Откуда: Мытищи, Московская область
Контактная информация:

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

Сообщение Gordon Shumway »

Уважаемый Секретный кот !

Не получается сделать 0 на portb.3 (tiny2313) после посылки dtmf предложенным выше методом !
Все равно единица иногда вылезает.
Не подскажете поточнее ?
У меня сейчас так :

Config Portb.3 = Output
Config Int0 = Low Level

On Int0 Pusk

11223:
Enable Interrupts
Enable Int0
Powerdown
Goto 11223


Pusk:

Disable Interrupts
Disable Int0

что-то важное...


Enable Interrupts
Enable Timer1

For Zze = 1 To I
Dtmfout Dig(zze) , 100
Waitms 100
Next Zze
Disable Timer1
Disable Interrupts
Portb.3 = 0

Что-то важное...

Return


И еще... У меня в начале программы написано :
$regfile = "2313def.dat"

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

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

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

aleksandr-zh писал(а):СПАСИБО!

Н З ЧТ! :))

Gordon Shumway писал(а):Не получается сделать 0 на portb.3 (tiny2313) после посылки dtmf предложенным выше методом !

Это потому, что после отправки посылки вы выключаете не таймер, а его прерывание. Попробуйте вместо обоих Disable вставить такую строчку:

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

Tccr1a=0


Gordon Shumway писал(а):если пишу $regfile = "tiny2313.dat", то вообще пищать не хочет.

Неудивительно, т.к. такого файла вообще нет. По идее компилятор ругается, когда задаёшь несуществующее имя def-файла. Попробуйте ATtiny2313.dat.
Даже остановленные часы два раза в сутки показывают правильное время.
aleksandr-zh
Сверлит текстолит когтями
Сообщения: 1278
Зарегистрирован: Пн июн 18, 2007 21:51:20

Re:

Сообщение aleksandr-zh »

Я сделал перевод интерфейса Баском на русский, Марк уже сделал в проф версии. Но в демо еще не обновил. Также делаю перевод справочной системы. Вчера отправил часть данных ему, и попросил сверстать в chm файл справки. Пока молчит
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

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

Сообщение edm2007 »

aleksandr-zh, Вы большой молодец. Дело нужное и полезное. :beer: Все дождаться не могу демки обновленной. А на самом деле в демо-версии кроме ограничений на размер кода еще есть какие-то "лишения"?
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
aleksandr-zh
Сверлит текстолит когтями
Сообщения: 1278
Зарегистрирован: Пн июн 18, 2007 21:51:20

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

Сообщение aleksandr-zh »

edm2007 писал(а):Все дождаться не могу демки обновленной. А на самом деле в демо-версии кроме ограничений на размер кода еще есть какие-то "лишения"?


если хоть что-то зависило в этих вопросах от меня только... :(

Демку жду, Марк ответил, что сделает. И молчит уже с неделю...

Лишений больше никаких - со слов самого автора - Марка
мол, чтобы все видели, что может продукт.
Аватара пользователя
Gordon Shumway
Мучитель микросхем
Сообщения: 485
Зарегистрирован: Пн авг 20, 2007 21:35:45
Откуда: Мытищи, Московская область
Контактная информация:

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

Сообщение Gordon Shumway »

Секретный кот писал(а):
Gordon Shumway писал(а):Не получается сделать 0 на portb.3 (tiny2313) после посылки dtmf предложенным выше методом !

Это потому, что после отправки посылки вы выключаете не таймер, а его прерывание. Попробуйте вместо обоих Disable вставить такую строчку:

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

Tccr1a=0



Работает ! Спасибо !!!!!!! :)) :beer: :)))
С уважением,
Алексей.
Аватара пользователя
TRIOD
Вымогатель припоя
Сообщения: 693
Зарегистрирован: Вт сен 15, 2009 16:23:06
Откуда: Москва

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

Сообщение TRIOD »

Доброе время суток.

Народ подскажите в чем может быть проблема.
Делал Лампу настроения, но с изменениями.
Разница в том что цвета у меня заранее записаны и выбераются из таблицы случайным образом.
И ШИМ уменя програмный.
Проблема в том что если я вставляю после строки

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

'удержание цвета

такой код

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

DO
  Temp5=RND(11)
Loop until Temp5>5 AND Temp5<11
Wait Temp5

то светодиод начинает переодически мегать между переходами цветов.


Полный код программы.

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

$regfile = "attiny85.dat "
$crystal = 8000000

'тикущий цвет
Dim Red As Single
Dim Green As Single
Dim Blue As Single


'следующий цвет
Dim Nextred As Byte
Dim Nextgreen As Byte
Dim Nextblue As Byte

'приращение шага
Dim Delta_red As Single
Dim Delta_green As Single
Dim Delta_blue As Single

'временные переменые
Dim Temp1 As Integer
Dim Temp2 As Long
Dim Temp5 As Byte
Dim I As Byte
Dim Tik As Byte
Dim Ledr As Byte
Dim Ledg As Byte
Dim Ledb As Byte

Config Pinb.0 = Output
Config Pinb.1 = Output
Config Pinb.2 = Output

Config Timer0 = Timer , Prescale = 1
Enable Timer0
Enable Interrupts
On Timer0 Pwms
Start Timer0


Do

   Temp1 = Rnd(110)
   Restore Color
   For I = 0 To Temp1
   Read Temp2
   Next

   Nextblue = Temp2 And 255
   Temp2 = Temp2 / 256
   Nextgreen = Temp2 And 255
   Temp2 = Temp2 / 256
   Nextred = Temp2 And 255

                                'вычесляем прибавку для перехода к новому цвету за 255 шагов
   Delta_red = Nextred - Red
   Delta_red = Delta_red / 255
   Delta_green = Nextgreen - Green
   Delta_green = Delta_green / 255
   Delta_blue = Nextblue - Blue
   Delta_blue = Delta_blue / 255


  For I = 0 To 255                                          'вывод цвета за 255 шагов
    Red = Red + Delta_red
    Green = Green + Delta_green
    Blue = Blue + Delta_blue

Temp5 = Fix(red)
Ledr = Temp5
Temp5 = Fix(green)
Ledg = Temp5
Temp5 = Fix(blue)
Ledb = Temp5
Waitms 15
Next
 'удержание цвета
Wait 20
Loop


Pwms:
Incr Tik
 If Tik = 255 Then
  Tik = 0
  Portb.0 = 0
  Portb.1 = 0
  Portb.2 = 0
 End If
   If Tik > Ledr Then Portb.0 = 1
   If Tik > Ledg Then Portb.1 = 1
   If Tik > Ledb Then Portb.2 = 1
Return


Color:
Data &HF08080& , &HFA8072& , &HE9967A& , &HFFA07A& , &HDC143C& , &HFF0000& , &HB22222& , &H8B0000&
Data &HFFC0CB& , &HFFB6C1& , &HFF69B4& , &HFF1493& , &HC71585& , &HDB7093& , &HFFA07A& , &HFF7F50&
Data &HFF6347& , &HFF4500& , &HFF8C00& , &HFFA500& , &HFFD700& , &HFFFF00& , &HFFFFE0& , &HFFFACD&
Data &HFAFAD2& , &HFFEFD5& , &HFFEFD5& , &HFFE4B5& , &HFFDAB9& , &HEEE8AA& , &HF0E68C& , &HBDB76B&
Data &HE6E6FA& , &HD8BFD8& , &HDDA0DD& , &HEE82EE& , &HDA70D6& , &HFF00FF& , &HBA55D3& , &H9370DB&
Data &H8A2BE2& , &H9400D3& , &H9932CC& , &H8B008B& , &H800080& , &H4B0082& , &H6A5ACD& , &H483D8B&
Data &HADFF2F& , &H7FFF00& , &H7CFC00& , &H00FF00& , &H32CD32& , &H98FB98& , &H90EE90& , &H00FA9A&
Data &H00FF7F& , &H3CB371& , &H2E8B57& , &H228B22& , &H008000& , &H006400& , &H9ACD32& , &H6B8E23&
Data &H808000& , &H556B2F& , &H66CDAA& , &H8FBC8F& , &H20B2AA& , &H008B8B& , &H008080& , &H00FFFF&
Data &HE0FFFF& , &HAFEEEE& , &H7FFFD4& , &H40E0D0& , &H48D1CC& , &H00CED1& , &H5F9EA0& , &H4682B4&
Data &HB0C4DE& , &HB0E0E6& , &H87CEEB& , &H87CEFA& , &H00BFFF& , &H1E90FF& , &H6495ED& , &H7B68EE&
Data &H4169E1& , &H0000FF& , &H0000CD& , &H00008B& , &H000080& , &H191970& , &HFFF8DC& , &HFFEBCD&
Data &HFFE4C4& , &HFFDEAD& , &HF5DEB3& , &HDEB887& , &HD2B48C& , &HBC8F8F& , &HF4A460& , &HDAA520&
Data &HB8860B& , &HCD853F& , &HD2691E& , &H8B4513& , &HA0522D& , &HA52A2A& , &H800000&
Только абсолютная пустота бездны принесёт мне покой.
aleksandr-zh
Сверлит текстолит когтями
Сообщения: 1278
Зарегистрирован: Пн июн 18, 2007 21:51:20

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

Сообщение aleksandr-zh »

я не знаю, что это за конструкция, но тоже делал Диммер,
и при каких-то действиях лампа мигала
Так как ШИМ у Вас программный, то из-за высокой длительности операций происходит прерывание сигнала после перехода через ноль синусоиды напряжения
Мигает
Аватара пользователя
TRIOD
Вымогатель припоя
Сообщения: 693
Зарегистрирован: Вт сен 15, 2009 16:23:06
Откуда: Москва

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

Сообщение TRIOD »

Я и с аппаратным шим пробывал тоже мигает.
Только абсолютная пустота бездны принесёт мне покой.
aleksandr-zh
Сверлит текстолит когтями
Сообщения: 1278
Зарегистрирован: Пн июн 18, 2007 21:51:20

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

Сообщение aleksandr-zh »

да какая разница
время выполнения операций длиннее цикла таймера
Аватара пользователя
TRIOD
Вымогатель припоя
Сообщения: 693
Зарегистрирован: Вт сен 15, 2009 16:23:06
Откуда: Москва

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

Сообщение TRIOD »

Да, но если просто написать Wait 40 то не чего не мигает. А время выполнения этой операции в 2 раза больше.
Только абсолютная пустота бездны принесёт мне покой.
Ответить

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