BASCOM AVR в вопросах и ответах
- константин_KoSS_89
- Вымогатель припоя
- Сообщения: 602
- Зарегистрирован: Пн дек 29, 2008 01:40:28
- Откуда: (Украина, г. Стаханов, Луганская обл.) теперь Кемерово :)
Radan писал(а):Посмотри здесь - http://bascom.at.ua/publ/1-1-0-9
Возможно я нуб...ну немогу я понять как этот шим устроен
Так и не разобрался, Таймер-0 переключает группы светиков или тоже участвует в ШИМе
Если несложно наваяй маленькую прожку (Для ATtiny2313) , чтоб сама яркость меняла на светике, сначала повышала, как наберёт полную яркость то понижала...
Очень хочу понять принцып! Ага?
И ещё, как выводиться на порты инфа записанная в DATA ?
-
Radan
- Мучитель микросхем
- Сообщения: 465
- Зарегистрирован: Ср июн 21, 2006 08:24:32
- Откуда: Лисичанск
- Контактная информация:
В основном цикле программы пишем изменение переменных яркости 3 цветов:
В событии Таймер-0 происходит увеличение переменной PWM на 1.
Если значение R, G, B > 0 , то при значении PWM = 0 включим соответствующие порты (Set R, Set G Set B)
Если значение R, G, B совпало с PWM, отключим соответствующий канал.
Когда PWM достигнет 255, сбросим её в 0 и выключим R, G, B (Reset R, Reset G, Reset B). И так по кругу.
Таким образом, порты будут включены на 1-255 тактов таймера 0. Чем больше тактов включено, тем ярче горит светодиод. Для равномерного восприятия яркости глазом, необходимо учесть логарифмическую зависимость. В приведённой выше ссылке это реализовано.
Код: Выделить всё
Do
For R = 0 To 255
Waitms 10
Next R
For B = 255 To 0 Step -1
Waitms 10
Next B
For G = 0 To 255
Waitms 10
Next G
Loop
В событии Таймер-0 происходит увеличение переменной PWM на 1.
Если значение R, G, B > 0 , то при значении PWM = 0 включим соответствующие порты (Set R, Set G Set B)
Если значение R, G, B совпало с PWM, отключим соответствующий канал.
Когда PWM достигнет 255, сбросим её в 0 и выключим R, G, B (Reset R, Reset G, Reset B). И так по кругу.
Таким образом, порты будут включены на 1-255 тактов таймера 0. Чем больше тактов включено, тем ярче горит светодиод. Для равномерного восприятия яркости глазом, необходимо учесть логарифмическую зависимость. В приведённой выше ссылке это реализовано.
- константин_KoSS_89
- Вымогатель припоя
- Сообщения: 602
- Зарегистрирован: Пн дек 29, 2008 01:40:28
- Откуда: (Украина, г. Стаханов, Луганская обл.) теперь Кемерово :)
Короче нифига я непонял. Вот, как я понял...Но оно не работает
Слушай ну пожалуйсто помоги, ну очень хочу разобраться
$regfile = "2313def.dat"
$crystal = 4000000
Config Portd = Output
Config Portb = Output
Dim Pwm As Byte , A As Byte
Config Timer0 = Timer , Prescale = 1
Enable Interrupts
Enable Timer0
On Timer0
Start Timer0
Pwm = Timer0
Do
Reset Portd
Config Pind.3 = Input
Config Pind.4 = Input
Set Portd.3
Set Portd.4
Debounce Pind.3 , 0 , Pwm_plus
Debounce Pind.4 , 0 , Pwm_minus
Pwm_plus:
Incr Pwm
Waitms 100
Return
Pwm_minus:
Decr Pwm
Waitms 100
Return
For A = 0 To 255
Waitms 10
Next A
If A > 0 Then Gosub 1
1:
If Pwm = 255 Then
Pwm = 0
Portb = 00
If Pwm > 0 Then Portb.1 = 1
Return
Loop
End If
End
Слушай ну пожалуйсто помоги, ну очень хочу разобраться
- константин_KoSS_89
- Вымогатель припоя
- Сообщения: 602
- Зарегистрирован: Пн дек 29, 2008 01:40:28
- Откуда: (Украина, г. Стаханов, Луганская обл.) теперь Кемерово :)
-
Radan
- Мучитель микросхем
- Сообщения: 465
- Зарегистрирован: Ср июн 21, 2006 08:24:32
- Откуда: Лисичанск
- Контактная информация:
Попробуй так:
Код: Выделить всё
$regfile = "2313def.dat"
$crystal = 4000000
Config Portb = Output
Config Timer0 = Timer , Prescale = 1
Enable Interrupts
Enable Timer0
On Timer0 Timer0isr
Start Timer0
Dim Pwm As Byte , A As Byte
Pwm = 0
Do
For A = 0 To 255
Waitms 10
Next A
For A = 255 To 0 Step -1
Waitms 10
Next A
Loop
Timer0isr:
Incr Pwm
If Pwm > A Then Portb = 1
If Pwm = 255 Then
Pwm = 0
Portb.0 = 0
End If
Return
- константин_KoSS_89
- Вымогатель припоя
- Сообщения: 602
- Зарегистрирован: Пн дек 29, 2008 01:40:28
- Откуда: (Украина, г. Стаханов, Луганская обл.) теперь Кемерово :)
Большое спосибо. Наконецто!!!!
Можно небольшие подробности:
Что означает "Prescale = 1" "Step -1"
Строчка "On Timer0 Timer0isr" - означает, - включить таймер-0 и при переполнении перйти на "Timer0isr" -- ???
Спосибо за внимание, если будут вопросы в дальнейшем - поможешь..
очень хочу разобраться хоь с эти языком...
Можно небольшие подробности:
Что означает "Prescale = 1" "Step -1"
Строчка "On Timer0 Timer0isr" - означает, - включить таймер-0 и при переполнении перйти на "Timer0isr" -- ???
Спосибо за внимание, если будут вопросы в дальнейшем - поможешь..
очень хочу разобраться хоь с эти языком...
-
Radan
- Мучитель микросхем
- Сообщения: 465
- Зарегистрирован: Ср июн 21, 2006 08:24:32
- Откуда: Лисичанск
- Контактная информация:
Step -1 - это шаг в цикле со значением -1. Т.е. в данном примере будет считать так: 255, 254, 253 ... 3, 2, 1, 0.
Prescale = 1 - это делитель для таймера. Выбирается из стандартного ряда - 1, 64, 256
On Timer0 Timer0isr - при срабатывании таймера перейти на Timer0isr
Об этом всём можно почитать в руководстве по ВАСИКУ на английском или здесь http://bascom.at.ua/load/ на русском.
Prescale = 1 - это делитель для таймера. Выбирается из стандартного ряда - 1, 64, 256
On Timer0 Timer0isr - при срабатывании таймера перейти на Timer0isr
Об этом всём можно почитать в руководстве по ВАСИКУ на английском или здесь http://bascom.at.ua/load/ на русском.
- константин_KoSS_89
- Вымогатель припоя
- Сообщения: 602
- Зарегистрирован: Пн дек 29, 2008 01:40:28
- Откуда: (Украина, г. Стаханов, Луганская обл.) теперь Кемерово :)
- константин_KoSS_89
- Вымогатель припоя
- Сообщения: 602
- Зарегистрирован: Пн дек 29, 2008 01:40:28
- Откуда: (Украина, г. Стаханов, Луганская обл.) теперь Кемерово :)
Здрасти, я долго ждать не заставил....
ШУТКА
Собственно вопрос: имеем - между PORTB , PORTD.6 и PORTD.0 , PORTD.1 , PORTD.2 включены светики ( АНОДАМА НА PORTB , PORTD.6 ) как реализовать эффекты с помощью оператора DATA 1 , 2 , 3 , n...?????
Точнее как правельно записать значения в таблицу ( какое число равно какому порту по счёту, или как происходит вывод инфы)
И как значения этой таблицы вывести на порты?
Просмотрел на этом http://bascom.at.ua/load/ сайте всё чё мона. но так и не понял...
Да и ШИМ регулировка яркости отдельно работает, а вот в свою прогу засандалить тож невыходит, иль хотяб чтоб кнопками яркость регулировать для нескольких светиков тож ума не приложу
Прошу прощения за сопли на форуме, просто запутался совсем, а разобраться охота.
По каким пасобиям учились вы? Я всё, что не читал, либо вобше непойму, либо там скубные примеры, которые даже я придумаю....
Всем СПОСИБО![/quote]
Собственно вопрос: имеем - между PORTB , PORTD.6 и PORTD.0 , PORTD.1 , PORTD.2 включены светики ( АНОДАМА НА PORTB , PORTD.6 ) как реализовать эффекты с помощью оператора DATA 1 , 2 , 3 , n...?????
Точнее как правельно записать значения в таблицу ( какое число равно какому порту по счёту, или как происходит вывод инфы)
И как значения этой таблицы вывести на порты?
Просмотрел на этом http://bascom.at.ua/load/ сайте всё чё мона. но так и не понял...
Да и ШИМ регулировка яркости отдельно работает, а вот в свою прогу засандалить тож невыходит, иль хотяб чтоб кнопками яркость регулировать для нескольких светиков тож ума не приложу
Прошу прощения за сопли на форуме, просто запутался совсем, а разобраться охота.
По каким пасобиям учились вы? Я всё, что не читал, либо вобше непойму, либо там скубные примеры, которые даже я придумаю....
Всем СПОСИБО![/quote]
VladI+ писал(а):Найдено в сети.
(Качество не очень)
Marcin Wiązania
Programowanie mikrokontrolerów AVR w języku BASCOM .
PDF 21,2 Mb
(добавил листинги)
http://www.onlinedisk.ru/file/104744/
С наилучшими пожеланиями VladI+ !
Немного поработал и сделал файл в формате DJVU (6,8 Mb)
Разрезал страницы,выровнял.
Качаем-
http://www.onlinedisk.ru/file/163438/
- константин_KoSS_89
- Вымогатель припоя
- Сообщения: 602
- Зарегистрирован: Пн дек 29, 2008 01:40:28
- Откуда: (Украина, г. Стаханов, Луганская обл.) теперь Кемерово :)
saschai писал(а):По каким пасобиям учились вы? Я всё, что не читал, либо вобше непойму, либо там скубные примеры, которые даже я придумаю....
Самый лучший учебник, чужие исходники
Да, но в этих исходниках всё так запутано и есть такие "фразы" которых в своей справке я ненахожу.
Вобщем всё что у меня из справок я вложу в архив, может пригодиться кому....
Жду ещё умных мыслей
- Вложения
-
- BASCOM_8051_KULISH.rar
- Всё чё у меня по справкам имееться
- (283.17 КБ) 478 скачиваний
- константин_KoSS_89
- Вымогатель припоя
- Сообщения: 602
- Зарегистрирован: Пн дек 29, 2008 01:40:28
- Откуда: (Украина, г. Стаханов, Луганская обл.) теперь Кемерово :)
привет народ снова =)
делаю сейчас меню для LCD
примеров не нашел...
так вот...
как мне на выходе получить типа M1 для вывода константы?
такой код не рабит как положено..
а код типа M ; I на жки выводит мне 01,02,03 = некатит кароч...
есть ли другой способ получить M1 M2 M3 на выходе жки?
делаю сейчас меню для LCD
примеров не нашел...
так вот...
как мне на выходе получить типа M1 для вывода константы?
такой код не рабит как положено..
Код: Выделить всё
Increm:
Incr I
Cls
If I = 1 Then Lcd M1 '--|
If I = 2 Then Lcd M2 '--| вывожу константу на жки
If I = 3 Then Lcd M3 '--|
If I = 3 Then I = 1 ' переход на 1 первый пункт меню
Goto Debo 'переход к опросу кнопок
Returnа код типа M ; I на жки выводит мне 01,02,03 = некатит кароч...
есть ли другой способ получить M1 M2 M3 на выходе жки?
- константин_KoSS_89
- Вымогатель припоя
- Сообщения: 602
- Зарегистрирован: Пн дек 29, 2008 01:40:28
- Откуда: (Украина, г. Стаханов, Луганская обл.) теперь Кемерово :)
pavel123 писал(а):Здрасте,
Не могу заставить работать ds18s20 в протеусе. Постоянно 0 показывает. Может есть у кого рабочий код. Посмотреть, да разобраться в своих ошибках.
Спасибо.
$regfile = "2313def.dat"
$baud = 9600
$crystal = 4000000
Config Lcd = 16 * 1
Config Lcdpin = Pin , Db4 = Portb.1 , Db5 = Portb.2 , Db6 = Portb.3 , Db7 = Portb.4 , E = Portb.5 , Rs = Portb.6
Config 1wire = Portd.5
Dim Byte0 As Byte
Dim Byte1 As Byte
Dim Signtemperatura As String * 1
Dim T1 As Byte
Dim T2 As Byte
Dim I As Integer
Do
1wreset
1wwrite &HCC
1wwrite &H44
Waitms 750
1wreset
1wwrite &HCC
1wwrite &HBE
Byte0 = 1wread()
Byte1 = 1wread()
If Byte1 >= 248 Then
Byte0 = &HFF - Byte0
Byte1 = &HFF - Byte1
Signtemperatura = "-"
Else
Signtemperatura = "+"
End If
T1 = Byte0 / 16
T2 = Byte1 * 16
T1 = T1 + T2
Cls
Lcd Signtemperatura ; T1 ; "C"
Wait 2
Loop
End
Думаю это рабочий код.