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

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

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

Сообщение Мурик »

Можно, но AVR может прошиваться только если код выполняется из области загрузчика.
KPG
Открыл глаза
Сообщения: 68
Зарегистрирован: Пн июн 19, 2017 18:51:54
Откуда: South Ural г. Челябинск

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

Сообщение KPG »

Интересно, а Bascom подключали к Proteus как например здесь:
Proteus и два с половиной hello world для UART и USB на микроконтроллере
И, возможно ли таким способом по УАРТ и прошивать Arduino платы из Bascom?
Какие то примеры из поставки Bascom есть с Proteus или какой нибудь архивчик с подборкой к Proteus проектов?
Похоже модели AVR в Proteus до сих пор не поддерживают режим самопрограммирования.


P.S. Другие статьи с упоминанием Proteus на Хабр

Статьи на Хабр находимые по слову Bascom
@ „Многие вещи нам непонятны не потому, что наши понятия слабы; но потому, что сии вещи не входят в круг наших понятий.“ Козьма Петрович Прутков
AlekseyV
Грызет канифоль
Сообщения: 291
Зарегистрирован: Ср май 26, 2010 20:40:47

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

Сообщение AlekseyV »

Как принудительно очистить буфер RX? Каждые 100мс происходит прием пакетов сообщений, но, подозреваю, что из-за нечистоты буфера некоторые сообщения МК не успевает принимать.
forter
Первый раз сказал Мяу!
Сообщения: 34
Зарегистрирован: Пт фев 18, 2011 16:09:15

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

Сообщение forter »

Например, с помощью такой процедуры:
Sub Flushbuf()
Waitms 10
Do
B = Inkey() 'читаем буфер
Loop Until B = 0
End Sub
Аватара пользователя
Адвансед
Встал на лапы
Сообщения: 98
Зарегистрирован: Вс мар 11, 2012 23:06:08
Откуда: Казань

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

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

Всем привет, собирал давно проект SIM800 на atmega 32 - он отлично работал и на разных МК, убирал код для работы с ЖКИ и запускал на меге 8 и 88.

а в от спустя год не могу эту же программу запустить на атмега 328р - почему то не корректно работает uart, сыпится мусор! перебрал все скорости и порты, все равно.. в чем дело может быть?

код взят отсюда http://avrproject.ru/index/gsm_sim900d_ ... m_avr/0-43, повторяюсь, этот код работает на меге 32, 8, 88. а на меге 328р отказывается, отваливается и барахлит именно передача данных.

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

$regfile = "m328pdef.dat"
$crystal = 8000000
$baud = 19200
$hwstack = 64
$swstack = 64
$framesize = 100


Declare Sub Getline(s As String)
Declare Sub Flushbuf()

Config Serialin = Buffered , Size = 128
Config 1wire = Portb.0                                      'сюда лепим 18b20

Enable Interrupts

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

исходник есть тут http://avrproject.ru/forum/13-26-13, повторюсь, рабочий
Аватара пользователя
*Trigger*
Друг Кота
Сообщения: 3059
Зарегистрирован: Пн май 11, 2009 14:15:00
Откуда: СПб

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

Сообщение *Trigger* »

МК тактируется от кварца или от внутреннего генератора? Точность последнего не очень высока, и частота у разных МК может немного отличаться. UART - асинхронный интерфейс, поэтому частота тут важна.
Лучше применять кварц, если используется UART. Есть даже специальные кварцы с частотами, кратными скорости передачи - 11,0592 МГц, например.
Этот пост оказался полезен? Не поленись, нажми Изображение слева!
:) :)) :)))
Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
Аватара пользователя
Адвансед
Встал на лапы
Сообщения: 98
Зарегистрирован: Вс мар 11, 2012 23:06:08
Откуда: Казань

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

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

Фузы выставлял и через usb asp и через abt studio (avr isp mlii), на 8 или 16мгц, на 16 на внешний кварц в том числе.

После программирования платы после подачи питания сразу идёт вызов (выполняется одна из подпрограмм). Хотя этого быть не должно.

Ради интереса эту же программу залил на мегу32 (естественно поменяв порты) и установил частоту кварца отличающуюся от заданного, появляется такой же глюк, что и с мега328р.

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

Добавлено after 4 minutes 38 seconds:
Вот тут http://bascomavr.3bb.ru/viewtopic.php?id=2053&p=3 описана в 74 посте и далее прохожая проблема, но решения не дали советы...


Тут подобный глюк обсуждается http://bascomavr.3bb.ru/viewtopic.php?id=1589

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

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

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

У Меги 168 и 328 нет фуза который отключает совместимость с типа с М103с? Как на меге 128
kuber
Открыл глаза
Сообщения: 58
Зарегистрирован: Пн янв 08, 2007 18:23:08

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

Сообщение kuber »

Привет КотаФеям.
Что то залип с моментом:
Есть переменная Temp_W типа "WORD" и две переменные Temp_BH и Temp_BL типа "BYTE".
Произвожу коррекцию в двух переменных Temp_BH и Temp_BL и пытаюсь собрать в переменную Temp_W.

Temp_W = Temp_W(High) = Temp_BH
Temp_W = Temp_W(Low) = Temp_BL

На выходе в переменной Temp_W либо 0 либо 1 при любых значения в переменных Temp_BH и Temp_BL.
Что не так?
Подскажите плз.
vanyap1
Электрический кот
Сообщения: 1048
Зарегистрирован: Пт июл 30, 2010 11:49:03
Откуда: Украина
Контактная информация:

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

Сообщение vanyap1 »

Хрень какая-то, это что, компилируется?


Dim Temp_W As Word
Dim Temp_BL As Byte At Temp_W + 0 Overlay
Dim Temp_BH As Byte At Temp_W + 1 Overlay

Объявите переменные так, и делайте с ими что хотите.
kuber
Открыл глаза
Сообщения: 58
Зарегистрирован: Пн янв 08, 2007 18:23:08

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

Сообщение kuber »

Да компилирую ,заливаю в avr, для теста вывожу PRINT Temp_W и результат 0,1

Добавлено after 58 minutes 32 seconds:
Большое Спасибо.
Определил переменные с Overlay.
Всё заработало как надо.
Аватара пользователя
Адвансед
Встал на лапы
Сообщения: 98
Зарегистрирован: Вс мар 11, 2012 23:06:08
Откуда: Казань

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

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

Взял исходник с другого форума уоторый умер в 18 году, там молчат.

Почему после получения команды Firstnumber в памяти номер телефона не сохраняется? хотя ответное смс о том что номер сохранен - приходит. Дело в том, что после команды Firstnumber на остальные команды не реагирует и в терминале вылазит Error,

делал проверку сохранения номера телефона в erpoom, например чтобы при отправке команды info выдавалась команда Print phonenumber - по такой команде в терминале номер телефона отсутвует.

не могу понять почему не сохраняется номер телефона в памяти.

При этом этот же проект с дисплеем от нокии 5110 работает, номер сохраняется. в исходнике ниже код связанный с индикацией убран

код
Спойлер$regfile = "m32def.dat"
$crystal = 16000000
$baud = 19200
$hwstack = 64
$swstack = 64
$framesize = 100


Declare Sub Getline(s As String)
Declare Sub Flushbuf()

Config Serialin = Buffered , Size = 60
Config 1wire = Portb.4 'сюда лепим 18b20


Enable Interrupts



'подключение светодиода
'==============
Config Portd.2 = Output
Led Alias Portd.2
Led = 0


' входы для контроля
'===================
Config Porta = Input
Batt Alias Pina.0 'вход для контроля питания



' выходы для удаленного управления
'===================
Config Portc = Output
Out1 Alias Portc.1


'--------------------------------------------------------------------------------------
Dim Number As String * 12 'номер телефона
Dim Temp As String * 5
Dim S As String * 50
Dim B As Byte
Dim R As Byte
Dim Z As String * 15
Dim Sms_num As String * 2 'порядковый номер смс
Dim Stmp As String * 1
Dim Sms As String * 120
Dim Otvet As String * 160 'сообщение, которое модуль будет отправлять
Dim Sk As String * 120
Dim F As Byte
'Dim Error As Byte 'переменная считающая попытки достучаться до модуля перед перезагрузкой ?????????????????????????????????
'Dim U As Byte 'счетчик пустых циклов, если переполнился то выход из цикла подпрограммы getline ?????????????????????????????????????/

Dim In1str As String * 1 ' As Byte


Dim Out1str As String * 1


Dim Pirsend As Bit 'переменная для разрешения отправки сообщения по срабатыванию датчика движения
Dim Pirsendstr As String * 3
Pirsend = 0 'разрещение отсыла сообщений

Dim T As Byte 'температура
Dim Sign As String * 5 'знак температуры
Dim Byte0 As Byte
Dim Byte1 As Byte
Dim T1 As Byte
Dim T2 As Byte
Dim Tstr As String * 4

Dim Battstr As String * 4



'--------------------------------------------------------------------------------------
'Const Phonenumber = "+xxxxxxxxxxxx" 'номер на который будут отправляться смс


Dim Phonenumbereeprom As Eram String * 12 'переменная с телефонным номером хозяина
Dim Phonenumber As String * 12
Phonenumber = Phonenumbereeprom 'достаем номер из энергонезависимой памяти микроконтроллера


'предварительные настройки
'********************************************************
Led = 1
Wait 5
Print "AT+CMGF=1" 'включаем текстовый формат сообщений
Waitms 500
Print "AT+CLIP=1" 'определение номера входящего вызова
Wait 2
''Print "AT+CMIC=0,10"
''Waitms 500
''Print "AT+CMIC=1,10"
''Waitms 500
Led = 0
Flushbuf



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


Do
Led = 1
Gosub 18b20 'температура с датчика
Gosub Readsms 'проверка буфера на наличие входящего сообщения
Gosub Readfirstsms 'читаем первую смс, если есть
Gosub Checksms 'выполняем подпрограмму с смс
Led = 0
Wait 5
Loop

End

'подпрограмма для разбора сообщения модуля
'=======================

Sub Getline(s As String)
S = ""
Do

B = Inkey() 'берем символ из буфера в формате ASCII
Select Case B
Case 0 'возвращает в случае пустого буфера
Case 13 'возврат каретки (Enter), заместо него можно поставить пробел
Case 10 : If S <> "" Then Exit Do 'конец строки, значит выходит из подпрограммы
Case Else : If B > 31 Then S = S + Chr(b) 'печатаемые символы начинаются с кода 32 по таблице ASCII, из них составляем строку
End Select

Loop
End Sub


'очистка буфера
'=======================

Sub Flushbuf()
Waitms 100
Do
B = Inkey() 'забираем все из буфера
Loop Until B = 0
End Sub




'Подпрограмма для чтения смс
'=======================
Readsms:

R = Ischarwaiting() 'проверка наличия сообщения в буфере
If R = 1 Then
Getline Sk 'уходим на подпрограмму и смотрим что пришло
Z = Left(sk , 4) 'вытаскиваем левые 4 символа

If Z = "+CMT" Then 'если +СМТ, значит пришло смс которое надо прочитать
Sms_num = Right(sk , 2) 'смотрим какая по счету смс
Stmp = Left(sms_num , 1) 'смотрим первый символ слева
If Stmp = "," Then
Sms_num = Right(sk , 1) 'если там "," значит берем первый символ справа. это и будет номером пришедшего смс
End If
Wait 1

Number = ""
Print "AT+CMGR=" ; 'команда на чтение смс
Print Sms_num 'отправляем номер смски которую надо прочитать
Waitms 10
Getline Sk
Waitms 10
Getline Sk
Number = Mid(sk , 22 , 13) 'достаем номер с которого пришла смска
Sms = Sk 'здесь первая строка ответа
Waitms 10
Getline Sk 'смотрим, что в этой смс
Sms = Sk
Sms = Left(sms , 14) 'берем только первые 14 символов из смс (по кол-ву знакомест в строке)

Do
Led = 0
Waitms 100
Led = 1
Waitms 50
Incr F
Loop Until F = 10 'десять раз мигнем сетодиодом
F = 0

Print "AT+CMGDA=" ; Chr(34) ; "DEL ALL" ; Chr(34) 'удаление смс

End If

Waitms 100
Flushbuf 'очищаем буфер

End If



Return


'обработка команд из входящей смс
'============
Checksms:



If Sms = "Call" Then 'если call, модуль позвонит нам
Gosub Atd
Sms = ""
End If



If Sms = "Number" Then 'если сообщение содержит данный текст
Phonenumber = Number 'номер с которого пришла смс используется как номер для отправки сообщений
Phonenumbereeprom = Phonenumber 'записываем номер в энергонезависимую память
Otvet = "Number: " + Number + " write in EEPROM"
Gosub Sendsms
Sms = ""
End If


If Sms = "?" Then 'если придет знак вопроса отправим в ответ полное состояние модуля
Otvet = "Temp: " + Sign + Tstr + "C" + Chr(10) + "Power: " + Battstr + Chr(10) + "Send SMS: " + Pirsendstr + Chr(10) + "Out " + Chr(62) + Chr(32) + Out1str + Out2str + Out3str + Out4str + Out5str + Out6str + Out7str + Chr(10) + "In " + Chr(60) + Chr(32) + In1str + In2str + In3str + In4str + In5str + In6str + In7str
Gosub Sendsms
Sms = ""
End If



Return



'подпрограмма отправки смс
'=======================
Sendsms:

Print "AT+CMGS=" ; Chr(34) ; Phonenumber ; Chr(34)
Waitms 200
Print Otvet ; Chr(26)

Print Chr(26);
Wait 1
Print Chr(13)

'мигнем светодиодом

Do
Led = 0
Waitms 100
Led = 1
Waitms 50
Incr F
Loop Until F = 10
F = 0

Return



'подпрограмма дозвона модуля по номеру
'================
Atd:

Print "ATD" ; Phonenumber ; ";"

Waitms 100

Flushbuf
Return






'принудительное чтение первой смс из памяти
'это необходимо если прошляпили приход смс, во время выполнения одной из подпрограмм
'==================
Readfirstsms:


Print "AT+CMGR=1" 'команда на чтение смс
Waitms 10
Getline Sk
Waitms 10
Getline Sk
Number = Mid(sk , 22 , 13) 'достаем номер с которого пришла смска
Sms = Sk 'здесь первая строка ответа
Sms = Left(sms , 4)

If Sms = "+CMG" Then

Waitms 10
Getline Sk 'смотрим, что в этой смс
Sms = Sk
Sms = Left(sms , 14) 'берем только первые 14 символов из смс (по кол-ву знакомест в строке)

Do
Led = 0
Waitms 100
Led = 1
Waitms 50
Incr F
Loop Until F = 10
F = 0


Print "AT+CMGDA=" ; Chr(34) ; "DEL ALL" ; Chr(34) 'удаление всех смс

End If
Waitms 100


Flushbuf

Return
Аватара пользователя
selco
Первый раз сказал Мяу!
Сообщения: 31
Зарегистрирован: Пн июл 25, 2011 14:24:34

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

Сообщение selco »

Люди добрые, помогите... Где скачать Bascom 2.0.7.8 с таблеткой.oled дисплей не компилирует 2.0.7.1.
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

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

Сообщение edm2007 »

Есть 2.0.8.3.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Аватара пользователя
selco
Первый раз сказал Мяу!
Сообщения: 31
Зарегистрирован: Пн июл 25, 2011 14:24:34

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

Сообщение selco »

Если поделитесь буду премного благодарен...!
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

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

Сообщение edm2007 »

Сразу в личку отправил. :tea:
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Аватара пользователя
selco
Первый раз сказал Мяу!
Сообщения: 31
Зарегистрирован: Пн июл 25, 2011 14:24:34

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

Сообщение selco »

Спасибо! :beer:
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

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

Сообщение Мурик »

selco писал(а):Где скачать Bascom 2.0.7.8
Если ввести в поисковик Bascom 2.0.7.8 скачать или Bascom 2.0.8.3 скачать, ничего не находит?
Аватара пользователя
Adagumer
Поставщик валерьянки для Кота
Сообщения: 2283
Зарегистрирован: Чт ноя 15, 2012 20:47:59
Откуда: Крымск

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

Сообщение Adagumer »

Мурик писал(а):ничего не находит?
Попробуйте так:
Вложения
BASS.zip
(13.91 КБ) 333 скачивания
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

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

Сообщение edm2007 »

Да отправил я уже давно инсталлер, ну. :tea:
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Ответить

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