BASCOM AVR в вопросах и ответах
Все заработало. Оказывается, была сопля при пайке проводков к плате LCD. Я облегченно вздохнул.
- Реклама
Доброго дня !
Уважаемые знатоки, кто-нибудь заводил дисплеи e-ink на Bascom ?
Вот тут нашел пример, но никак не заводится !
Если у кого есть положительный результат - помогите с кодом. Или они разные бывают, эти дисплеи ?...
У меня дисплей 1,54" 200х200 с платой, с Алика.
Спасибо.
Уважаемые знатоки, кто-нибудь заводил дисплеи e-ink на Bascom ?
Вот тут нашел пример, но никак не заводится !
Если у кого есть положительный результат - помогите с кодом. Или они разные бывают, эти дисплеи ?...
У меня дисплей 1,54" 200х200 с платой, с Алика.
Спасибо.
С уважением,
Алексей.
Алексей.
Заводил, работает, но я переделал SPI на программный ногодрыг, а также переделал вывод шрифта, так как было лень разбираться с авторской задумкой. Дисплей 200х200.
добавлено: Нашел дома какой-то кусок со шрифтом. Должен как-то работать.
добавлено: Нашел дома какой-то кусок со шрифтом. Должен как-то работать.
- Вложения
-
- epd200x200.zip
- (8.42 КБ) 301 скачивание
[uquote="Gordon Shumway",url="/forum/viewtopic.php?p=3829054#p3829054"]Уважаемые знатоки, кто-нибудь заводил дисплеи e-ink на Bascom ?
Вот тут нашел пример, но никак не заводится !
У меня дисплей 1,54" 200х200 с платой, с Алика.[/uquote]
Предварительная причина неработоспособности - выпуск обновленных дисплеев версии 2, об этом написано на сайте производителя Waveshare.
Одинаковые дисплеи Версии 1 и версии 2 несовместимы, у них отличается первоначальная инициализация. А команды, как я понял, совпадают.
Для экспериментов купил Arduino Nano, скачал тестовые библиотеки - дисплеи работают только с новой V2 библиотекой. Но в Ардуино я - как балерина в тракторе...
Поэтому, если вдруг кто-то может разобрать библиотеку Ардуины и адаптировать ее под наш Баском - было бы здОрово.
Библиотеки могу выслать.
Спасибо.
PS: сами по себе дисплеи интересные, могут показывать картинку при полном отсутствии питания и управления. Вывел нужную информацию - и спать. Можно вообще вынуть дисплей из схемы -
и он будет показывать выведенную картинку бесконечно долго. Для энергоемких показометров - самое оно.
Недостаток - медленное обновление всего дисплея, около 2 секунд. Но поддерживается быстрое частичное обновление, допустим, число на дисплее.
Вот тут нашел пример, но никак не заводится !
У меня дисплей 1,54" 200х200 с платой, с Алика.[/uquote]
Предварительная причина неработоспособности - выпуск обновленных дисплеев версии 2, об этом написано на сайте производителя Waveshare.
Одинаковые дисплеи Версии 1 и версии 2 несовместимы, у них отличается первоначальная инициализация. А команды, как я понял, совпадают.
Сейчас на Али продаются дисплеи второй версии, библиотека Баском писалась под первую версию.The 1.54inch e-Paper is updated to 1.54inch e-Paper V2 version. Codes of the two version are not compatible with each other. Except for the controller and codes,
the new V2 version is exactly the same as the old one. If you are users of the old version, you need to update your codes as well for your new order.
Для экспериментов купил Arduino Nano, скачал тестовые библиотеки - дисплеи работают только с новой V2 библиотекой. Но в Ардуино я - как балерина в тракторе...
Поэтому, если вдруг кто-то может разобрать библиотеку Ардуины и адаптировать ее под наш Баском - было бы здОрово.
Библиотеки могу выслать.
Спасибо.
PS: сами по себе дисплеи интересные, могут показывать картинку при полном отсутствии питания и управления. Вывел нужную информацию - и спать. Можно вообще вынуть дисплей из схемы -
и он будет показывать выведенную картинку бесконечно долго. Для энергоемких показометров - самое оно.
Недостаток - медленное обновление всего дисплея, около 2 секунд. Но поддерживается быстрое частичное обновление, допустим, число на дисплее.
С уважением,
Алексей.
Алексей.
У меня тоже получилось несколько лет тому назад.
дисплеи GDEW0154Z17
подключал дисплеи с диагональю - 1,54(152х152)/2,6(152х304)/4,2(400х390)
Есть для баскома несколько функций для отображения штатных шрифтов и картинок.
Дисплеи на 3 цвета.
Если будет интерес, выложу. Но они корявые. Под софтверный и железный интерфейс
Только, надо понимать что в течении 1-2 месяцев при ежеминутном обновлении дисплей умрет.

дисплеи GDEW0154Z17
подключал дисплеи с диагональю - 1,54(152х152)/2,6(152х304)/4,2(400х390)
Есть для баскома несколько функций для отображения штатных шрифтов и картинок.
Дисплеи на 3 цвета.
Если будет интерес, выложу. Но они корявые. Под софтверный и железный интерфейс
Только, надо понимать что в течении 1-2 месяцев при ежеминутном обновлении дисплей умрет.
- Реклама
[uquote="vanyap1",url="/forum/viewtopic.php?p=3834561#p3834561"]Если будет интерес, выложу. Но они корявые. Под софтверный и железный интерфейс
Только, надо понимать что в течении 1-2 месяцев при ежеминутном обновлении дисплей умрет.[/uquote]
Супер, покажите, пожалуйста, что у вас есть.
Только, раз вы это делали несколько лет назад - боюсь, что это было под первый вариант дисплеев. Но попробовать стоит.
Мой планируемый показометр будет обновлять данные не чаще одного раза в 30-60 минут.
А что в этих дисплеях может умереть ?
Только, надо понимать что в течении 1-2 месяцев при ежеминутном обновлении дисплей умрет.[/uquote]
Супер, покажите, пожалуйста, что у вас есть.
Только, раз вы это делали несколько лет назад - боюсь, что это было под первый вариант дисплеев. Но попробовать стоит.
Мой планируемый показометр будет обновлять данные не чаще одного раза в 30-60 минут.
А что в этих дисплеях может умереть ?
С уважением,
Алексей.
Алексей.
Прикрепил архив.
Там две папки - одни и те же проекты, только разные степени готовности. под разные дисплеи.
Также (третья папка) исходники проектов для конвертирования картинок и создания шрифтов на .net у visual studio
часы применял - pcf2129, градусник с барометром - mpl115a2.
Код корявый, делал сам, как умел. Делать с им можете что хотите.
По поводу вопросов по примененным методам - строкой выше.
По поводу вопросов - почему так что то реализовано а не иначе - могу и не вспомнить, делал в 2017 году. Но это точно работает.
Даташитов на свои дисплеи уже не нашел. наверное остались на старом пк.
настройка подключения дисплея в этой секции (разберетесь) -
Там две папки - одни и те же проекты, только разные степени готовности. под разные дисплеи.
Также (третья папка) исходники проектов для конвертирования картинок и создания шрифтов на .net у visual studio
часы применял - pcf2129, градусник с барометром - mpl115a2.
Код корявый, делал сам, как умел. Делать с им можете что хотите.
По поводу вопросов по примененным методам - строкой выше.
По поводу вопросов - почему так что то реализовано а не иначе - могу и не вспомнить, делал в 2017 году. Но это точно работает.
Даташитов на свои дисплеи уже не нашел. наверное остались на старом пк.
настройка подключения дисплея в этой секции (разберетесь) -
Код: Выделить всё
'_______________________________|
Busy Alias Pind.0 : Config Busy = Input : Set Busy 'Display Enable
Power_epd Alias Portd.2 : Config Power_epd = Output : Reset Power_epd 'Display Power Enable
Ep_res Alias Portd.3 : Config Ep_res = Output 'Reset
Dc Alias Portd.4 : Config Dc = Output 'Data/command
Ce Alias Portd.5 : Config Ce = Output 'Display Enable
Mclk Alias Portd.6 : Config Mclk = Output 'SPI CLOK
Dat Alias Portd.7 : Config Dat = Output 'SPI DATA
'_______________________________|- Вложения
-
- e_inc_bascom.7z
- (474.43 КБ) 320 скачиваний
- Сообщения: 2
- Зарегистрирован: Вс мар 11, 2018 13:24:43
Всем привет. Первая программа в протеусе работает. Можете подсказать есть ли в ней ошибки? Как сделать опрос кнопок без задержек?
$Regfile="attiny13a.dat"
$Crystal=8000000
'$hwstack=16
'$swstack=16
'$framesize=16
Config Pinb.3 = Input
Config Pinb.4 = Input
Config PINb.1 = Input
Config Portb.2 = Output
Config Portb.0 = Output
Dim SR As Byte
SR = 0
Portb.0 = 0
Do
If Pinb.1 = 0 Then IF SR = 1 Then Gosub Trunk_open
IF SR = 0 Then Gosub Led_blink
If Pinb.3 = 1 Then SR = 0
If Pinb.4 = 1 Then SR = 1
Portb.2 = 0
Loop
Trunk_open:
Portb.0 = 1
waitms 1000
Portb.0 = 0
waitms 1000
return
Led_blink:
Portb.2 = 1
If Pinb.4 = 1 Then SR = 1
If Pinb.4 = 1 Then return
waitms 100
Portb.2 = 0
If Pinb.4 = 1 Then SR = 1
If Pinb.4 = 1 Then return
waitms 550
Portb.2 = 1
If Pinb.4 = 1 Then SR = 1
If Pinb.4 = 1 Then return
waitms 100
Portb.2 = 0
If Pinb.4 = 1 Then SR = 1
If Pinb.4 = 1 Then return
waitms 550
return
End
$Regfile="attiny13a.dat"
$Crystal=8000000
'$hwstack=16
'$swstack=16
'$framesize=16
Config Pinb.3 = Input
Config Pinb.4 = Input
Config PINb.1 = Input
Config Portb.2 = Output
Config Portb.0 = Output
Dim SR As Byte
SR = 0
Portb.0 = 0
Do
If Pinb.1 = 0 Then IF SR = 1 Then Gosub Trunk_open
IF SR = 0 Then Gosub Led_blink
If Pinb.3 = 1 Then SR = 0
If Pinb.4 = 1 Then SR = 1
Portb.2 = 0
Loop
Trunk_open:
Portb.0 = 1
waitms 1000
Portb.0 = 0
waitms 1000
return
Led_blink:
Portb.2 = 1
If Pinb.4 = 1 Then SR = 1
If Pinb.4 = 1 Then return
waitms 100
Portb.2 = 0
If Pinb.4 = 1 Then SR = 1
If Pinb.4 = 1 Then return
waitms 550
Portb.2 = 1
If Pinb.4 = 1 Then SR = 1
If Pinb.4 = 1 Then return
waitms 100
Portb.2 = 0
If Pinb.4 = 1 Then SR = 1
If Pinb.4 = 1 Then return
waitms 550
return
End
Я не понимаю до конца, что должна делать эта программа. Попытался вникнуть в задумку:
$Regfile="attiny13a.dat"
$Crystal=8000000
$hwstack=16
$swstack=16
$framesize=16
Config Pinb.3 = Input
Config Pinb.4 = Input
Config PINb.1 = Input
Config Portb.2 = Output
Config Portb.0 = Output
Dim SR As bit
SR = 0
Portb.0 = 0
Do
If Pinb.1 = 0 and SR = 1 Then Gosub Trunk_open
IF SR = 0 Then Gosub Led_blink
If Pinb.3 = 1 Then SR = 0
If Pinb.4 = 1 Then SR = 1
Portb.2 = 0
Loop
Trunk_open:
Portb.0 = 1
waitms 1000
Portb.0 = 0
waitms 1000
return
Led_blink:
Portb.2 = 1
If Pinb.4 = 1 Then
SR = 1
else
waitms 100
Portb.2 = 0
waitms 550
Portb.2 = 1
waitms 100
Portb.2 = 0
waitms 550
endif
return
End
$Regfile="attiny13a.dat"
$Crystal=8000000
$hwstack=16
$swstack=16
$framesize=16
Config Pinb.3 = Input
Config Pinb.4 = Input
Config PINb.1 = Input
Config Portb.2 = Output
Config Portb.0 = Output
Dim SR As bit
SR = 0
Portb.0 = 0
Do
If Pinb.1 = 0 and SR = 1 Then Gosub Trunk_open
IF SR = 0 Then Gosub Led_blink
If Pinb.3 = 1 Then SR = 0
If Pinb.4 = 1 Then SR = 1
Portb.2 = 0
Loop
Trunk_open:
Portb.0 = 1
waitms 1000
Portb.0 = 0
waitms 1000
return
Led_blink:
Portb.2 = 1
If Pinb.4 = 1 Then
SR = 1
else
waitms 100
Portb.2 = 0
waitms 550
Portb.2 = 1
waitms 100
Portb.2 = 0
waitms 550
endif
return
End
- Сообщения: 2
- Зарегистрирован: Вс мар 11, 2018 13:24:43
В машину хочу поставить привод для открытия багажника с наружи, сигнализация стоит штатная и на ней нет выхода состояния откр/Закр, сигнал с центр замка хочу подать на порт b3,b4. Pinb1 для кнопки открыть багажник pinb0 выход на реле привода. Portb2 светодиод для визуального контроля состояния
- Сообщения: 546
- Зарегистрирован: Вс сен 10, 2006 00:04:03
[uquote="svktaurus",url="/forum/viewtopic.php?p=3845726#p3845726"]В машину хочу поставить привод для открытия багажника с наружи, сигнализация стоит штатная и на ней нет выхода состояния откр/Закр, сигнал с центр замка хочу подать на порт b3,b4. Pinb1 для кнопки открыть багажник pinb0 выход на реле привода. Portb2 светодиод для визуального контроля состояния[/uquote]
Не надо опроса кнопок- используйте прерывания.
Не надо опроса кнопок- используйте прерывания.
- Сообщения: 1
- Зарегистрирован: Чт май 28, 2020 15:06:53
Доброго времени суток. Возникла проблема, я новичок в мк и программировании, сижу и разбираю программу часов написаной в BASCOM-AVR, всё вроде бы понятно но есть одно но: на мк подвешен часовой кварц, частота его определена в 8мгц, а предделитель у таймера стоит на 8. Почему именно на 8? Заранее спасибо! Вот код(автор p-a-h-a):
$regfile = "m8def.dat"
$crystal = 8000000
Config Portb = Output , Portd = Output : Portc = &H30
Dim X As Byte , Cifri(4) As Byte 'задаем всякие переменные и масивы '
Config Clock = Soft ' конфигурируем совтовые часы
Config Timer0 = Timer , Prescale = 8 : On Timer0 Pulse : Enable Timer0: Enable Interrupts ' конфигурируем таймер 0 чтоб потом на него повесить алгоритм отображения цифр
Do ' начало основного цикла
If Pinc.4 = 0 Then
Do
Incr _min : _sec = 00
If _min > 59 Then : _min = 00 : Incr _hour : End If : If _hour > 23 Then _hour = 00 : Waitms 100
Loop Until Pinc.4 = 1
End If
If Pinc.5 = 0 Then
Do
Incr _hour : If _hour > 23 Then _hour = 00 : Waitms 100
Loop Until Pinc.5 = 1
End If
Loop 'конец основного цикла
Pulse: ' подпрограмма прерываний таймера0
Cifri(1) = _min Mod 10 : Cifri(2) = _min / 10 : Cifri(3) = _hour Mod 10 : Cifri(4) = _hour / 10
Portb = &HFF
Incr X : If X > 3 Then X = 0
Portd = Lookup(cifri(x + 1) , Dta)
Reset Portb.x
Return ' возвращаемся на место откуда прервали программу
Dta: ' таблица с данными о цифрах зажигает по порядку : 0123456789
Data &HEF , &H8C , &HB7 , &HBE , &HDC , &H7E , &H7F , &HAC , &HFF , &HFE
$regfile = "m8def.dat"
$crystal = 8000000
Config Portb = Output , Portd = Output : Portc = &H30
Dim X As Byte , Cifri(4) As Byte 'задаем всякие переменные и масивы '
Config Clock = Soft ' конфигурируем совтовые часы
Config Timer0 = Timer , Prescale = 8 : On Timer0 Pulse : Enable Timer0: Enable Interrupts ' конфигурируем таймер 0 чтоб потом на него повесить алгоритм отображения цифр
Do ' начало основного цикла
If Pinc.4 = 0 Then
Do
Incr _min : _sec = 00
If _min > 59 Then : _min = 00 : Incr _hour : End If : If _hour > 23 Then _hour = 00 : Waitms 100
Loop Until Pinc.4 = 1
End If
If Pinc.5 = 0 Then
Do
Incr _hour : If _hour > 23 Then _hour = 00 : Waitms 100
Loop Until Pinc.5 = 1
End If
Loop 'конец основного цикла
Pulse: ' подпрограмма прерываний таймера0
Cifri(1) = _min Mod 10 : Cifri(2) = _min / 10 : Cifri(3) = _hour Mod 10 : Cifri(4) = _hour / 10
Portb = &HFF
Incr X : If X > 3 Then X = 0
Portd = Lookup(cifri(x + 1) , Dta)
Reset Portb.x
Return ' возвращаемся на место откуда прервали программу
Dta: ' таблица с данными о цифрах зажигает по порядку : 0123456789
Data &HEF , &H8C , &HB7 , &HBE , &HDC , &H7E , &H7F , &HAC , &HFF , &HFE
Prescale = 8 нужно только для динамической индикации, подпрограмма которой вызывается по прерыванию от timer0. Работа timer0 не связана со счетом времени. Счет времени осуществляет встроенная функция Bascom, которая настроена тут: Config Clock = Soft.
Частота срабатывания прерываний будет 8 МГц делить на 8 и делить на 256 (переполнение timer0). Получится около 4 кГц. Там еще программно на 4 делится (Incr X : If X > 3 Then X = 0), на анодах индикатора будет около 1 кГц.
Частота срабатывания прерываний будет 8 МГц делить на 8 и делить на 256 (переполнение timer0). Получится около 4 кГц. Там еще программно на 4 делится (Incr X : If X > 3 Then X = 0), на анодах индикатора будет около 1 кГц.
- Сообщения: 5
- Зарегистрирован: Пт май 13, 2011 18:45:36
Привет коты!
Выпущена новая версия. Пора обновляться!
Качаем с официального сайта текущую версию баскома. http://register.mcselec.com/update.php? ... t=download
В архиве dll для IDE и еще пара ссылок.
Выпущена новая версия. Пора обновляться!
Качаем с официального сайта текущую версию баскома. http://register.mcselec.com/update.php? ... t=download
В архиве dll для IDE и еще пара ссылок.
- Вложения
-
- bascom_link.zip
- (44.87 КБ) 383 скачивания
-
- bascom.zip
- (17.68 КБ) 433 скачивания
Последний раз редактировалось Kotэ Вт июл 21, 2020 12:38:44, всего редактировалось 2 раза.
[uquote="cyborg1111",url="/forum/viewtopic.php?p=3847373#p3847373"]сижу и разбираю программу часов написаной в BASCOM-AVR, всё вроде бы понятно но есть одно но: на мк подвешен часовой кварц, частота его определена в 8мгц, а предделитель у таймера стоит на 8. Почему именно на 8?[/uquote]
Часовой кварц - это "генератор секунд", в общем, от него СЧИТАЮТ часы, а сама программа работает от внутреннего генератора на 8 МГц..
Видимо, у вас какие- то вот такие часы, или что- то похожее-

Часовой кварц - это "генератор секунд", в общем, от него СЧИТАЮТ часы, а сама программа работает от внутреннего генератора на 8 МГц..
Видимо, у вас какие- то вот такие часы, или что- то похожее-
- Сообщения: 5
- Зарегистрирован: Пт май 13, 2011 18:45:36
Many links to download BASCOM-AVR 2.0.8.3 https://pastebin.com/iHac7Uvxtanveerriaz писал(а):can not down load new ver. ERR-D5
Привет, коты. У меня небольшая загвоздка. Написал малюсенькую програмульку, по другому и не назовешь. При попытке компиляции выдает ошибку в 20 строке (замкнулся геркон). Не могу понять, что ей не нравится. А очень надо. Может, кто глянет свежим взглядом.
$regfile = "attiny13a.dat"
$hwstack = 10
$swstack = 10
$framesize = 20
Config Portb.0 = Output
Config Pinb.1 = Input
Knopka Alias Pinb.3
Motor Alias Portb.0
Gerkon Alias Pinb.1
Do
While Gerkon = O ' замкнулся геркон
Motor = 1 'включился мотор
Wend
If Knopka = 0 Then 'сработал концевик
Reset Motor ' мотор выключился
End If
Loop
$regfile = "attiny13a.dat"
$hwstack = 10
$swstack = 10
$framesize = 20
Config Portb.0 = Output
Config Pinb.1 = Input
Knopka Alias Pinb.3
Motor Alias Portb.0
Gerkon Alias Pinb.1
Do
While Gerkon = O ' замкнулся геркон
Motor = 1 'включился мотор
Wend
If Knopka = 0 Then 'сработал концевик
Reset Motor ' мотор выключился
End If
Loop
- Сообщения: 34
- Зарегистрирован: Пт фев 18, 2011 16:09:15
To rojnov!
В строке "While Gerkon = O ' замкнулся геркон" мне кажется у Вас записан не НОЛЬ (т.е. 0), а символ О!
В строке "While Gerkon = O ' замкнулся геркон" мне кажется у Вас записан не НОЛЬ (т.е. 0), а символ О!


