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

Обсуждаем контроллеры компании Atmel.
L.O.D
Встал на лапы
Сообщения: 139
Зарегистрирован: Чт фев 11, 2016 18:35:37

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

Сообщение L.O.D »

Вообще-то, вопрос сформулирован сбивчиво и неточно - возможно двоякое понимание того, что там на самом деле происходит. Надо ждать уточнений от domrustika.
- Из овощей я больше всего люблю пельмени... © Соседский Мальчик
Аватара пользователя
serg_svd
Собутыльник Кота
Сообщения: 2560
Зарегистрирован: Ср янв 16, 2008 08:34:04
Откуда: KMV

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

Сообщение serg_svd »

Ищу библиотеку Rainbow.Lib для WS2812b.
Есть ссылка http://bascom-forum.de/showthread.php?6457-Rainbow-Lib-1-12. Пробовал тут регистрироваться, не вышло. По-моему еще денег просят для регистрации. Судя по официальному сайту Bascom, данная библиотека входит в версию программы 2079. У меня 2078. Хотел добавить бы. Просто пришли такие светодиоды. Хочется запустить, но пока не идет понимание того, как сделать управление. Погуглил, примеры есть, но во многих используются вставки ассемблера и я пока не разобрался с кодом.
"Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа." Ро́берт Ше́кли
Я правильных ответов знаю мало, поэтому не стесняюсь и много спрашиваю.
Аватара пользователя
max50
Мучитель микросхем
Сообщения: 497
Зарегистрирован: Ср дек 10, 2008 21:24:28
Откуда: Алтайский край, Барнаул

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

Сообщение max50 »

serg_svd писал(а):Ищу библиотеку Rainbow.Lib для WS2812b.

Версия 1.21
Того, кто не задумывается о далеких трудностях, ожидают близкие неприятности.
Аватара пользователя
serg_svd
Собутыльник Кота
Сообщения: 2560
Зарегистрирован: Ср янв 16, 2008 08:34:04
Откуда: KMV

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

Сообщение 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
"Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа." Ро́берт Ше́кли
Я правильных ответов знаю мало, поэтому не стесняюсь и много спрашиваю.
Аватара пользователя
serg_svd
Собутыльник Кота
Сообщения: 2560
Зарегистрирован: Ср янв 16, 2008 08:34:04
Откуда: KMV

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

Сообщение serg_svd »

Ура, заработало!
Буду теперь с библиотекой разбираться и думать куда применить это колечко
Изображение
"Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа." Ро́берт Ше́кли
Я правильных ответов знаю мало, поэтому не стесняюсь и много спрашиваю.
domrustika
Грызет канифоль
Сообщения: 257
Зарегистрирован: Чт мар 22, 2007 13:50:33
Откуда: казань
Контактная информация:

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

Сообщение domrustika »

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

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

Сообщение edm2007 »

Теоретически, если это активный флюс, то может. Но вероятность все же очень мала. Вы уверены что код рабочий? Можете показать? В монтаже точно ошибок нет? Дисплей другим кодом (заведомо рабочим) проверяли?
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
domrustika
Грызет канифоль
Сообщения: 257
Зарегистрирован: Чт мар 22, 2007 13:50:33
Откуда: казань
Контактная информация:

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

Сообщение 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. не помогло.
Аватара пользователя
COKPOWEHEU
Говорящий с текстолитом
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

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

Сообщение COKPOWEHEU »

Что значит "фузы стоят на 8 МГц"? Внутренний RC-генератор что ли? Можете попробовать в настройках программы уменьшить скорость обмена с дисплеем. Например, поставить $crystal = 1000000.
Аватара пользователя
serg_svd
Собутыльник Кота
Сообщения: 2560
Зарегистрирован: Ср янв 16, 2008 08:34:04
Откуда: KMV

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

Сообщение serg_svd »

domrustika, попробуйте добавить строчку

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

CONFIG LCDBUS = 4

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

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

Сообщение edm2007 »

Ну с кодом точно все в порядке:

Изображение

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

P.S. У HD44780 и совместимых с ним контроллеров инициализация отличается, но в библиотеке должно это быть учтено, я думаю...
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Novice user
Мудрый кот
Сообщения: 1704
Зарегистрирован: Вт янв 05, 2016 10:14:25
Откуда: поселок Мелеуз

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

Сообщение 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 МГц
Аватара пользователя
Adagumer
Поставщик валерьянки для Кота
Сообщения: 2283
Зарегистрирован: Чт ноя 15, 2012 20:47:59
Откуда: Крымск

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

Сообщение Adagumer »

Novice user писал(а):кварца нет,фузы заводские,но с внутренним генератором на 8 МГц

А у 8_меги по умолчанию внутренний генератор не 1 МГц генерит?
Novice user
Мудрый кот
Сообщения: 1704
Зарегистрирован: Вт янв 05, 2016 10:14:25
Откуда: поселок Мелеуз

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

Сообщение 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 он вкл,в телеке и часов нет,только таймер откл),пульт пока собран на другой конструкции,но не могу идентифицировать отправляемые им адрес и команду
Аватара пользователя
Adagumer
Поставщик валерьянки для Кота
Сообщения: 2283
Зарегистрирован: Чт ноя 15, 2012 20:47:59
Откуда: Крымск

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

Сообщение Adagumer »

Novice user писал(а):Я ж написал-все фузы заводские.....,а CKSEL на 8 МГц)

Звыняйте, я таки думал что "заводские" это какие идут с завода,
а не изменённые под 8 МГц.
Novice user
Мудрый кот
Сообщения: 1704
Зарегистрирован: Вт янв 05, 2016 10:14:25
Откуда: поселок Мелеуз

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

Сообщение Novice user »

бывает :)) а есть ли у кого еще вариант декодирования сигнала с пульта ду протокола NEC?
Аватара пользователя
serg_svd
Собутыльник Кота
Сообщения: 2560
Зарегистрирован: Ср янв 16, 2008 08:34:04
Откуда: KMV

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

Сообщение 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 при этом работает.
Вложения
WO1602F-TMI-AT.pdf
Datascheet
(417.27 КБ) 228 скачиваний
"Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа." Ро́берт Ше́кли
Я правильных ответов знаю мало, поэтому не стесняюсь и много спрашиваю.
Аватара пользователя
Adagumer
Поставщик валерьянки для Кота
Сообщения: 2283
Зарегистрирован: Чт ноя 15, 2012 20:47:59
Откуда: Крымск

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

Сообщение 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
Аватара пользователя
serg_svd
Собутыльник Кота
Сообщения: 2560
Зарегистрирован: Ср янв 16, 2008 08:34:04
Откуда: KMV

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

Сообщение 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
"Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа." Ро́берт Ше́кли
Я правильных ответов знаю мало, поэтому не стесняюсь и много спрашиваю.
Аватара пользователя
Adagumer
Поставщик валерьянки для Кота
Сообщения: 2283
Зарегистрирован: Чт ноя 15, 2012 20:47:59
Откуда: Крымск

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

Сообщение Adagumer »

serg_svd писал(а):Это 4 битный режим индикатора. Я использовал 8 битный.

Звыняйте не заметил! :?
Ответить

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