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

Обсуждаем контроллеры компании Atmel.
OLEGKARAS
Встал на лапы
Сообщения: 97
Зарегистрирован: Ср июл 10, 2013 21:30:16

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

Сообщение OLEGKARAS »

НУ нет так нет, и на том спасибо.
Аватара пользователя
Microtech
Поставщик валерьянки для Кота
Сообщения: 2052
Зарегистрирован: Вт ноя 03, 2009 21:02:38
Откуда: Москва
Контактная информация:

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

Сообщение Microtech »

Потребовалось хранить в программе шрифты, и выводить их на некий нестандартный индикатор с динамикой, управляемый вручную.
В Bascom-е есть примеры шрифтов и кривенький редактор для них. Пришлось только дорисовать русские буквы.
Формат файла шрифта текстовый, похож на ассемблер. Там каждая строчка типа ".DB 1,2,3,4,5,6,7,8"

Вопрос.
Корректно ли будет сделать так:
В конце программы поставить метку, после неё подключить файл со шрифтами директивой $include, затем обращаться к нужному месту этого блока данных через lookup? Например:
...
adres=123
A = LOOKUP( adres, ffont)
...
...

ffont:
$include "font5_7.font"
Аватара пользователя
fedyasolder
Поставщик валерьянки для Кота
Сообщения: 2168
Зарегистрирован: Ср май 01, 2013 13:53:56
Откуда: с пальмы в Рио-Инженейро

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

Сообщение fedyasolder »

Основная программа

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

End

$include "alpha.bas"

Прицепленный "alpha.bas"

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

Zero_big:
Data 9 , 63 , 252 , 127 , 254 , 192 , 3 , 128 , 1 , 128 , 1 , 128 , 1 , 192 , 3
Data 127 , 254 , 63 , 252
One_big:
Data 6 , 64 , 1 , 64 , 1 , 255 , 255 , 255 , 255 , 0 , 1 , 0 , 1
электропримат паяю даже лёжа...
Аватара пользователя
kip96
Держит паяльник хвостом
Сообщения: 965
Зарегистрирован: Ср авг 26, 2009 08:24:50
Откуда: 1300км от Пупа

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

Сообщение kip96 »

Кто нибудь юзал RC522 ? Изображение
Поделитесь наработками
Все делают ошибки, только мудрецы - новые, а дураки - старые.
Аватара пользователя
Microtech
Поставщик валерьянки для Кота
Сообщения: 2052
Зарегистрирован: Вт ноя 03, 2009 21:02:38
Откуда: Москва
Контактная информация:

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

Сообщение Microtech »

Всё заработало, как я и хотел. Lookup исправно берёт байты из файла, где данные вбиты через ".DB".
C файлом, где записано через "Data", скорее всего будет аналогичная ситуация. Само собой, компилятор выкидывает всё лишнее и в выходной файл включает только данные, перечисленные через запятую.
Аватара пользователя
fedyasolder
Поставщик валерьянки для Кота
Сообщения: 2168
Зарегистрирован: Ср май 01, 2013 13:53:56
Откуда: с пальмы в Рио-Инженейро

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

Сообщение fedyasolder »

Граждане, товарищи. Есть вопрос. Принцип работы бутлоадера я понял (хотя пока не реализовывал). Допустим я прошил контроллер бутлоадером. Мне нужно залить некие данные во внешнюю SPI flash (2\4\8\16 и т.д. Mbit). Разумеется, код обращения к внешней памяти по SPI можно вставить в сам бутлоадер. Вот сам вопрос в том, как подавать данные на прошивку внешней памяти. Это отдельный бинарник который будет отправлен вслед за бинарником контроллера (т.е. бутлоадер будет ждать когда я программой открою второй и отправлю) или все одним куском?
электропримат паяю даже лёжа...
dimmer
Первый раз сказал Мяу!
Сообщения: 31
Зарегистрирован: Сб сен 17, 2016 18:56:30

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

Сообщение dimmer »

Если ты сам будешь писать бутлоадер, то сам и протокол придумаешь. Как придумаешь так и будет работать.
Аватара пользователя
Адвансед
Встал на лапы
Сообщения: 98
Зарегистрирован: Вс мар 11, 2012 23:06:08
Откуда: Казань

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

Сообщение Адвансед »

Доброго времени суток! Помогите пожалуйста чайнику, если не бесплатно то можно за небольшое символическое вознаграждение.

Еле еле собрал код (не мало времени ушло на настройку портов и связь устройств)

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

$regfile = "attiny13.dat"
$crystal = 9600000
$hwstack = 16
$swstack = 16
$framesize = 16
Open "comb.3:19200,8,n,1" For Output As #1
Open "comb.4:19200,8,n,1" For Input As #2
Dim Cmd As String * 8

Config Portb.0 = Output
Led Alias Portb.0

Led = 1
Print #1 , "AT+CMGF=1"
Waitms 100

Print #1 , "AT+CNMI=2,2"
Waitms 100
Led = 0



Do
Wait 2
Led = 1
Print #1 , "ATD+79199999999;"
Wait 10
Print #1 , "Ath0"
Led = 0

Loop


Фрагмент кода в цикле тестовый, звонит и сбрасывает вызов


Помогите мне принятый вызов сохранить в энергозависимую память (скажем при первом включении питания в течение 30 секунд, например если произошел сбой питания. Так же можно сделать перезапись номера таким способом) и далее, вытаскивать его оттуда при вызове как номер по умолчанию.

Хочу собрать сигнализацию в деревню, т.к. бываю там редко есть вероятность проникновения чужих людей. Вариант выше, впринципе рабочий, если сделать набор номера по срабатыванию порта (кнопки). Очень хочется сделать так, чтобы можно было после включения питания в течение определенного времени можно было позвонить, и принятый вызов чтобы сохранялся в памяти устройства. - меня интересут только это фрашмент кода,т.к. не понимаю, как вытаскивать нужные 12 цифр из терминала без мусора...

Спасибо за внимание!
Аватара пользователя
max50
Мучитель микросхем
Сообщения: 497
Зарегистрирован: Ср дек 10, 2008 21:24:28
Откуда: Алтайский край, Барнаул

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

Сообщение max50 »

Тут и тут смотрели?
Того, кто не задумывается о далеких трудностях, ожидают близкие неприятности.
Аватара пользователя
Адвансед
Встал на лапы
Сообщения: 98
Зарегистрирован: Вс мар 11, 2012 23:06:08
Откуда: Казань

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

Сообщение Адвансед »

Точно, странно что раньше не заметил, хотя и просматривал страницу. Спасибо!

Подскажите, почему при компилировании ругается на Phonenumber= phonebook? ошибка 46
Мне нужно вывести номер телефона из книги на ЖК экран без мусора


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

$regfile = "m32def.dat"
$crystal = 14745600
$baud = 9600
$hwstack = 64
$swstack = 64
$framesize = 100

Config Lcdpin = Pin , Rs = Portb.3 , E = Portb.2 , Db4 = Portb.6 , Db5 = Portb.4 , Db6 = Portb.7 , Db7 = Portb.5
Config Lcd = 16 * 2
Cursor Off Noblink

Portc.0 = 1
Cls
Declare Sub Getline(sk As String)                         
Declare Sub Flushbuf()                                     
Dim Infa As String * 20
Dim Sk As String * 100                                   
Dim Phonebook_1 As String * 12                           
Dim Phonebook_2 As String * 12                             

Dim Phonenumbereeprom As Eram String * 12
Dim Number As String * 12

'Phonenumber = "+79199999999"


Print "AT+CPBS?"
Waitms 500
Getline Sk 'Îòâåò +CPBS: "SM",1,110
Infa = Mid(sk , 13 , 1)
If Infa <> "0" Then
Gosub Phonebook
Phonenumber = Phonebook_1                                 <<<  - - РУГАЕТСЯ СЮДА
Locate 1 , 1
Lcd "HOMEP TE§EªOHA"
Locate 2 , 1
Lcd Phonebook_1
Waitms 999

Else
Locate 1 , 2
Lcd "HET TE§EªOHA "
Locate 2 , 4
Lcd "à§± CMC"
Waitms 999
End If
Infa = ""
Flushbuf


'Òåëåôîííàÿ êíèãà
Phonebook:
Print "AT+CPBR=1"
Getline Sk
Phonebook_1 = Sk
Phonebook_1 = Mid(phonebook_1 , 11 , 12)
Locate 1 , 1
Lcd Phonebook_1
Wait 2

Print "AT+CPBR=2"
Getline Sk
Phonebook_2 = Sk
Phonebook_2 = Mid(phonebook_2 , 11 , 12)
Locate 2 , 1
Lcd Phonebook_2
Wait 2

Flushbuf

Return
Аватара пользователя
Мурлокотам
Встал на лапы
Сообщения: 139
Зарегистрирован: Вт ноя 06, 2012 12:37:08
Откуда: СПб

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

Сообщение Мурлокотам »

У вас переменная "Phonenumber" не объявлена.
Лом - это сложное техническое устройство.
Аватара пользователя
Адвансед
Встал на лапы
Сообщения: 98
Зарегистрирован: Вс мар 11, 2012 23:06:08
Откуда: Казань

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

Сообщение Адвансед »

Да, еще вчера исправил, спасибо! Но ругается теперь на другое... скрин прилагаю
Вложения
Безимени-2.jpg
(132.76 КБ) 583 скачивания
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

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

Сообщение Аlex »

https://translate.google.ru/#en/ru/label%20not%20found
Неужели это так сложно :facepalm:
Аватара пользователя
xorkrus
Нашел транзистор. Понюхал.
Сообщения: 151
Зарегистрирован: Сб ноя 19, 2011 20:13:47
Откуда: Тамбов
Контактная информация:

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

Сообщение xorkrus »

Здравствуйте. Мне как-то в чужом ассемблере разобраться в разы лучше получается разобраться, нежели в баскоме, но есть код для баскома:
Спойлер

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

$regfile = "attiny13.dat"                                   '
$crystal = 9600000

$hwstack = 0
$swstack = 0
$framesize = 0

$lib "bcd.lbx"
$external Bin2bcd16
Declare Function Bin2bcd16(binval As Word) As Word

Config Pinb.2 = Output : Pinb.2 = 0
Config Pinb.1 = Output : Pinb.1 = 0
Config Pinb.0 = Output : Pinb.0 = 0

Dat Alias Portb.2                                           'linia danych
Clk Alias Portb.1                                           'linia zegarowa
Ce Alias Portb.0                                            'zezwolenie transmisji


Dim V As Long
Dim Petla As Byte , Dane(16) As Byte
V = 0
Do
Gosub Gendata : Gosub Outputdata
Incr V
Waitms 500
Loop : End

Gendata:

Dane(1) = V And &B0000000000001111
Dane(2) = V And &B0000000000001111
Dane(3) = V And &B0000000000001111
Dane(4) = V And &B0000000000001111
Dane(5) = V And &B0000000000001111
Dane(6) = V And &B0000000000001111
Dane(7) = V And &B0000000000001111
Dane(8) = V And &B0000000000001111
Dane(9) = V And &B0000000000001111
Dane(10) = V And &B0000000000001111
Dane(11) = V And &B0000000000001111
Dane(12) = V And &B0000000000001111
Dane(13) = V And &B0000000000001111
Dane(14) = V And &B0000000000001111
Dane(15) = V And &B0000000000001111
Dane(16) = V And &B0000000000001111
Return

Outputdata:
Set Ce                                                 
For Petla = 6 To 121                           
Dat = Dane(1).petla                           
Set Clk : Reset Clk                             
If Petla = 61 Then Reset Ce : Set Ce
Next
Reset Ce                                           
Return

Дисплей реагирует. Зажигает всякую разную чушь (16 вариантов всего. Не знаю почему). Интересует как сделать так, чтобы те самые 112 битов увеличивались на единичку и выводились, дабы сопоставить данные дата=сегмент.
Ну или просто как сааааамым простым и тупым способом вывести 112 битов. Уж сделать цикл в баскоме думаю осилю...

Даташит на LC7582
Оригинал кода здесь
Премного благодарен за наставление буду я.
С Уважением.
Демократии нет и не будет!
Государство - это я!
Аватара пользователя
Microtech
Поставщик валерьянки для Кота
Сообщения: 2052
Зарегистрирован: Вт ноя 03, 2009 21:02:38
Откуда: Москва
Контактная информация:

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

Сообщение Microtech »

Инкрементировать число с 112 битами, - это не простая задача. Нужно перебрать 2^112 вариантов. Даже очень быстрый процессор будет считать миллиарды лет. :facepalm: Проще устанавливать один выбранный бит этого массива и смотреть что получится на дисплее.

x=номер бита
Outputdata:
Set Ce
For Petla = 0 To 121
if petla=x then : Dat =1 : else : dat=0 : endif
Set Clk : Reset Clk
If Petla = 61 Then: Reset Ce : Set Ce : endif
Next petla
Reset Ce
Return

не знаю специфику чипа, может там надо одновременно ставить 2 бита в верхних и нижних 62 битных половинках.
okean220
Родился
Сообщения: 13
Зарегистрирован: Вт янв 18, 2011 00:00:18

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

Сообщение okean220 »

нужна помощь в сохранении заданной температуры в терморегуляторе.пишу в баском авр. если не сюда дайте ссылку .заранее спасибо .плюс файл .
Вложения
mega8.rar
(14.89 КБ) 247 скачиваний
Аватара пользователя
fedyasolder
Поставщик валерьянки для Кота
Сообщения: 2168
Зарегистрирован: Ср май 01, 2013 13:53:56
Откуда: с пальмы в Рио-Инженейро

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

Сообщение fedyasolder »

При запуске программы:

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

dim b as byte
dim с as byte
dim temp_a as single
Readeeprom b , 1' целая часть
Readeeprom c , 2' десятые
a = с / 10'десятые
a = a + b'прибавляем целую часть


При изменении температуры настройками:

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

b = int (a)'берём целую часть Т
temp_a = a'закидываем Т во вспомогат переменную
temp_a = temp_a - b'находим десятые
temp_a = temp_a * 10'представляем десятые как целое число
с = temp_a'перекидываем в байтовую переменную

Writeeeprom b, 1 'сохраняем целую часть
Writeeeprom c, 2 ' сохраняем десятые


Всё это написано в хелпе и в гугуле.
===
Считаю хорошим тоном перед сохранением чего-либо в eeprom прочитать сперва оттуда и сравнить. А писать только в случае отличия данных. Хотя и жирнее код.
электропримат паяю даже лёжа...
Злой
Первый раз сказал Мяу!
Сообщения: 23
Зарегистрирован: Чт мар 12, 2009 12:48:38
Откуда: Уфа

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

Сообщение Злой »

Добрый вечер.
Пытаюсь освоить МК, попутно что нибудь сделать самому. В общем делаю индикацию для USB-I2S конвертера на 595 сдвиговых регистрах. У него на выходе частота дискретизации и разрядность в двоичном коде. С индикацией разобрался, в Протеусе все работает, теперь хочу усыпить МК и будить только при смене кода (ну типа что бы не фонил на остальную схему, выдал код на регистры, защелкнул их и уснул). С "уснул" проблем нет, проблема с "разбудить при смене кода". Где можно посмотреть что нибудь похожее? Все что нашел, либо по внешнему прерыванию, либо по таймеру.
Novice user
Мудрый кот
Сообщения: 1704
Зарегистрирован: Вт янв 05, 2016 10:14:25
Откуда: поселок Мелеуз

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

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

необходимо подключить две RDA5807 к одной атмега8,но так,чтоб можно было управлять каждой по отдельности?
управляются по и2с,может можно в процессе исполнения программы изменять порты и2с вот так например
Config Sda = PortC.4
Config Scl = PortC.5
'передаем команды для первой RDA5807
................
Config Sda = PortC.3
Config Scl = PortC.5
'передаем команды для второй RDA5807
...
Config Sda = PortC.4
Config Scl = PortC.5
'снова передаем команды для первой RDA5807
Аватара пользователя
max50
Мучитель микросхем
Сообщения: 497
Зарегистрирован: Ср дек 10, 2008 21:24:28
Откуда: Алтайский край, Барнаул

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

Сообщение max50 »

Novice user писал(а):необходимо подключить две RDA5807 к одной атмега8

Тут посмотрите.
Того, кто не задумывается о далеких трудностях, ожидают близкие неприятности.
Ответить

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