Страница 16 из 304
Добавлено: Вт июн 16, 2009 13:17:50
Radan
Добавлено: Ср июн 17, 2009 08:47:50
константин_KoSS_89
Возможно я нуб...ну немогу я понять как этот шим устроен
Так и не разобрался, Таймер-0 переключает группы светиков или тоже участвует в ШИМе
Если несложно наваяй маленькую прожку (Для ATtiny2313) , чтоб сама яркость меняла на светике, сначала повышала, как наберёт полную яркость то понижала...
Очень хочу понять принцып! Ага?
И ещё, как выводиться на порты инфа записанная в DATA ?
Добавлено: Чт июн 18, 2009 08:15:29
Radan
В основном цикле программы пишем изменение переменных яркости 3 цветов:
Код: Выделить всё
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. Чем больше тактов включено, тем ярче горит светодиод. Для равномерного восприятия яркости глазом, необходимо учесть логарифмическую зависимость. В приведённой выше ссылке это реализовано.
Добавлено: Чт июн 18, 2009 09:32:46
константин_KoSS_89
Короче нифига я непонял. Вот, как я понял...Но оно не работает
$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
Слушай ну пожалуйсто помоги, ну очень хочу разобраться
Добавлено: Чт июн 18, 2009 10:16:14
константин_KoSS_89
В теории я ход всего понял:
Таймер-0 подсчитывает импульсы и записывает их количество в переменную PWM.
Далее идёт сравнение PWM и другой переменной и.т.д....
Просто непойму как это реализовать програмно.
Добавлено: Чт июн 18, 2009 11:31:58
Radan
Попробуй так:
Код: Выделить всё
$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
Добавлено: Чт июн 18, 2009 14:22:29
константин_KoSS_89
Большое спосибо. Наконецто!!!!
Можно небольшие подробности:
Что означает "Prescale = 1" "Step -1"
Строчка "On Timer0 Timer0isr" - означает, - включить таймер-0 и при переполнении перйти на "Timer0isr" -- ???
Спосибо за внимание, если будут вопросы в дальнейшем - поможешь..
очень хочу разобраться хоь с эти языком...

Добавлено: Пт июн 19, 2009 08:01:03
Radan
Step -1 - это шаг в цикле со значением -1. Т.е. в данном примере будет считать так: 255, 254, 253 ... 3, 2, 1, 0.
Prescale = 1 - это делитель для таймера. Выбирается из стандартного ряда - 1, 64, 256
On Timer0 Timer0isr - при срабатывании таймера перейти на Timer0isr
Об этом всём можно почитать в руководстве по ВАСИКУ на английском или здесь
http://bascom.at.ua/load/ на русском.
Добавлено: Пт июн 19, 2009 09:25:47
константин_KoSS_89
Ещё раз спосибо! Очень хороший сайт...

Добавлено: Пт июн 19, 2009 22:13:39
saschai
Генератор случайных чисел, в Бэйсике был, не могу найти
Если такого нет, то как организовать?
Заранее спасибо
Добавлено: Пт июн 19, 2009 23:19:11
pavel123
var = RND( limit )
Кажись, так.
Добавлено: Сб июн 20, 2009 00:08:19
saschai
Спасибо!
Добавлено: Сб июн 20, 2009 01:48:21
константин_KoSS_89
Здрасти, я долго ждать не заставил....

ШУТКА
Собственно вопрос: имеем - между PORTB , PORTD.6 и PORTD.0 , PORTD.1 , PORTD.2 включены светики ( АНОДАМА НА PORTB , PORTD.6 ) как реализовать эффекты с помощью оператора DATA 1 , 2 , 3 , n...?????
Точнее как правельно записать значения в таблицу ( какое число равно какому порту по счёту, или как происходит вывод инфы)
И как значения этой таблицы вывести на порты?
Просмотрел на этом
http://bascom.at.ua/load/ сайте всё чё мона. но так и не понял...
Да и ШИМ регулировка яркости отдельно работает, а вот в свою прогу засандалить тож невыходит, иль хотяб чтоб кнопками яркость регулировать для нескольких светиков тож ума не приложу
Прошу прощения за сопли на форуме, просто запутался совсем, а разобраться охота.
По каким пасобиям учились вы? Я всё, что не читал, либо вобше непойму, либо там скубные примеры, которые даже я придумаю....
Всем СПОСИБО![/quote]
Добавлено: Сб июн 20, 2009 11:13:39
VladI+
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/
Добавлено: Сб июн 20, 2009 11:50:25
saschai
По каким пасобиям учились вы? Я всё, что не читал, либо вобше непойму, либо там скубные примеры, которые даже я придумаю....
Самый лучший учебник, чужие исходники

Добавлено: Сб июн 20, 2009 12:49:51
константин_KoSS_89
saschai писал(а):По каким пасобиям учились вы? Я всё, что не читал, либо вобше непойму, либо там скубные примеры, которые даже я придумаю....
Самый лучший учебник, чужие исходники

Да, но в этих исходниках всё так запутано и есть такие "фразы" которых в своей справке я ненахожу.
Вобщем всё что у меня из справок я вложу в архив, может пригодиться кому....
Жду ещё умных мыслей

Добавлено: Сб июн 20, 2009 12:50:51
константин_KoSS_89
В один архив не влезло.
Остатки...
Добавлено: Сб июн 20, 2009 14:06:49
AVRDaemon
привет народ снова =)
делаю сейчас меню для 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 на выходе жки?
Добавлено: Вс июн 21, 2009 21:33:41
pavel123
Здрасте,
Не могу заставить работать ds18s20 в протеусе. Постоянно 0 показывает. Может есть у кого рабочий код. Посмотреть, да разобраться в своих ошибках.
Спасибо.
Добавлено: Вс июн 21, 2009 23:42:40
константин_KoSS_89
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
Думаю это рабочий код.