Например TDA7294

 Форум РадиоКот • Просмотр темы - BASCOM AVR в вопросах и ответах
Форум РадиоКот
Здесь можно немножко помяукать :)



Текущее время: Ср июл 18, 2018 11:51:21



Часовой пояс: UTC + 3 часа [ Летнее время ]


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 5690 ]  На страницу Пред.  1 ... 280, 281, 282, 283, 284, 285  След.
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: BASCOM AVR в вопросах и ответах
СообщениеДобавлено: Вс апр 01, 2018 23:01:53 
Встал на лапы
Аватар пользователя

Зарегистрирован: Пн июн 07, 2010 17:16:57
Сообщений: 148
Рейтинг сообщения: 0
kip96 писал(а):
Может это и есть ответ?
Даже не знаю.......
Ну я для себя решил, что декодер dtmf быстрее, дешевле, и.... уже давно работает ( и мк свободен. для других задач)

Как свободен? Физически 4 порта заняты + обвязка нужна, про обработку молчу. В то время как все это дело можно сделать по uart.

Я не смотрю в сторону дудки, благо скетчей для любых задач полно. Хочу сделать на родном барсике.
Модули sim80Х/900 имеют вшитые dtmf recognition и будет совсем не солидно использовать dtmf-декодер для извлечения кодов dtmf из линейного выхода. Ну правда, не серьезно получается.
Вот, имеется dtmfout, почему ж dtmfin (а оно, наверно, так называлось бы) нет :kill:
Может в новых релизах будет :?


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: BASCOM AVR в вопросах и ответах
СообщениеДобавлено: Пн апр 02, 2018 08:51:20 
Встал на лапы

Зарегистрирован: Вс дек 28, 2014 22:54:05
Сообщений: 135
Рейтинг сообщения: 0
По моему, AT+DDET выдаст ASCII код принятого DTMF, но, не уверен, не пробовал. Или я вовсе не понял суть задачи.

_________________
Я всё-всё узнAю и стану профессором.


Вернуться наверх
 Профиль  
 
JLCPCB, 10 прототипов ПП всего за $2 и 2 дня доставка!

Крупнейший производитель печатных плат в Китае, 300,000+ заказчиков, 10,000+ он-лайн заказов в день.

Рассчитайте цену онлайн:https://jlcpcb.com/quote

Не в сети
 Заголовок сообщения: Re: BASCOM AVR в вопросах и ответах
СообщениеДобавлено: Пн апр 02, 2018 11:12:42 
Опытный кот
Аватар пользователя

Карма: 10
Зарегистрирован: Ср авг 26, 2009 09:24:50
Сообщений: 738
Откуда: 1300км от Пупа
Рейтинг сообщения: 0
Расшифровать dtmf код на порядок сложней, чем сгенерить. Если есть коды на других языках, так можно и от туда содрать, в чём проблема?. Но я таких не встречал, хотя особо и не искал. Обвязка - это да, устанешь паять!(сарказм). Про код вообще молчу, пару строчек проверки порта.
DTMF декодер, кстати, имеет выход с открытым коллектором, так что их можно использовать ещё куда нибудь. Я, например, параллельно подключил пульт на 443, с декодером. Так у меня работают ворота в гараже, и с пульта, и с телефона.
Насчёт серьёзности - так для себя давно решил, что время моё дороже, чем какая-то микросхема. Поставил и забыл.
В одном камне держать кучу кодов - не моё. Потом разбирайся , что где и как. К примеру говорилку себе сделал отдельно.
Работает сама по себе, а процессор даёт команды. Хотя мощности позволяют сделать всё в одном камне.

_________________
Все делают ошибки, только мудрецы - новые, а дураки - старые.


Вернуться наверх
 Профиль WWW  
 
Не в сети
 Заголовок сообщения: Re: BASCOM AVR в вопросах и ответах
СообщениеДобавлено: Пн апр 02, 2018 15:50:12 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 18
Зарегистрирован: Вт ноя 03, 2009 22:02:38
Сообщений: 1948
Откуда: Москва
Рейтинг сообщения: 0
Может есть у кого опыт или задайте направление, где копать.

Нужно освоить Фурье преобразование. Готовых примеров на бейсике не будет, есть только общие описания алгоритма. При свободном времени буду разбираться. Проекты с грандиозной аналоговой обвеской и фазосдвигающими цепочками мне не интересны. :sleep:


Вернуться наверх
 Профиль  
 

Не в сети
 Заголовок сообщения: Re: BASCOM AVR в вопросах и ответах
СообщениеДобавлено: Пн апр 02, 2018 18:23:02 
Опытный кот
Аватар пользователя

Карма: 10
Зарегистрирован: Ср авг 26, 2009 09:24:50
Сообщений: 738
Откуда: 1300км от Пупа
Рейтинг сообщения: 0
https://static.chipdip.ru/lib/233/DOC000233963.pdf
Ага, нате вот испугайтесь! :))
Прям аж интересно, как надумаете, выложите, пожалуйста, схему и прошивку (можно без исходника), что б работала. Я имею ввиду, в живую, телефон подключил к мк и заработало. А я посчитаю, где обвеса больше будет! :cry:

_________________
Все делают ошибки, только мудрецы - новые, а дураки - старые.


Вернуться наверх
 Профиль WWW  
 

Не в сети
 Заголовок сообщения: Re: BASCOM AVR в вопросах и ответах
СообщениеДобавлено: Вт апр 03, 2018 16:27:37 
Сверлит текстолит когтями
Аватар пользователя

Карма: 11
Зарегистрирован: Пн июн 18, 2007 22:51:20
Сообщений: 1109
Откуда: Брянская обл, Россия
Рейтинг сообщения: 0
Мрр.. Приветствую, коты :)
Скажите, пожалуйста: как декодировать dtmf сигналы? (вариант с внешним декодером не предлагать)
Весь интернет перелопатил - ничего не нашел :kill:
Хочу GSM модуль к тини2313 по UART прикрутить и управлять нагрузкой удаленно. С обработкой СМС разобрался, а вот про распознавание DTMF в барсике нет никакой инфы.
Может есть у кого опыт или задайте направление, где копать.
Буду признателен :)

в модуле sim900d есть встроенный декодер.
если надо такая прошивка для данного модуля - пишите. Выпускается несколько лет, работает без сбоев.


Вернуться наверх
 Профиль WWW  
 
Не в сети
 Заголовок сообщения: Re: BASCOM AVR в вопросах и ответах
СообщениеДобавлено: Вт апр 03, 2018 16:41:15 
Встал на лапы
Аватар пользователя

Зарегистрирован: Пн июн 07, 2010 17:16:57
Сообщений: 148
Рейтинг сообщения: 0
aleksandr-zh писал(а):
в модуле sim900d есть встроенный декодер.
если надо такая прошивка для данного модуля - пишите. Выпускается несколько лет, работает без сбоев.

Приветствую! :)
Да. Я в курсе и он пашет очень хорошо! Он же есть и на сим800. Главная проблема на сейчас - прикрутить обработку dtmf к барсику без сторонних декодеров и обвязок.
На текущий момент только 1 вариант пришел в голову - разделить функционал (программно и аппаратно) на 2 части:
1) обрабатывать дтмф и смс на дудке (код Arduino IDE);
2) все остальное на барсике + дописать общение между первым и вторым частями через uart или подергиванием ног.
Можно, конечно, все написать в Arduino IDE, - но переписывать весь проект и вспоминать вникать в синтаксис Arduino IDE (начинал с компилятора C) не очень хочется.


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: BASCOM AVR в вопросах и ответах
СообщениеДобавлено: Вт апр 03, 2018 17:14:39 
Сверлит текстолит когтями
Аватар пользователя

Карма: 11
Зарегистрирован: Пн июн 18, 2007 22:51:20
Сообщений: 1109
Откуда: Брянская обл, Россия
Рейтинг сообщения: 2
вы меня не поняли
получив DTMF модуль выдаёт в порт данные о коде. Символом.
я всё пишу на Баском, никаких костылей не использую.

Код:
  '        +DTMF:*      +DTMF:#     +DTMF:1      +DTMF:0
   If Tstr$ = "+DTMF" Then
      Tstr$ = Mid(sms$ , 7 , 1)                             ' Выделим символ, переданный сигналом DTMF

      Komanda$ = Komanda$ + Tstr$
      If Len(komanda$) > 2 Then                             ' Если длина большая, то явно ошибка
         Komanda$ = ""                                      '  - не то нажали, обнуляем
      End If


      If Komanda$ = "1" Then                                ' меняем Чувствительность микрофона, режим 1
         Print "AT+CMIC=0,2"                                ' минимальная
         Goto Nam_pozvonili_konec
      End If


Вернуться наверх
 Профиль WWW  
 
Не в сети
 Заголовок сообщения: Re: BASCOM AVR в вопросах и ответах
СообщениеДобавлено: Вт апр 03, 2018 20:24:42 
Встал на лапы
Аватар пользователя

Зарегистрирован: Пн июн 07, 2010 17:16:57
Сообщений: 148
Рейтинг сообщения: 0
aleksandr-zh писал(а):
вы меня не поняли
получив DTMF модуль выдаёт в порт данные о коде. Символом.
я всё пишу на Баском, никаких костылей не использую.

О! Значит все-таки это возможно :) Буду признателен, если выложите весь код целиком. Хотел бы поковырять. Кстати, эти модули поддерживают воспроизведение amr файлов в сторону абонента и/или локально. Буду использовать в голосовом меню. Уже проверил, все отлично пашет!
Вот: AT+CPAMR=<fileName>,<audioLocationStatus> н., воспроизвести файл 001 из памяти модуля будет выглядеть так: AT+CPAMR="001.amr", Х
или так так: AT+CREC=4,"C:\User\9.amr",Х,95
Х принимает значение 0 – воспроизведение происходит в линию + локально; 1 – воспроизведение происходит только локально. а 95 - это уровень громкости.


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: BASCOM AVR в вопросах и ответах
СообщениеДобавлено: Вт апр 03, 2018 21:04:09 
Сверлит текстолит когтями
Аватар пользователя

Карма: 11
Зарегистрирован: Пн июн 18, 2007 22:51:20
Сообщений: 1109
Откуда: Брянская обл, Россия
Рейтинг сообщения: 3
код полностью не выложу, но дам базовое:

прошивка GSM модуля 900d: 1137B03SIM900D64_ST_ENHANCE

Код:
Dim Simvol$ As String * 1 , Tstr$ As String * 19
Dim Number$ As String * 19
Dim Otvet$ As String * 162                                  'сообщение, которое модуль будет отправлять
Dim Sms$ As String * 162                                    ' Входящее SMS сообщение
Dim Komanda$ As String * 6

Config Serialin = Buffered , Size = 161                     ' Буфер для принятых по UART символов
Enable Interrupts                                           ' Чтобы буфер работал!


'_______
Do
   Toggle Led
   Reset Watchdog

   ' ---  Опрос модема ---
   Gosub Getline                                            ' смотрим что пришло от модема в буфер  - Sms$
   If Sms$ <> "" Then                                       ' получили какое-то сообщение
      Led = 1
      Print #1 , Sms$
      Tstr$ = Left(sms$ , 4)                                ' выделим первые 4 символов
      Print #1 , Tstr$

      If Tstr$ = "+CMT" Then                                ' Нам SMS
         Print #1 , "Получено SMS: " ; Sms$                 ' +CMT: "+79129871234","Boss1","14/03/31,12:43:29+16"
         Sms$ = Mid(sms$ , 8 , 19)                          ' достаем номер отправителя SMS
         Gosub Vydelim_nomer_iz_stroki                      ' Выделение # из строки в ковычках и с "+" вначале в переменную Number$
         Print #1 , "Отправитель: " ; Number$
         If Number$ = Phone_boss$ Or Number$ = Phone_user$ Then       ' если номер из достоверных
            Gosub Opros_sms                                 ' Расшифруем полученное  и выполним, если достоверно
            Gosub Delete_sms                                ' Удалим СМС
            Gosub Flushbuf                                  'очистка буфера. Внутри есть waitms 100
         End If                                             ' если номер звонящего = Владелец устройства
      End If                                                '   If Tstr$ = "+CMT: "

      If Tstr$ = "+CLI" Then                                ' Нам звонят
         Reset Watchdog
         Print #1 , "Нам позвонили " ; Sms$                 '  нам звонят   Входящий звонок   +CLIP: "+79308284748",145,"",,"",0
         Sms$ = Mid(sms$ , 9 , 19)                          ' достаем номер отправителя SMS
         Gosub Vydelim_nomer_iz_stroki                      ' Выделение # из строки в ковычках и с "+" вначале в переменную Number$
         Print #1 , "Звонит " ; Number$
         Temp_w = 0 : Temp = 0 : Sms$ = "" : Komanda$ = ""
         If Number$ = Phone_boss$ Then Gosub Nam_pozvonili  ' если номер = Владелец устройства
         Gosub Flushbuf                                     'очистка буфера. Внутри есть waitms 100
      End If                                                '   If Tstr$ = "+CLI" Then

      Led = 0
   End If                                                   ' получили какое-то сообщение


   Waitms 50
Loop


'======================================================================
Nam_pozvonili:                                              ' Обработка Входящего голосового вызова ----

   Incr Temp_w                                              ' Считаем время сеанса связи
   If Temp_w > 1150 Then                                    ' Превышен лимит времени - 2 минуты
      Print #1 , "Превышен лимит времени!"
      Temp2 = 0                                             ' время вышло
      Goto Nam_pozvonili_end
   End If


   If Sms$ = "RING" Then                                    ' Звонят
      Incr Temp                                             ' считаем кол-в гудков
      'If Temp = 1 Then                            ' Сколько гудков не ложили трубку
      Print "ATA"                                           ' ответить на звонок
      Gosub Waitms_750                                      ' Пауза обязательна!!!
      Print #1 , "Связь установлена"
      Print "AT+VTS=" ; Chr(34) ; "C" ; Chr(34)             '  звуковой сигнал звонящему в линию
      Gosub Waitms_750                                      ' Пауза обязательна!!!
      'End If                                      '  If Temp = 1
   End If                                                   ' If Sms$ = "RING"


   If Sms$ = "NO CARRIER" Or Sms$ = "NO DIALTONE" Then      ' положили трубку / пропала связь - разорвать
      Print #1 , "Закончили вызов"
      Nam_pozvonili_end:
         Print "ATH0"                                       '  положить трубку
      Return                                                ' выходим
   End If                                                   '   If Sms$ = "NO CARRIER"


   Tstr$ = Left(sms$ , 5)                                   '        +DTMF:*      +DTMF:#     +DTMF:1      +DTMF:0
   If Tstr$ = "+DTMF" Then
      Tstr$ = Mid(sms$ , 7 , 1)                             ' Выделим символ, переданный сигналом DTMF

      Komanda$ = Komanda$ + Tstr$
      If Len(komanda$) > 2 Then                             ' Если длина большая, то явно ошибка
         Komanda$ = ""                                      '  - не то нажали, обнуляем
      End If

      Print #1 , "$=" ; Komanda$
      Peredal_net220 = 255                                  ' Сброс переменной


      If Komanda$ = "**" Then                               ' Сброс флагов тревоги
         Peredal_net220 = 0
         Goto Nam_pozvonili_konec
      End If

      If Komanda$ = "##" Then                               ' Полный перезапуск устройства!!
         Print "AT+VTS=" ; Chr(34) ; "*" ; Chr(34)          ' зв.сигнал звонящему
         Gosub Waitms_750
         Print "ATH0"                                       '  положить трубку
         Goto Reset_device                                  ' Полный перезапуск устройства!!
         Goto Nam_pozvonili_konec
      End If


      If Komanda$ = "1" Then                                ' меняем Чувствительность микрофона, режим 1
         Print "AT+CMIC=0,2"                                ' минимальная
         Goto Nam_pozvonili_konec
      End If
      If Komanda$ = "2" Then                                ' меняем Чувствительность микрофона, режим 2
         Print "AT+CMIC=0,4"
         Goto Nam_pozvonili_konec
      End If
      If Komanda$ = "3" Then                                ' меняем Чувствительность микрофона, режим 3
         Print "AT+CMIC=0,7"
         Goto Nam_pozvonili_konec
      End If



      If Komanda$ = "*1" Then
         Rele1 = 1                                          ' Включить реле 1
         Goto Nam_pozvonili_konec
      End If
      If Komanda$ = "#1" Then
         Rele1 = 0                                          ' Отключить реле 1
         Goto Nam_pozvonili_konec
      End If


   End If                                                   '   If Tstr$ = "+DTMF:"


   Gosub Getline                                            ' смотрим что пришло от модема в буфер


   Goto Nam_pozvonili

Nam_pozvonili_konec:
   Gosub Waitms_100
   Print "AT+VTS=" ; Chr(34) ; "C" ; Chr(34)                '  звуковой сигнал звонящему в линию
   'Gosub Flushbuf                                 'очистка буфера. Внутри есть waitms 100
   Gosub Waitms_100
   Komanda$ = ""                                            ' обязательно вычистить переменную
   Sms$ = ""                                                ' обязательно вычистить переменную
   Temp_w = 0                                               ' Сбросим счетчик - Увеличим время до отключения связи
   Goto Nam_pozvonili




'======================================================================
Flushbuf:                                                   ' очистка буфера
   Gosub Waitms_100
   Do
      B = Inkey()                                           'забираем все из буфера
   Loop Until B = 0
Return



'======================================================================
Getline:                                                    ' подпрограмма для разбора сообщения модуля
   Sms$ = ""
   Gosub Waitms_100
   Do
      B = Inkey()                                           ' берем символ из буфера в формате ASCII
      Select Case B
         Case 0 : Exit Do                                   ' если в буфере нет символа - выход!
         Case 13                                            ' возврат каретки (Enter)                  'возврат каретки (Enter)
         Case 10 : If Sms$ <> "" Then Exit Do               'конец строки,  выходит из подпрограммы
         Case Else : If B > 31 Then Sms$ = Sms$ + Chr(b)    ' составляем строку
      End Select
   Loop
Return


'##############################################################################################
Init_modem:                                                 ' Инициализация модема,  чтение номеров с SIM карты
   Print #1 , "Запуск модема..."

   Pwkey_gsm = 1                                            ' питание модема
   For Temp = 0 To 29                                       ' 1.5 сек
      Toggle Led
      Gosub Waitms_50
      Reset Watchdog
   Next
   Pwkey_gsm = 0                                            ' питание модема


   For Temp = 0 To 139                                      ' ждем 14 сек пока модем зарегистрируется....
      Toggle Led                                            ' Св.диод
      Gosub Waitms_100
      Reset Watchdog
   Next

   Print "AT" : Gosub Waitms_100
   Print "AT" : Gosub Waitms_100

   Print "ATE0"

   '   Gosub Flushbuf                  'очистка буфера. Внутри есть waitms 100
   '   Print "AT+GSV" : Gosub Waitms_750              ' Запрос модели и версии прошивки    Выдаёт 3 строки
   '   Gosub Getline : Print #1 , Sms$                ' ответ модема SIMCOM_Ltd
   '   Gosub Getline : Print #1 , Sms$                ' ответ модема SIMCOM_SIM900D
   '   Gosub Getline : Print #1 , Sms$                ' ответ модема Revision: 1137B03SIM900D64_ST_ENHANCE
   '   Gosub Getline : Print #1 , Sms$                ' ответ модема   ok

   Counter_c = 40                                           ' 30 секунд ожидания регистрации

   Do
      Decr Counter_c
      If Counter_c = 0 Then Goto Init_modem                 ' Перезапуск модема
      Toggle Led
      Reset Watchdog
      Gosub Flushbuf                                        'очистка буфера. Внутри есть waitms 100
      Print "AT+COPS?" : Gosub Waitms_750                   ' выдаст имя оператора связи
      Gosub Getline                                         ' : Print #1 , Sms$ ; ".";      ' ответ модема
   Loop Until Len(sms$) > 15                                ' ждём когда модуль даст имя оператора, а не пустоту

   Led = 1                                                  ' GSM-модем ответил

   Gosub Delete_sms                                         ' Удалим СМС
   Reset Watchdog

   Print "AT+CMGF=1" : Gosub Waitms_100                     ' включить текстовый режим SMS
   Print "AT+CSCS=" ; Chr(34) ; "GSM" ; Chr(34) : Gosub Waitms_100       ' Кодировка текста GSM (только латинские)

   Print "AT+GSMBUSY=0" : Gosub Waitms_100                  ' 0 = разрешить входящие
   Print "AT+CLIP=1" : Gosub Waitms_100                     ' включить АОН
   Print "AT+DDET=1" : Gosub Waitms_100                     ' Включить детектор DTMF

   Print "AT+CPBS=" ; Chr(34) ; "SM" ; Chr(34) : Gosub Waitms_100       ' Выбрать Как Основную Память Сим -карту

   Print "AT+CNMI=1,2,2,1,0" : Gosub Waitms_100             ' Включаем оповещение о новых SMS
   '+CMT: "<номер телефона>", "", "<дата, время>", а на следующей строчке - текст сообщения
   ' +CMT: "+79129871234","Boss-1","14/03/31,12:43:29+16"
   '123456

   Reset Watchdog
   Gosub Flushbuf                                           'очистка буфера. Внутри есть waitms 100

   Print "AT+CPBS?" : Gosub Waitms_100
   ' сообщит тип памяти, количество имеющихся записей и их максимальное количество.
   ' Например:  +Cpbs : «sm»,5,250  Значит , Что на SIM -карте есть 5 записей из 250 возможных.

   Gosub Getline
   'Print #1 , Sms$                                ' Читаем строку с данными

   Sms$ = Mid(sms$ , 13 , 1)
   'Print #1 , Sms$

   Temp = Val(sms$)                                         ' количество записей в SIM

   If Temp < 3 Then                                         ' Мало записей! Обязано быть 3: Номер босса, Номер пользователя и баланс
      Do                                                    ' Зависаем, так как нельзя работать
         For Temp = 20 To 0 Step -1                         ' для индикации режима изменим яркость св. диода
            Led = 1 : Waitms Temp : Led = 0 : Reset Watchdog
            Temp2 = 20 - Temp : Waitms Temp2
         Next
         Waitms 30
         For Temp = 0 To 20
            Led = 1 : Waitms Temp : Led = 0 : Reset Watchdog
            Temp2 = 20 - Temp : Waitms Temp2
         Next Temp
         Waitms 50
      Loop
   End If



   For Counter_c = 1 To 3                                   ' читаем записи из телефонной книги SIM карты
      Reset Watchdog
      Gosub Flushbuf                                        'очистка буфера. Внутри есть waitms 100

      Print "AT+CPBR=" ; Str(counter_c) : Gosub Waitms_500  ' Считывает запись SIM  #X
      Gosub Getline                                         ': Print #1 , Sms$             ' Читаем строку с данными +CPBR: 1,"+79208381234",145,"0A1234F51F98"
      Otvet$ = Sms$                                         ' Сохраним

      Sms$ = Mid(sms$ , 11 , 19 )
      Gosub Vydelim_nomer_iz_stroki                         ' Выделение # из строки в ковычках и с "+" вначале в переменную Number$

      If Counter_c = 1 Then
         Phone_boss$ = Number$
         Print #1 , "Boss: " ; Phone_boss$                  '  Номер владельца устройства
      End If

      If Counter_c = 2 Then
         Phone_user$ = Number$
         Print #1 , "User: " ; Phone_user$                  '  Номер пользователя устройства
      End If

      If Counter_c = 3 Then
         Balans$ = Number$
         Print #1 , "Blns " ; Balans$                       '  Номер для запроса баланса
      End If


   Next

   Print #1 , "Инициализацию завершил!"
   Gosub Flushbuf                                           'очистка буфера. Внутри есть waitms 100
Return



   '======================================================================
Gsm_modem_off:
   Led = 1
   Gosub Flushbuf                                           'очистка буфера. Внутри есть waitms 100
   Print "AT+CPOWD=1"                                       ' Отключим GSM-модем
   Gosub Wait_5sec                                          ' модем долго засыпает, ждём
   Gosub Getline                                            ' смотрим что пришло от модема в буфер  - Sms$
   Print #1 , Sms$                                          ' GSM-модем должен ответить "нормальное отключение"
   If Sms$ = "" Then                                        ' Если не ответил, то
      Print #1 , "Придётся аппаратно отключать модем"
      Pwkey_gsm = 1                                         ' не менее 1.5 сек для управления питанием !!!
      Waitms 1700
      Pwkey_gsm = 0
   End If
   Led = 0
Return




Вернуться наверх
 Профиль WWW  
 
Не в сети
 Заголовок сообщения: Re: BASCOM AVR в вопросах и ответах
СообщениеДобавлено: Ср апр 04, 2018 12:30:29 
Встал на лапы
Аватар пользователя

Зарегистрирован: Пн июн 07, 2010 17:16:57
Сообщений: 148
Рейтинг сообщения: 0
aleksandr-zh писал(а):
код полностью не выложу, но дам базовое:

То что доктор прописал! Огромнейшее вам спасибо! :beer:
Пробежался глазами - вопросов пока нет, благо каждая строка закомментирована. Дома займусь вплотную и если что, я к вам за помощью и разъяснениями :)
Спасибо еще раз!


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: BASCOM AVR в вопросах и ответах
СообщениеДобавлено: Ср апр 04, 2018 12:32:29 
Сверлит текстолит когтями
Аватар пользователя

Карма: 11
Зарегистрирован: Пн июн 18, 2007 22:51:20
Сообщений: 1109
Откуда: Брянская обл, Россия
Рейтинг сообщения: 0
да пожалуйста :)
Вы в какой версии работаете? (у меня лицензия: подарили за перевод оболочки).
Хочу книжку дописать по Баском и основам электроники и выложить её тут, на форуме


Вернуться наверх
 Профиль WWW  
 
Не в сети
 Заголовок сообщения: Re: BASCOM AVR в вопросах и ответах
СообщениеДобавлено: Ср апр 04, 2018 12:39:32 
Встал на лапы
Аватар пользователя

Зарегистрирован: Пн июн 07, 2010 17:16:57
Сообщений: 148
Рейтинг сообщения: 0
aleksandr-zh",url="/forum/viewtopic.php?p=3346127#p3346127 писал(а):
да пожалуйста :)
Вы в какой версии работаете? (у меня лицензия: подарили за перевод оболочки).
Хочу книжку дописать по Баском и основам электроники и выложить её тут, на форуме

Версия 2.0.7.8 ; сборка 2.0.7.8.004 ; версия ide 2.0.7.8.003.
За выделенное отдельное спасибо! Я думаю коты и котики заценят ваш труд по достоинству. Мрр...
Буду ждать релиз.
Будем! :beer:


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: BASCOM AVR в вопросах и ответах
СообщениеДобавлено: Сб апр 07, 2018 05:54:01 
Вымогатель припоя

Карма: 14
Зарегистрирован: Вт янв 05, 2016 11:14:25
Сообщений: 536
Откуда: Мелеуз
Рейтинг сообщения: 0
Не могу понять почему данные не записываются в еепром ,часть кода
Код:
$Regfile = "m8adef.dat"
$Crystal = 8000000
dim capacity as eram Single
dim capacity37 as eram Single
dim capacity33 as eram Single
dim capacity30 as eram Single
dim cap as Single
Config Adc = Single , Prescaler = Auto , Reference = aref
cap =0
adc_channel=5
do
U =Getadc(adc_channel) 
cap = cap +Getadc(3)*5
  if U = 3.7 then capacity37l = CAP
  if U = 3.3 then capacity33 = CAP
  if U = 3.0 then capacity30 = CAP
loop

в кратце-замер емкости аккумулятора,после разрядки до 3 вольт в переменных capacity... остается ноль...


Вернуться наверх
 Профиль WWW  
 
Не в сети
 Заголовок сообщения: Re: BASCOM AVR в вопросах и ответах
СообщениеДобавлено: Сб апр 07, 2018 08:31:04 
Сверлит текстолит когтями
Аватар пользователя

Карма: 11
Зарегистрирован: Пн июн 18, 2007 22:51:20
Сообщений: 1109
Откуда: Брянская обл, Россия
Рейтинг сообщения: 0
эээ.. Я сохраняю всё через writeeeprom
про указанный вами метод слышу впервой


Вернуться наверх
 Профиль WWW  
 
Не в сети
 Заголовок сообщения: Re: BASCOM AVR в вопросах и ответах
СообщениеДобавлено: Сб апр 07, 2018 09:23:51 
Опытный кот
Аватар пользователя

Карма: 10
Зарегистрирован: Ср авг 26, 2009 09:24:50
Сообщений: 738
Откуда: 1300км от Пупа
Рейтинг сообщения: 0
Вообще, смущает вот эта строчка.
cap = cap +Getadc(3)*5
сар вычисмляется вообще?

_________________
Все делают ошибки, только мудрецы - новые, а дураки - старые.


Вернуться наверх
 Профиль WWW  
 
Не в сети
 Заголовок сообщения: Re: BASCOM AVR в вопросах и ответах
СообщениеДобавлено: Сб апр 07, 2018 16:27:32 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 15
Зарегистрирован: Пн окт 11, 2010 20:00:08
Сообщений: 1909
Рейтинг сообщения: 0
про указанный вами метод слышу впервой
eram в баскоме уже очень давно. Но судя по программе, в EEPROM может производится много лишних записей и быстро исчерпается ресурс.

Я думаю что стоит прочитать о Getadc потому что по видимому неправильно понимается работа функции. Она не возвращает напряжение в вольтах.


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: BASCOM AVR в вопросах и ответах
СообщениеДобавлено: Сб апр 07, 2018 17:49:42 
Родился
Аватар пользователя

Карма: 1
Зарегистрирован: Вс май 15, 2016 20:02:01
Сообщений: 18
Откуда: Украина
Рейтинг сообщения: 0
Не могу понять почему данные не записываются в еепром ,часть кода
Код:
$Regfile = "m8adef.dat"
$Crystal = 8000000
dim capacity as eram Single
dim capacity37 as eram Single
dim capacity33 as eram Single
dim capacity30 as eram Single
dim cap as Single
Config Adc = Single , Prescaler = Auto , Reference = aref
cap =0
adc_channel=5
do
U =Getadc(adc_channel) 
cap = cap +Getadc(3)*5
  if U = 3.7 then capacity37l = CAP
  if U = 3.3 then capacity33 = CAP
  if U = 3.0 then capacity30 = CAP
loop

в кратце-замер емкости аккумулятора,после разрядки до 3 вольт в переменных capacity... остается ноль...

Какой канал АЦП используется, третий или пятый? Вы U считываете с пятого канала, а Cap с третьего. И, по моему, не корректная запись:
cap = cap +Getadc(3)*5.
Сначала попробуйте считайть значение АЦП в переменную, а потом работать с ней.


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: BASCOM AVR в вопросах и ответах
СообщениеДобавлено: Сб апр 07, 2018 19:08:01 
Вымогатель припоя

Карма: 14
Зарегистрирован: Вт янв 05, 2016 11:14:25
Сообщений: 536
Откуда: Мелеуз
Рейтинг сообщения: 0
cap = cap +Getadc(3)*5 я написал в упрощенном виде,на деле вот так
Код:
a = Getadc(3)
  cap0 = a * Vop
  cap0 = cap0 / 1024
  cap0 = cap0 / rez
  cap0 = cap0 / 3.600
  cap = cap + cap0
  cap0 = cap0 * 3600

переменная сар сразу выводится на экран-там все верно
к аккумулятору подключены 2 резистора последовательно,каждый 10 ом ,ADC5-напряжение на аккумуляторе,adc3-напряжение на общей точке подключения резисторов 10 ом
хочу собрать измеритель емкости аккумуляторов ли-ион,из доступных дисплеев только винстар 1602,нокиа 1110 и прочего нет(кроме 5110,но на нем в сети не нашел такой прибор)
именно в строках
if U = 3.7 then capacity37l = CAP
if U = 3.3 then capacity33 = CAP
if U = 3.0 then capacity30 = CAP
не происходит запись,я попробовал записать и сразу считать и отправить в уарт-ноли...

попробую через writeeeprom,спасибо за подсказку

мистика какая-то,сделал так-все работает...
if U = 3.7 then
capacity37 = CAP
end if
if U = 3.3 then
capacity33 = CAP
end if
if U = 3.0 then
capacity30 = CAP
end if
:dont_know:


Вернуться наверх
 Профиль WWW  
 
Не в сети
 Заголовок сообщения: Re: BASCOM AVR в вопросах и ответах
СообщениеДобавлено: Сб апр 07, 2018 23:45:24 
Поставщик валерьянки для Кота

Карма: 17
Зарегистрирован: Вт ноя 27, 2007 12:32:06
Сообщений: 2146
Откуда: Tashkent
Рейтинг сообщения: 0
Я бы не советовал делать проверку на равенство если операнд имеет тип с плавающей точкой.
Такие числа в машинном представлении отличаются от привычного десятичного вида.
Например, константа 3.7 в реальности может быть представлена скажем в виде 3.69999 из-за чего условие не выполнится.
Также при каждом арифметическом действии с таким типом ошибка может накапливаться. И величина ошибки будет возрастать с увеличением значения.


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 5690 ]  На страницу Пред.  1 ... 280, 281, 282, 283, 284, 285  След.



Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на форуме

Сейчас этот форум просматривают: Enman, Foxhound и гости: 10


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y