Страница 253 из 304

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

Добавлено: Вс апр 03, 2016 08:27:18
L.O.D
Вообще-то, вопрос сформулирован сбивчиво и неточно - возможно двоякое понимание того, что там на самом деле происходит. Надо ждать уточнений от domrustika.

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

Добавлено: Чт апр 07, 2016 13:08:50
serg_svd
Ищу библиотеку Rainbow.Lib для WS2812b.
Есть ссылка http://bascom-forum.de/showthread.php?6 ... w-Lib-1-12. Пробовал тут регистрироваться, не вышло. По-моему еще денег просят для регистрации. Судя по официальному сайту Bascom, данная библиотека входит в версию программы 2079. У меня 2078. Хотел добавить бы. Просто пришли такие светодиоды. Хочется запустить, но пока не идет понимание того, как сделать управление. Погуглил, примеры есть, но во многих используются вставки ассемблера и я пока не разобрался с кодом.

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

Добавлено: Чт апр 07, 2016 14:15:02
max50
serg_svd писал(а):Ищу библиотеку Rainbow.Lib для WS2812b.
Версия 1.21

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

Добавлено: Чт апр 07, 2016 15:11:19
serg_svd
max50, Спасибо!

Не пойму почему не работает. Текст программы взял из хелпа на официальном сайте просто, чтобы проверить работу библиотеки.
Подключаю библиотеку:

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

$lib "Rainbow.lib"
Полностью текст программы из хелпа
Спойлер

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

'-------------------------------------------------------------------------------
'                      rainbow_ws2812_Knightrider.bas
'                      based on sample from Galahat
'-------------------------------------------------------------------------------

$regfile = "m88pdef.dat"
$crystal = 8000000
$hwstack = 40
$swstack = 16
$framesize = 32
$lib "Rainbow.lib"


Config Rainbow = 1 , Rb0_len = 8 , Rb0_port = Portb , Rb0_pin = 0
'                                                   ^ connected to pin 0
'                                       ^------------ connected to portB
'                         ^-------------------------- 8 leds on stripe
'              ^------------------------------------- 1 channel


'Global Color-variables
Dim Color(3) As Byte
R Alias Color(_base) : G Alias Color(_base + 1) : B Alias Color(_base + 2)

'CONST
Const Numleds = 8

'----[MAIN]---------------------------------------------------------------------
Dim N As Byte

Rb_selectchannel 0                                          ' select first channel
R = 50 : G = 0 : B = 100                                    ' define a color
Rb_setcolor 0 , Color(1)                                    ' update leds
Rb_send

Do
  For N = 1 To Numleds -1
    Rb_shiftright 0 , Numleds                               'shift to the right all leds except the last one
    Waitms 100
    Rb_send
  Next
  For N = 1 To Numleds -1
    Rb_shiftleft 0 , Numleds                                'shift to the left all leds except the last one
    Waitms 100
    Rb_send
  Next
  Waitms 500                                                'wait a bit
Loop
Саму библиотеку скопировал в папку LIB программы.

PS. Смотрю саму библиотеку. Не соображу... Она по названию фирменной похожа? я просто те команды, что описаны в хелпе баскома не вижу в этой библиотеке. Или туплю?

PS2. Точно, библиотека другая. Нашел описание http://bascom-forum.de/mediawiki/index.php/Rainbow_Lib

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

Добавлено: Чт апр 07, 2016 16:41:34
serg_svd
Ура, заработало!
Буду теперь с библиотекой разбираться и думать куда применить это колечко
Изображение

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

Добавлено: Чт апр 07, 2016 21:12:44
domrustika
может ли экран hd44780 показывать квадраты в верхнем ряду, вместо того что написано в коде из за несмытого флюса с МК?

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

Добавлено: Пт апр 08, 2016 03:09:43
edm2007
Теоретически, если это активный флюс, то может. Но вероятность все же очень мала. Вы уверены что код рабочий? Можете показать? В монтаже точно ошибок нет? Дисплей другим кодом (заведомо рабочим) проверяли?

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

Добавлено: Пт апр 08, 2016 20:07:07
domrustika
монтаж рабочий проверил 2 раза. код самый обычный не пойму что тут может не работать. бред.
Спойлер

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

$regfile = "m8def.dat"
$crystal = 8000000
$hwstack = 32
$swstack = 8
$framesize = 24

Config Lcd = 16 * 2
  Config Lcdpin = Pin , Db4 = Portd.7 , Db5 = Portb.0 , Db6 = Portb.1 , Db7 = Portb.2 , E = Portd.6 , Rs = Portd.5
Initlcd

Cls
Cursor Off

Locate 1 , 1
Lcd "Hello,"
Lowerline
Lcd "world!"

End
но есть нюанс 1. впаян кварц на 16мгц. а фьюзы стоят на 8 мгц.. может ли из за этого не работать экран?
флюс отмыл полностью - ЛТИ 120. не помогло.

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

Добавлено: Пт апр 08, 2016 22:21:28
COKPOWEHEU
Что значит "фузы стоят на 8 МГц"? Внутренний RC-генератор что ли? Можете попробовать в настройках программы уменьшить скорость обмена с дисплеем. Например, поставить $crystal = 1000000.

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

Добавлено: Пт апр 08, 2016 23:03:31
serg_svd
domrustika, попробуйте добавить строчку

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

CONFIG LCDBUS = 4
перед инициализацией дисплея

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

Добавлено: Сб апр 09, 2016 07:29:42
edm2007
Ну с кодом точно все в порядке:

Изображение

Вывод R/W не забыли на землю подключить? Скрин фьюзов покажите, будьте добры.

P.S. У HD44780 и совместимых с ним контроллеров инициализация отличается, но в библиотеке должно это быть учтено, я думаю...

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

Добавлено: Вс апр 10, 2016 18:17:23
Novice user
протокол NEC все сделал как апноте 157,порты на жки свои,но опознается только адрес,команда всегда равно 0,где я мог ошибиться,исходник
Спойлер'*******************************************************************************
'*******************************************************************************
'* Filename : IR NEC by http://www.sbprojects.com/knowledge/ir/ir.htm
'* Revision : 1.0
'* Controller : ATMEGA8
'* Compiler : BASCOM-AVR 1.11.8.3 DEMO
'* Author : Rubashka Vasiliy , Ukraine , 2007
'* WWW : http://ledeffects.net
'* Mail : info@ledeffects.net
'* Thank you : Aheir, aheir@radiokot.ru
'*******************************************************************************
$regfile = "m8def.dat"
$crystal = 8000000 '?????????? ?????????
$hwstack = 32
$swstack = 10
$framesize = 40
'$lib "lcd4.lbx"

Config Lcdpin = Pin , Rs = Portc.5 , E = Portc.4 , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0
Config Lcd = 16 * 2
'Config Pind.2 = Input
'Config Portc.2 = Output
Config Lcd = 16 * 2
Config Pind.3 = Input
Portd.3 = 1
'Config Portc.2 = Output
Config Timer0 = Timer , Prescale = 256 '8000000/256=31250 Hz
Config Int1 = Falling 'Прерывание по спаду
Stop Timer0 'останавливаем таймер
Enable Timer0 'разрешаем работу таймера0
Enable Int1 'разрешаем работу прерывания0
Enable Interrupts 'Разрешаем прерывания

On Timer0 Tikers 'работа по таймеру
On Int1 Infrared 'работа по прерыванию

Dim Tik As Word 'счётчик тиков таймера
Dim Byt As Byte 'счётчик принятых бит
Dim Repeat_flag As Bit 'флаг повтора
Dim Start_flag As Bit 'флаг стартового условия
Dim Address As Byte 'байт адреса
Dim Command As Byte 'байт команды
Dim Address_1 As Byte 'прямой байт адреса
Dim Command_1 As Byte 'прямой байт команды
Dim Address_0 As Byte 'инверсный байт адреса
Dim Command_0 As Byte 'инверсный байт команды
Dim Summa As Word


'*******************************************************************************
Cls 'Очистить ЖКИ
Cursor Off 'Выключить курсор
Do 'Основной цикл

Locate 1 , 1
Lcd Address ; " " ; Command_0 ; " " 'Вывести на ЖКИ АДРЕС и КОММАНДУ
'If Command = 8 Then Portc.2 = 1 'Если нажата клавиша "P+" - включить светодиод
'If Command = 240 Then Portc.2 = 0 'Если нажата клавиша "P-" - выключить светодиод
Waitms 10 'Задержка 10 мс
Loop
End 'Конец основного цикла

'*******************************************************************************

Tikers: 'работа по таймеру

Timer0 = 253 '31250/(256-253)=10416,66 Hz (96 мкс)
'254 - TV SAMSUNG, 253 - DVD SAMSUNG и другие NEC
Incr Tik
If Tik >= 1200 Then 'если насчитали 1200 тиков, сбросили всё в исходное состояние
Tik = 0
Repeat_flag = 0
Start_flag = 0
Address_1 = 0
Command_1 = 0
Address_0 = 0
Command_0 = 0
Command = 0
Address = 0
Stop Timer0 'останавливаем таймер
End If

Return
'*******************************************************************************

Infrared: 'работа по прерыванию

Start Timer0 'запускаем таймер

If Tik >= 139 And Tik < 150 Then 'если случилось от 139 до 150 тиков - "СТАРТ"
Address = 1
Repeat_flag = 0
Start_flag = 1
Address_1 = 0
Command_1 = 0
Address_0 = 0
Command_0 = 0
End If

If Tik >= 116 And Tik < 139 Then 'если случилось от 116 до 138 тиков - "ПОВТОР"
Address = 2
Repeat_flag = 1
Start_flag = 0
End If

If Tik >= 22 And Tik < 116 And Start_flag = 1 Then 'если случилось от 22 до 115 тиков - приняли "1"
Incr Byt

If Byt < 9 Then
Shift Address_1 , Left
Address_1 = Address_1 + 1
End If

If Byt >= 9 And Byt < 17 Then
Shift Address_0 , Left
Address_0 = Address_0 + 1
End If

If Byt >= 17 And Byt < 25 Then
Shift Command_1 , Left
Command_1 = Command_1 + 1
End If

If Byt >= 25 Then
Shift Command_0 , Left
Command_0 = Command_0 + 1
End If
End If

If Tik >= 10 And Tik < 22 And Start_flag = 1 Then 'если случилось от 10 до 21 тика - приняли "0"
Incr Byt

If Byt < 9 Then
Shift Address_1 , Left
End If

If Byt >= 9 And Byt < 17 Then
Shift Address_0 , Left
End If

If Byt >= 17 And Byt < 25 Then
Shift Command_1 , Left
End If

If Byt >= 25 Then
Shift Command_0 , Left
End If
End If

Tik = 0

If Byt = 32 Then 'если приняли 4 байта, проверяем правильность приёма команды
'если адрес или команда 16-ричные, проверка не проходит, поэтому закомментировано
'Summa = Address_0 + Address_1
'If Summa = 255 Then
Address = Address_1
'Else
'Address = 0
'End If

'Summa = Command_0 + Command_1
'If Summa = 255 Then
Command = Command_1
'Else
'Command = 0
'End If
Byt = 0
Repeat_flag = 0
Start_flag = 0
Stop Timer0 'останавливаем таймер
End If

Return
кварца нет,фузы заводские,но с внутренним генератором на 8 МГц

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

Добавлено: Вс апр 10, 2016 19:35:24
Adagumer
Novice user писал(а): кварца нет,фузы заводские,но с внутренним генератором на 8 МГц
А у 8_меги по умолчанию внутренний генератор не 1 МГц генерит?

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

Добавлено: Вс апр 10, 2016 20:15:56
Novice user
Я ж написал-все фузы заводские(RSTDISBL,WDTON,SPIEN,CKOPT,EESAVE,BOOTSZ1,BOOTSZ0,BOOTRST,BODLEVEL,BODEN,SUT1,SUT0-все по умолчанию,то есть заводские,а CKSEL на 8 МГц)
Раньше все было норм,а тут,пробовал на другой плате с другими мк и фотоприемниками,ставил кварц на 8 мгц(естественно ставил соотв фузы)-команда=0,адрес=0 либо =2,иногда проскакивает адрес=64,но очень редко,наверно раз в сотню нажатий на пульте,пульт NEC 100 %,пробовал другие пульты того же стандарта-команда=0 и все!

просто у меня есть конструкция часы+2 термометра(дом и улица)+7 будильников+таймер до 99 мин,сейчас хочу добавить программируемый пульт управления для тв,а то на моем телеке нет вкл по времени(типа поставил на 7 утра и в 7,00 он вкл,в телеке и часов нет,только таймер откл),пульт пока собран на другой конструкции,но не могу идентифицировать отправляемые им адрес и команду

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

Добавлено: Вс апр 10, 2016 21:10:49
Adagumer
Novice user писал(а):Я ж написал-все фузы заводские.....,а CKSEL на 8 МГц)
Звыняйте, я таки думал что "заводские" это какие идут с завода,
а не изменённые под 8 МГц.

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

Добавлено: Пн апр 11, 2016 06:05:02
Novice user
бывает :)) а есть ли у кого еще вариант декодирования сигнала с пульта ду протокола NEC?

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

Добавлено: Пн апр 11, 2016 20:05:01
serg_svd
Возникла у меня необходимость запустить ЖК индикатор WO1602F-TMI-AT фирмы WINSTAR на контроллере ST7032. По даташиту написано, что совместим с контроллером HD44780.
набросал простой код для режима 8-bit.
Спойлер

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

' WO1602F-TMI

$regfile = "m8def.dat"
$crystal = 8000000
$hwstack = 40
$swstack = 16
$framesize = 32


Config Lcd = 16x2
Config Lcdpin = Pin , Port = Portb , E = Portc.0 , Rs = Portc.1

Initlcd
Cursor On
'Cursor Off Noblink
'Cls

Locate 1 , 1
Lcd "Hello world!"
Locate 2 , 1
Lcd "0123456789ABCDEF"

Do

Loop

End
индикатор подключен по схеме из даташита
Изображение

После запуска на индикаторе ничего нет, даже первая строка не подсвечивается. Стандартный дисплей HD44780 при этом работает.

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

Добавлено: Пн апр 11, 2016 20:55:47
Adagumer
serg_svd писал(а): Config Lcd = 16x2
Config Lcdpin = Pin , Port = Portb , E = Portc.0 , Rs = Portc.1
А порты по которым данные поступают почему не указали?
Вот примерно так:

Config Lcdpin = Pin , Rs = Portd.5 , E = Portd.6 , Db4 = Portd.7 , Db5 = Portb.0 , Db6 = Portb.1 , Db7 = Portb.2

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

Добавлено: Пн апр 11, 2016 21:06:52
serg_svd
Adagumer писал(а): Вот примерно так:

Config Lcdpin = Pin , Rs = Portd.5 , E = Portd.6 , Db4 = Portd.7 , Db5 = Portb.0 , Db6 = Portb.1 , Db7 = Portb.2
Это 4 битный режим индикатора. Я использовал 8 битный.
Строчка кода об этом и говорит

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

Config Lcdpin = Pin , Port = Portb , E = Portc.0 , Rs = Portc.1
Подключение к шине индикатора в данном случае будет такой:
PORTB.0 ---> D0
PORTB.1 ---> D1
PORTB.2 ---> D2
PORTB.3 ---> D3
PORTB.4 ---> D4
PORTB.5 ---> D5
PORTB.6 ---> D6
PORTB.7 ---> D7

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

Добавлено: Пн апр 11, 2016 21:19:16
Adagumer
serg_svd писал(а): Это 4 битный режим индикатора. Я использовал 8 битный.
Звыняйте не заметил! :?