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

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

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

Сообщение TRIOD »

Да ктож его знает.
Вот пытаюсь настроить таймер0 на шим
Config Timer0 = Pwm , Pwm = On , Compare Pwm = Clear Up , Prescale = 1
Не работает. Не в железе, не в симуляции в протеусе.
Только абсолютная пустота бездны принесёт мне покой.
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

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

Сообщение edm2007 »

А почему Pwm = On? Это же разрядность, там ведь вроде 8, 9 и 10 бит. У меня ругается на On. И Compare Pwm... Там один канал? Обычно Compare А Pwm, Compare В Pwm... На Compare Pwm тоже ругается, если не указать.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Аватара пользователя
TRIOD
Вымогатель припоя
Сообщения: 693
Зарегистрирован: Вт сен 15, 2009 16:23:06
Откуда: Москва

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

Сообщение TRIOD »

Да я ужу какие варианты не пребробывал неработает и всё.

так тоже бробывал
Config Timer0 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up , Prescale = 1
и так
Config Timer0 = Pwm , Pwm = On , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up , Prescale = 1
неработает.
Только абсолютная пустота бездны принесёт мне покой.
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

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

Сообщение edm2007 »

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

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

Сообщение edm2007 »

Ну и в регистр сравнения тоже все грузится, да? Сейчас посмотрю, аж самому интересно. :)
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Аватара пользователя
ВНН
Потрогал лапой паяльник
Сообщения: 347
Зарегистрирован: Сб дек 13, 2008 09:03:43
Откуда: г.Советская Гавань

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

Сообщение ВНН »

Конфигури регистры по имени
Кусок кода от котов немцев:

$regfile = "attiny25.dat" 'chip
$noramclear 'saves memory
'*** stack spaces ***
$hwstack = 32 'hardware stack
$swstack = 10 'software stack
$framesize = 40 'frame space
'*** port settings ***
Config Portb = Input
'*** effective clock settings ***
Config Clockdiv = 4
'*** constants ***
Const Period = 80
Const Pulse = 20
'*** variables ***
Dim Start_timer As Byte
Dim Stop_timer As Byte
'*** configure TIMER0 in Fast PWM mode with OCR0A as TOP ***
Config Timer0 = Pwm , Compare A Pwm = Disconnect , Compare B Pwm = Clear Down , Prescale = 64
Tccr0a.wgm01 = 1 'set fast mode
Tccr0b.wgm02 = 1 'set OCR0A = TOP
Start_timer = Tccr0b 'stores value to start timer
Stop_timer = Tccr0b And &B11111000 'stores value to stop timer
Tccr0b = Stop_timer 'stops TIMER0

'* preset of OCR0A and OCR0B
Ocr0a = Period
Ocr0b = Pulse

'*** interrupt start ***
Enable Timer0
Enable Interrupts

Tccr0b = Start_timer 'starts TIMER0

'*** main loop ***
Do
nop
Loop
Я тоже белый и пушистый и также как и Вы ловлю мышей.
С уважением ВНН.
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

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

Сообщение edm2007 »

Да работает, вроде.

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

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

Config Timer0 = Pwm , Compare A Pwm = Clear Down , Prescale = 1

Do

Ocr0a = 127

Loop


Битность там не нужна, таймер 0 и так выше не считает. :)

Изображение
Вложения
pwm85.jpg
(39.72 КБ) 2591 скачивание
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Аватара пользователя
TRIOD
Вымогатель припоя
Сообщения: 693
Зарегистрирован: Вт сен 15, 2009 16:23:06
Откуда: Москва

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

Сообщение TRIOD »

Да уменя тоже получилось запустить таймер0 с обычной строки конфигурации. Хотя раньше не работало :dont_know: .
А вот таймер1 только строкой+регистры.

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

Config Timer0 = Pwm , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 1
Config Timer1 = Pwm , Compare A Pwm = Disconnect , Compare B Pwm = Clear Down
Tccr1.cs10 = 0
Tccr1.cs11 = 1
Tccr1.cs12 = 0
Tccr1.cs13 = 0
Gtccr.pwm1b = 1

Do
Ocr0a = 127
Ocr0b = 127
Ocr1b = 127
Ocr1c = 255
Loop

И то таймер1 имеет чуть другую частоту ШИМ. Насколько я понял при записи 255 в регистр OCR1C частота 30кГц. Чтоб было как у таймера0 31250 надо засунуть в регистр 256 а это невозможно.

Мне просто нужно три канала ШИМ для управления RGB диодом. Есть вариант использовать 8мегу, но както её жалко на это переводить.
Только абсолютная пустота бездны принесёт мне покой.
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

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

Сообщение edm2007 »

Ага. Интересно. Я вот тоже пока завести не могу таймер первый. Считаем до OCR1C, это понятно, но что-то я вот заблудился в прямых-инверсных выходах.... Там же при совпадении со счетным регистром изменяются состояния на ногах. А как же тогда с OC0A, например? На ней же и OC1A инверсный... :dont_know:
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

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

Сообщение edm2007 »

TRIOD писал(а):Мне просто нужно три канала ШИМ для управления RGB диодом. Есть вариант использовать 8мегу, но както её жалко на это переводить.


Не-не, 8 мегу только для RGB совсем как-то не фонтан. Да и разобраться в любом случае интересно. :)
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Аватара пользователя
TRIOD
Вымогатель припоя
Сообщения: 693
Зарегистрирован: Вт сен 15, 2009 16:23:06
Откуда: Москва

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

Сообщение TRIOD »

edm2007 писал(а):Ага. Интересно. Я вот тоже пока завести не могу таймер первый. Считаем до OCR1C, это понятно, но что-то я вот заблудился в прямых-инверсных выходах.... Там же при совпадении со счетным регистром изменяются состояния на ногах. А как же тогда с OC0A, например? На ней же и OC1A инверсный... :dont_know:

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

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

Сообщение edm2007 »

TRIOD писал(а):А чтото предётся отключать. Фактически не четыре канала, а три.


Ну это разумеется. :)

Посмотрел в симуляторе, действительно, при стандартной конфигурации выставляется только бит прескалера в регистре TCCR1. А регистр GTCCR пустой. :( Вы разрешили работу ШИМ (Gtccr.pwm1b = 1), но есть еще COM1B1 и COM1B0. А при нулях вывод отключен от таймера. Я не понимаю, почему не меняется GTCCR. :(

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

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

Сообщение TRIOD »

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

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

Сообщение edm2007 »

Да, и еще, судя по битам в симуляторе, стандартной строкой инициализации таймер конфигурируется в режим Phase Correct PWM. :dont_know:
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

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

Сообщение edm2007 »

Мда... Вобщем, поковыряв все это пришел к выводу, что лучше непосредственно в регистры писать, конфигурируя таймеры. Там по крайней мере все прозрачно и понятно.

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

'----------

Config Portb.0 = Output       ' OC0A
Config Portb.1 = Output       ' OC0B
Config Portb.4 = Output       ' OC1B

'----------

Tccr0a = &B10100011           ' Т0 - Fast PWM, управление выводами OC0A/OC0B
Tccr0b = &B00000001           ' T0 - прескалер = 1

Tccr1 = &B00000001            ' T1 - прескалер = 1
Gtccr = &B01100000            ' T1 - Разрешаем PWM1B,отключаем инверсные выходы

'----------

Do

Ocr0a = 50
Ocr0b = 200
Ocr1b = 127

Loop

'----------


Изображение

Только не совсем понятно с OCR1C. Никакой разницы не заметил. И еще, при записи в регистр сравнения OCR1B = 255, все равно остаются иголки...
Вложения
pwm.jpg
(26.29 КБ) 2608 скачиваний
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Аватара пользователя
TRIOD
Вымогатель припоя
Сообщения: 693
Зарегистрирован: Вт сен 15, 2009 16:23:06
Откуда: Москва

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

Сообщение TRIOD »

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

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

Сообщение edm2007 »

Вообще в режиме ШИМ состояние счетного регистра изменяется от 0 до OCR1C. После чего регистр сбрасывается и все начинается снова. А с OCR1A и OCR1B сравнивается состояние счетного регистра. И да, OCR1C регулирует частоту ШИМ.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Аватара пользователя
TRIOD
Вымогатель припоя
Сообщения: 693
Зарегистрирован: Вт сен 15, 2009 16:23:06
Откуда: Москва

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

Сообщение TRIOD »

Ну теперь вроде всё прояснили. И тперь можно работать.

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

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

Config Portb.0 = Output
Config Portb.1 = Output
Config Portb.4 = Output
'----------
Tccr0a = &HA3
Tccr0b = &H01
Tcnt0 = &H00
'----------
Pllcsr = &H00
Tccr1 = &H41
Gtccr = &H50
Tcnt1 = &H00
Ocr1c = &HFF
'----------
Do
Ocr0a = 127
Ocr0b = 127
Ocr1b = 127
Loop
Только абсолютная пустота бездны принесёт мне покой.
Аватара пользователя
vpashko
Нашел транзистор. Понюхал.
Сообщения: 153
Зарегистрирован: Пт июн 20, 2008 18:27:08
Откуда: Украина,Запорожье

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

Сообщение vpashko »

Здравствуйте, вот код:
$regfile = "2313def.dat"
$crystal = 8000000
Config Portb.0 = Output

Speaker Alias Portb.0

Do

'Corona :: Rythm of The Night
Sound Speaker , 65 , 1274 'C2(1/16)
Waitms 125 'P(1/16)
Sound Speaker , 87 , 954 'F2(1/16)
Waitms 125 'P(1/16)
Sound Speaker , 98 , 850 'G2(1/16)
Waitms 125 'P(1/16)
Sound Speaker , 87 , 954 'F2(1/16)
Sound Speaker , 117 , 715 'Ais2(1/16)
Waitms 125 'P(1/16)
Sound Speaker , 110 , 758 'A2(1/16)
Waitms 125 'P(1/16)
Sound Speaker , 98 , 850 'G2(1/16)
Waitms 125 'P(1/16)
Sound Speaker , 110 , 758 'A2(1/16)
Sound Speaker , 87 , 954 'F2(1/16)
Waitms 125 'P(1/16)

'Europe :: Final Countdown
Sound Speaker , 124 , 675 'H2(1/16)
Sound Speaker , 110 , 758 'A2(1/16)
Sound Speaker , 248 , 675 'H2(1/8)
Waitms 125 'P(1/16)
Sound Speaker , 165 , 1011 'E2(1/8)
Waitms 250 'P(1/8)
Waitms 125 'P(1/16)
Sound Speaker , 131 , 637 'C3(1/16)
Sound Speaker , 124 , 675 'H2(1/16)
Sound Speaker , 131 , 637 'C3(1/16)
Waitms 125 'P(1/16)
Sound Speaker , 124 , 675 'H2(1/16)
Waitms 125 'P(1/16)
Sound Speaker , 220 , 758 'A2(1/8)
Waitms 125 'P(1/16)
Waitms 250 'P(1/8)
Sound Speaker , 131 , 637 'C3(1/16)
Sound Speaker , 124 , 675 'H2(1/16)
Sound Speaker , 262 , 637 'C3(1/8)
Waitms 125 'P(1/16)
Sound Speaker , 165 , 1011 'E2(1/8)
Waitms 250 'P(1/8)
Waitms 125 'P(1/16)
Sound Speaker , 110 , 758 'A2(1/16)
Sound Speaker , 98 , 850 'G2(1/16)
Sound Speaker , 110 , 758 'A2(1/16)
Waitms 125 'P(1/16)
Sound Speaker , 98 , 850 'G2(1/16)
Waitms 125 'P(1/16)
Sound Speaker , 92 , 901 'Fis2(1/16)
Waitms 125 'P(1/16)
Sound Speaker , 110 , 758 'A2(1/16)
Waitms 125 'P(1/16)
Sound Speaker , 196 , 850 'G2(1/8)

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

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

Сообщение edm2007 »

Да, теперь все понятно. :) А Вы специально включили инверсный вывод OC1B в GTCCR? И PWM1A тоже.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Ответить

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