BASCOM AVR в вопросах и ответах
Re: BASCOM AVR в вопросах и ответах
Да ктож его знает.
Вот пытаюсь настроить таймер0 на шим
Config Timer0 = Pwm , Pwm = On , Compare Pwm = Clear Up , Prescale = 1
Не работает. Не в железе, не в симуляции в протеусе.
Вот пытаюсь настроить таймер0 на шим
Config Timer0 = Pwm , Pwm = On , Compare Pwm = Clear Up , Prescale = 1
Не работает. Не в железе, не в симуляции в протеусе.
Только абсолютная пустота бездны принесёт мне покой.
- edm2007
- Поставщик валерьянки для Кота
- Сообщения: 2255
- Зарегистрирован: Вт апр 21, 2009 22:24:10
- Откуда: Иркутск
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
А почему Pwm = On? Это же разрядность, там ведь вроде 8, 9 и 10 бит. У меня ругается на On. И Compare Pwm... Там один канал? Обычно Compare А Pwm, Compare В Pwm... На Compare Pwm тоже ругается, если не указать.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Re: BASCOM AVR в вопросах и ответах
Да я ужу какие варианты не пребробывал неработает и всё.
так тоже бробывал
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
неработает.
так тоже бробывал
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 в вопросах и ответах
Хотя да, у 85 не ругается. Я даташит не смотрел. 
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
- edm2007
- Поставщик валерьянки для Кота
- Сообщения: 2255
- Зарегистрирован: Вт апр 21, 2009 22:24:10
- Откуда: Иркутск
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Ну и в регистр сравнения тоже все грузится, да? Сейчас посмотрю, аж самому интересно. 
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
- ВНН
- Потрогал лапой паяльник
- Сообщения: 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
Кусок кода от котов немцев:
$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 в вопросах и ответах
Да работает, вроде.
Битность там не нужна, таймер 0 и так выше не считает.

Код: Выделить всё
$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 скачивание
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Re: BASCOM AVR в вопросах и ответах
Да уменя тоже получилось запустить таймер0 с обычной строки конфигурации. Хотя раньше не работало
.
А вот таймер1 только строкой+регистры.
И то таймер1 имеет чуть другую частоту ШИМ. Насколько я понял при записи 255 в регистр OCR1C частота 30кГц. Чтоб было как у таймера0 31250 надо засунуть в регистр 256 а это невозможно.
Мне просто нужно три канала ШИМ для управления RGB диодом. Есть вариант использовать 8мегу, но както её жалко на это переводить.
.А вот таймер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 в вопросах и ответах
Ага. Интересно. Я вот тоже пока завести не могу таймер первый. Считаем до OCR1C, это понятно, но что-то я вот заблудился в прямых-инверсных выходах.... Там же при совпадении со счетным регистром изменяются состояния на ногах. А как же тогда с OC0A, например? На ней же и OC1A инверсный... 

"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
- edm2007
- Поставщик валерьянки для Кота
- Сообщения: 2255
- Зарегистрирован: Вт апр 21, 2009 22:24:10
- Откуда: Иркутск
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
TRIOD писал(а):Мне просто нужно три канала ШИМ для управления RGB диодом. Есть вариант использовать 8мегу, но както её жалко на это переводить.
Не-не, 8 мегу только для RGB совсем как-то не фонтан. Да и разобраться в любом случае интересно.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Re: BASCOM AVR в вопросах и ответах
edm2007 писал(а):Ага. Интересно. Я вот тоже пока завести не могу таймер первый. Считаем до OCR1C, это понятно, но что-то я вот заблудился в прямых-инверсных выходах.... Там же при совпадении со счетным регистром изменяются состояния на ногах. А как же тогда с OC0A, например? На ней же и OC1A инверсный...
А чтото предётся отключать. Фактически не четыре канала, а три.
Только абсолютная пустота бездны принесёт мне покой.
- edm2007
- Поставщик валерьянки для Кота
- Сообщения: 2255
- Зарегистрирован: Вт апр 21, 2009 22:24:10
- Откуда: Иркутск
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
TRIOD писал(а):А чтото предётся отключать. Фактически не четыре канала, а три.
Ну это разумеется.
Посмотрел в симуляторе, действительно, при стандартной конфигурации выставляется только бит прескалера в регистре TCCR1. А регистр GTCCR пустой.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Re: BASCOM AVR в вопросах и ответах
Я тоже не понимаю почему при использовании стандартной строки конфигурирования таймера1 регистр невыставляется. Но если выкинуть из строки Prescale . И конфигурировать частоту через регистры всё работает.
Только абсолютная пустота бездны принесёт мне покой.
- edm2007
- Поставщик валерьянки для Кота
- Сообщения: 2255
- Зарегистрирован: Вт апр 21, 2009 22:24:10
- Откуда: Иркутск
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Да, и еще, судя по битам в симуляторе, стандартной строкой инициализации таймер конфигурируется в режим Phase Correct PWM. 

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

Только не совсем понятно с OCR1C. Никакой разницы не заметил. И еще, при записи в регистр сравнения OCR1B = 255, все равно остаются иголки...
Код: Выделить всё
'----------
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 скачиваний
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Re: BASCOM AVR в вопросах и ответах
Ну насколько я понимаю в регистр OCR1C записывается значение с которым и будет происходит сравнение значений OCR1A и OCR1B. Тоесть можно регулировать частоту ШИМ.
Только абсолютная пустота бездны принесёт мне покой.
- edm2007
- Поставщик валерьянки для Кота
- Сообщения: 2255
- Зарегистрирован: Вт апр 21, 2009 22:24:10
- Откуда: Иркутск
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Вообще в режиме ШИМ состояние счетного регистра изменяется от 0 до OCR1C. После чего регистр сбрасывается и все начинается снова. А с OCR1A и OCR1B сравнивается состояние счетного регистра. И да, OCR1C регулирует частоту ШИМ.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Re: BASCOM AVR в вопросах и ответах
Ну теперь вроде всё прояснили. И тперь можно работать.
Код: Выделить всё
$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 в вопросах и ответах
Здравствуйте, вот код:
$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
Как сюда дописать две кнопки чтоб при нажатии на одну играла музыка а второй выбирать музыку.
$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 в вопросах и ответах
Да, теперь все понятно.
А Вы специально включили инверсный вывод OC1B в GTCCR? И PWM1A тоже.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон