Обсуждаем контроллеры компании Atmel.
Ответить

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

Чт янв 21, 2021 14:53:14

Можно, но AVR может прошиваться только если код выполняется из области загрузчика.

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

Пт янв 29, 2021 11:34:45

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


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

Статьи на Хабр находимые по слову Bascom

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

Вс янв 31, 2021 09:56:01

Как принудительно очистить буфер RX? Каждые 100мс происходит прием пакетов сообщений, но, подозреваю, что из-за нечистоты буфера некоторые сообщения МК не успевает принимать.

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

Вс янв 31, 2021 21:30:53

Например, с помощью такой процедуры:
Sub Flushbuf()
Waitms 10
Do
B = Inkey() 'читаем буфер
Loop Until B = 0
End Sub

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

Ср фев 17, 2021 19:05:10

Всем привет, собирал давно проект 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, повторюсь, рабочий

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

Ср фев 17, 2021 19:47:35

МК тактируется от кварца или от внутреннего генератора? Точность последнего не очень высока, и частота у разных МК может немного отличаться. UART - асинхронный интерфейс, поэтому частота тут важна.
Лучше применять кварц, если используется UART. Есть даже специальные кварцы с частотами, кратными скорости передачи - 11,0592 МГц, например.

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

Ср фев 17, 2021 20:46:24

Фузы выставлял и через 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р

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

Чт фев 18, 2021 11:53:54

У Меги 168 и 328 нет фуза который отключает совместимость с типа с М103с? Как на меге 128

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

Чт фев 25, 2021 13:47:04

Привет КотаФеям.
Что то залип с моментом:
Есть переменная 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.
Что не так?
Подскажите плз.

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

Чт фев 25, 2021 15:46:04

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


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

Объявите переменные так, и делайте с ими что хотите.

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

Чт фев 25, 2021 17:07:15

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

Добавлено after 58 minutes 32 seconds:
Большое Спасибо.
Определил переменные с Overlay.
Всё заработало как надо.

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

Ср мар 10, 2021 14:20:53

Взял исходник с другого форума уоторый умер в 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

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

Ср апр 28, 2021 11:06:46

Люди добрые, помогите... Где скачать Bascom 2.0.7.8 с таблеткой.oled дисплей не компилирует 2.0.7.1.

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

Ср апр 28, 2021 11:14:07

Есть 2.0.8.3.

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

Ср апр 28, 2021 23:41:30

Если поделитесь буду премного благодарен...!

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

Чт апр 29, 2021 06:23:29

Сразу в личку отправил. :tea:

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

Чт апр 29, 2021 16:06:22

Спасибо! :beer:

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

Сб май 01, 2021 17:04:42

selco писал(а):Где скачать Bascom 2.0.7.8
Если ввести в поисковик Bascom 2.0.7.8 скачать или Bascom 2.0.8.3 скачать, ничего не находит?

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

Сб май 01, 2021 18:54:48

Мурик писал(а):ничего не находит?

Попробуйте так:
Вложения
BASS.zip
(13.91 KiB) Скачиваний: 272

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

Сб май 01, 2021 19:04:47

Да отправил я уже давно инсталлер, ну. :tea:
Ответить