В любом случае понадобится система обработки прерываний от устройств, иначе всё равно данные будут пропадать. Например модуль SIM асинхронно отдает данные (например: входящий звонок RING), ну и остальные модули тоже могут быть прыткими, типа ESP-ки.
Приём данных по UART с ПК
Сообщений 61 страница 90 из 154
Поделиться622019-01-29 19:43:26
Прерывания, в таком случае, абсолютно ни чего не исправят. Шо есть, шо нет. Просто сделать буфер по больше. Или вообще менять алгоритм либо лучше схему.
Поделиться632019-01-31 13:23:04
Буфер тоже не решит проблемы, если он общий на всё. Будет каша мола. Если только отдельный у каждого порта.
Поделиться642019-02-01 00:34:58
А я бы предложил и так, и сяк попробовать. Практика - дело такое... 
Отредактировано sevastopolets (2019-02-01 00:35:58)
Поделиться652019-02-28 16:28:56
Как в атмеге 128 правильно включить два апаратных уарт ?
Поделиться662019-02-28 20:32:03
Как в атмеге 128 правильно включить два апаратных уарт ?
Ссылку уже потерял, но однажды скачал полный перевод даташита на Мега128 в формате Word.
Могу переслать, но только завтра после обеда.
Поделиться672019-02-28 20:52:17
Ссылку уже потерял, но однажды скачал полный перевод даташита на Мега128 в формате Word.
Могу переслать, но только завтра после обеда.
Мне любая информация пригодится , можно и после обеда.
Поделиться682019-02-28 21:15:31
Вот еще вариант того же, только в формате DJVU.
http://mega-avr.com.ua/atbanned28rus/
Поделиться692019-03-01 10:19:14
Как в атмеге 128 правильно включить два апаратных уарт ?
Разве это сложно?
Делаем Config com1 и com2
На первом просто Print, на втором Print #1
Для приёма можно использовать буфер
Config SERIALIN = BUFFERED , size = от 1 до 255
Config SERIALIN1 = BUFFERED , size = от 1 до 255
Поделиться702019-03-01 12:22:31
Разве это сложно?
Делаем Config com1 и com2
На первом просто Print, на втором Print #1
Для приёма можно использовать буфер
Config SERIALIN = BUFFERED , size = от 1 до 255
Config SERIALIN1 = BUFFERED , size = от 1 до 255
Если знаеш как то нет, спасибо . И в гугле ни чего не нашол .
Поделиться722019-03-03 21:05:46
$regfile = "m128def.dat" ' мега128 $crystal = 8000000 '$baud = 4800 $hwstack = 220 ' default use 32 for the hardware stack $swstack = 220 ' default use 10 for the SW stack $framesize = 220 ' default use 40 for the frame space Config Com1 = 4800 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0 Config Com2 = 4800 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0 'Config Serialin = Buffered , Size = 255 'Config Serialin1 = Buffered , Size = 255 Open "com2:" For Binary As #1 Dim Сколько_времени As Byte , Часы_sim900 As Integer , Esp8266 As Integer '*******SIM900 ********* If Сколько_времени = 0 Then 'Print #1 , "AT+CCLK?" Сколько_времени = 1 End If Input #1 , "AT+CCLK?" , Часы_sim900 '*******ESP8266 ********* 'Print "ESP8266" 'Incr Tel 'Print ; " test serial port 1" ' Print #1 , ; " test serial port 2" Input , "ESP8266" , Esp8266
Вот два УАРТ работают как будто у них взаимная блокировка, если запустить програму то в один из терминалов приходит AT+CCLK? в другой ни чего не приходит пока не отправить чего то из первого терминала микроконтролеру и так далее. Как их разблокировать?
Поделиться732019-03-03 23:52:08
Вот два УАРТ работают как будто у них взаимная блокировка
Такими методами не пользовался, но...
У вас только одна строка:
Open "com2:" For Binary As #1
Объявлены два Com, а "первый" кто открывать будет ? 
Возможно, я неправ, но вижу так...
Поделиться742019-03-04 06:11:43
Вот два УАРТ работают как будто у них взаимная блокировка
Посмотрите здесь
Объявлены два Com, а "первый" кто открывать будет ?
Первый он же usart0, обычно работает без открывания, остальные надо открывать.
Поделиться752019-03-05 12:31:59
Посмотрите здесь
У вас есть пример для атмега128 , как передать понятно не понятно как принять , поясните пожалуйста как получать данные . Если я правильно понял чтобы программа не останавливалась принимать данные нужно по внешнему прерыванию ?
Отредактировано olegkaras (2019-03-05 12:33:09)
Поделиться762019-03-05 17:05:13
Подключение нескольких устройств по UART
Проверено и не раз, работает.Отредактировано SyncMVGP (2019-01-25 15:50:51)
Я чот нипонял... А как это будет работать?
Давай прикинем PIN к носу и включим мосх. Ну, диодная развязка с подтяжкой на (+) и шо? Ежли ОДИН её "придавит" к земле - остальные будут уже "пофиг" ...... оОоченянама "правильное" решение,
Глюки, 
Поделиться772019-03-05 19:20:19
Я чот нипонял... А как это будет работать?
Работает. И железно.
Проверено практически сразу же после появления поста, не зря там "+" стоит за это решение.
Не всегда ваш "мосх" сочетается с реалиями...
А вот правописание у вас продолжает хромать, несмотря на "железные" указания Модераторов...
Поделиться782019-03-05 21:34:06
Мне сейчас не на чем проверить... но, я сомневАюся.
Поделиться792019-03-05 21:43:32
Повторяю - проверялось. На макетке.
Мастером выступал Мега16, три слейва - Мега48 весело мигали светодиодами при приеме правильного (!) байта с указанием адреса принимающего.
Так же, как и вы ранее, даже не буду выставлять никаких других доказательств, кроме утверждений в работоспособности вышеуказанной схемы.
Поделиться802019-03-05 23:30:54
Так я даже и не спорил, тем более не опровергал тот факт, что оно работает. Идея мне понравилась, много чего можно "прикрутить" таким способом.... НО! Пока сам не проверю --- нИпаверю. Как-то так. 
Поделиться812019-03-06 06:44:32
У вас есть пример для атмега128 , как передать понятно не понятно как принять
Если Usart_0_flag_data_input > 0 значит есть принятые данные
Gosub Usart_0_clearing_buffer_receive - здесь сбрасываете буфер
аналогично и usart1
Поделиться822019-03-06 08:25:05
Я чот нипонял... А как это будет работать?
Давай прикинем PIN к носу и включим мосх. Ну, диодная развязка с подтяжкой на (+) и шо? Ежли ОДИН её "придавит" к земле - остальные будут уже "пофиг" ...... оОоченянама "правильное" решение,
Глюки,
Вот и я сейчас соображаю: Mega328p (1 UART) задача подключить SIM800C и модуль BT HC-05 (наладка и прошивка МК).
Физически на одну шину посадить можно, работать будет. Но во время обмена с HC-05 будем иметь пропуски данных от SIM800C, что не есть гуд.
на banned28 как то не хочется переходить.
Поделиться832019-03-06 11:28:12
SIM800C - это как бы асинхронный модуль (события могут приходить независимо от команд).
HC-05 - обычный модуль, т.ч. логика скорее должна быть на оборот, приоритет у СИМа, но да, потеря данных неизбежна, из чего делаем вывод, оба модуля иметь одновременно на одном порте - недопустимо. Лучше запустить ещё софт-порт, скажем по INT.
Поделиться842019-03-06 11:39:18
Если Usart_0_flag_data_input > 0 значит есть принятые данные
Gosub Usart_0_clearing_buffer_receive - здесь сбрасываете буфер
аналогично и usart1
В вашем примере если на вход ни чего не приходит то программа будет просто стоять на месте ?
Поделиться852019-03-06 17:28:54
В вашем примере если на вход ни чего не приходит то программа будет просто стоять на месте ?
Конкретно в примере МК будет спать.
В других случаях, будет крутиться в цикле, пока не изменятся флаги ( Usart_0_flag_data_input; Usart_1_flag_data_input )
Поделиться862019-03-06 17:39:46
Вот и я сейчас соображаю: Mega328p (1 UART) задача подключить SIM800C и модуль BT HC-05 (наладка и прошивка МК).
Физически на одну шину посадить можно, работать будет. Но во время обмена с HC-05 будем иметь пропуски данных от SIM800C, что не есть гуд.на banned28 как то не хочется переходить.
32 - Atmega328_PB
44 - Atbanned284P
64 - Atbanned28_1281_2561
100 - Atbanned280_2560
Поделиться872019-03-10 23:39:44
Прошу помощи у знающих людей. Как практически на АТМЕГЕ 128 задействовать два УАРТ что бы прием не останавливал мк если на вход ни чего не приходит ? Очень нужно сделать удаленный контроль помещения. А то получается даже принять звонок от сим900 не получается , ну не брать же от него сигнал вызова и цеплять на вход мк для контроля.
Поделиться892019-03-11 04:35:51
Прошу помощи у знающих людей. Как практически на АТМЕГЕ 128 задействовать два УАРТ что бы прием не останавливал мк если на вход ни чего не приходит ? Очень нужно сделать удаленный контроль помещения. А то получается даже принять звонок от сим900 не получается , ну не брать же от него сигнал вызова и цеплять на вход мк для контроля.
Вы что, шутите ?
Выложил готовый вариант и он у Вас не работает ?
Закомментируйте "Idle" и МК будет всё время крутиться в главном цикле
Поделиться902019-03-13 22:50:38
Да , действительно все прекрасно работает , извините.
Как из такой строки AT+CCLK="13/09/25,13:25:33+05" отобрать числа для дальнейшего использования ?