Заголовок сообщения: Re: BASCOM AVR в вопросах и ответах
Добавлено: Пт янв 29, 2021 11:34:45
Открыл глаза
Карма: 4
Рейтинг сообщений: 29
Зарегистрирован: Пн июн 19, 2017 18:51:54 Сообщений: 68 Откуда: South Ural г. Челябинск
Рейтинг сообщения:0
Интересно, а Bascom подключали к Proteus как например здесь: Proteus и два с половиной hello world для UART и USB на микроконтроллере И, возможно ли таким способом по УАРТ и прошивать Arduino платы из Bascom? Какие то примеры из поставки Bascom есть с Proteus или какой нибудь архивчик с подборкой к Proteus проектов? Похоже модели AVR в Proteus до сих пор не поддерживают режим самопрограммирования.
_________________ @ „Многие вещи нам непонятны не потому, что наши понятия слабы; но потому, что сии вещи не входят в круг наших понятий.“ Козьма Петрович Прутков
Как принудительно очистить буфер RX? Каждые 100мс происходит прием пакетов сообщений, но, подозреваю, что из-за нечистоты буфера некоторые сообщения МК не успевает принимать.
Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.
Всем привет, собирал давно проект SIM800 на atmega 32 - он отлично работал и на разных МК, убирал код для работы с ЖКИ и запускал на меге 8 и 88.
а в от спустя год не могу эту же программу запустить на атмега 328р - почему то не корректно работает uart, сыпится мусор! перебрал все скорости и порты, все равно.. в чем дело может быть?
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
МК тактируется от кварца или от внутреннего генератора? Точность последнего не очень высока, и частота у разных МК может немного отличаться. UART - асинхронный интерфейс, поэтому частота тут важна. Лучше применять кварц, если используется UART. Есть даже специальные кварцы с частотами, кратными скорости передачи - 11,0592 МГц, например.
_________________ Этот пост оказался полезен? Не поленись, нажми слева!
Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
Фузы выставлял и через usb asp и через abt studio (avr isp mlii), на 8 или 16мгц, на 16 на внешний кварц в том числе.
После программирования платы после подачи питания сразу идёт вызов (выполняется одна из подпрограмм). Хотя этого быть не должно.
Ради интереса эту же программу залил на мегу32 (естественно поменяв порты) и установил частоту кварца отличающуюся от заданного, появляется такой же глюк, что и с мега328р.
То есть, причина явно кроется в настройках программы, не в фьюзах и не в кварце.... понять не могу вот ...
Привет КотаФеям. Что то залип с моментом: Есть переменная Temp_W типа "WORD" и две переменные Temp_BH и Temp_BL типа "BYTE". Произвожу коррекцию в двух переменных Temp_BH и Temp_BL и пытаюсь собрать в переменную Temp_W.
Взял исходник с другого форума уоторый умер в 18 году, там молчат.
Почему после получения команды Firstnumber в памяти номер телефона не сохраняется? хотя ответное смс о том что номер сохранен - приходит. Дело в том, что после команды Firstnumber на остальные команды не реагирует и в терминале вылазит Error,
делал проверку сохранения номера телефона в erpoom, например чтобы при отправке команды info выдавалась команда Print phonenumber - по такой команде в терминале номер телефона отсутвует.
не могу понять почему не сохраняется номер телефона в памяти.
При этом этот же проект с дисплеем от нокии 5110 работает, номер сохраняется. в исходнике ниже код связанный с индикацией убран
'подключение светодиода '============== 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 'достаем номер из энергонезависимой памяти микроконтроллера
'########################################################################### 'Основная программа '###########################################################################
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
'обработка команд из входящей смс '============ 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
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
_________________ "Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
_________________ "Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
_________________ "Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 32
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения