Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 15.01.2019, 17:31  
mike-y-k
Модератор
 
Регистрация: 04.08.2010
Адрес: Москва СЗАО
Сообщений: 11,246
Сказал спасибо: 11,165
Сказали Спасибо 3,854 раз(а) в 2,925 сообщении(ях)
mike-y-k на пути к лучшему
По умолчанию Re: PIC и BlueTooth

AndGrig, только лучше подробней для всех - где и что забивал этот поток байт.
Суть ошибки уже прорисовалась, осталось всем оставить четкое описание как не нужно делать
Реклама:
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
mike-y-k вне форума  
Непрочитано 16.01.2019, 06:34  
akegor
Гуру портала
 
Аватар для akegor
 
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 18,856
Сказал спасибо: 2,532
Сказали Спасибо 11,772 раз(а) в 5,896 сообщении(ях)
akegor на пути к лучшему
По умолчанию Re: PIC и BlueTooth

Сообщение от mike-y-k Посмотреть сообщение
осталось всем оставить четкое описание как не нужно делать
Обычно при немонстроидальном обмене работаю в ASCII. При этом информация идет символами от 0 до F, из остальных можно любой использовать для синхронизации.
Есть "стартовый" байт и признак конца строки (обычно 0x0d и 0x0a). Пока не пришел стартовый байт можно все отбрасывать. Есть некоторая избыточность, но алгоритм простой, как грабли.
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
akegor на форуме  
Непрочитано 16.01.2019, 12:30  
AndGrig
Прописка
 
Аватар для AndGrig
 
Регистрация: 04.02.2007
Адрес: Крым
Сообщений: 243
Сказал спасибо: 208
Сказали Спасибо 315 раз(а) в 65 сообщении(ях)
AndGrig на пути к лучшему
По умолчанию Re: PIC и BlueTooth

Сообщение от mike-y-k Посмотреть сообщение
AndGrig, только лучше подробней для всех - где и что забивал этот поток байт.
Суть ошибки уже прорисовалась, осталось всем оставить четкое описание как не нужно делать
Вроде я все описал.
В даташите на PIC16F876 в разделе 10.2.2 "Асинхронный приемник USART" написано, что приемник может хранить в своем регистре только 2 байта. Если приходит 3-й байт, а регистр полон, то контроллер выставляет флаг переполнения приемника и прекращает прием. Перезагрузка контроллера командой goto 0x00 этот флаг не сбрасывает.
Передо мной стояла, в общем-то, стандартная задача - в произвольный момент времени подключиться со смартфона к контроллеру и неспешно передать/принять два байта. При подключении смартфона к блютузу, соединенному с контроллером, они знакомятся и договариваются о сотрудничестве обмениваясь информацией. И нет чтобы сделать это по тихому между собой, так все это вываливается на вход Rx контроллера. В моём случае обработка двух байт требует запрещение прерываний и занимает 4 мсек. За это время входной регистр приемника забивается и приемник выключается.
Решения задачи:
1. Нужно все это читать и выбрасывать.
2. Выключить приемник на 50 мсек, а затем опять включить.
3. Ничего не делать (приемник сам отключится) и через 50 мсек сбросить ошибку переполнения.
Как узнать, что пошел прием не нужной мне информации? Она начинается с определенного заголовка, заканчивается какой-то финальной фразой и длится чуть менее 50 мсек. Заголовок всегда начинается байтом 0х2В (нужно посмотреть еще пару байтов для надежности). Получив этот байт, я жду 50 мсек, а затем сбрасываю ошибку переполнения как описано в даташите.

Уважаемый akegor просто все читает и выбрасывает пока не придет особый заголовок сообщения. Это позволяет организовать работу с несколькими устройствами.
Я только не совсем понял "...работаю в ASCII. При этом информация идет символами от 0 до F". Ведь ASCII использует один байт, т.е. от 0х00 до 0хFF.

Вообще-то, надеялся, что есть стандартное решение этой тривиальной задачи. Кто-нибудь снисходительно похлопает меня по плечу и подскажет где искать ответ.
__________________
Если вас не устраивает ваша зарплата - отдайте её жене!

Последний раз редактировалось AndGrig; 16.01.2019 в 12:36.
AndGrig вне форума  
Непрочитано 16.01.2019, 13:20  
Eddy71
Почётный гражданин KAZUS.RU
 
Аватар для Eddy71
 
Регистрация: 22.02.2008
Адрес: Ukraine, рядом с Полтавой
Сообщений: 9,560
Сказал спасибо: 5,394
Сказали Спасибо 24,777 раз(а) в 5,562 сообщении(ях)
Eddy71 на пути к лучшему
По умолчанию Re: PIC и BlueTooth

Зачем всё так сложно?
Принялся байт - сработало прерывание - в прерывании быстренько байтик считали, сохранили в буфер и пошли работать дальше. Флаг приёма сам очистится..
__________________
«Совершенство — это не тогда, когда уже нечего больше добавить, а тогда, когда уже нечего отнять.»
/Эйнштейн/

моя домашняя страничка: http://www.eddy.com.ua/
Eddy71 вне форума  
Непрочитано 16.01.2019, 13:21  
akegor
Гуру портала
 
Аватар для akegor
 
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 18,856
Сказал спасибо: 2,532
Сказали Спасибо 11,772 раз(а) в 5,896 сообщении(ях)
akegor на пути к лучшему
По умолчанию Re: PIC и BlueTooth

Сообщение от AndGrig Посмотреть сообщение
Ведь ASCII использует один байт, т.е. от 0х00 до 0хFF.
Нибблы байта принимают значения от нуля до "Ф", они передаются соответствующими символами. Другими словами, один байт передается двумями.
В случае с модемом - жду его сообщение об успешной регистрации в сети, после этого начинаю с ним работать. Все принимается в буфер достаточного размера, не два байта.
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
akegor на форуме  
Непрочитано 16.01.2019, 13:41  
mike-y-k
Модератор
 
Регистрация: 04.08.2010
Адрес: Москва СЗАО
Сообщений: 11,246
Сказал спасибо: 11,165
Сказали Спасибо 3,854 раз(а) в 2,925 сообщении(ях)
mike-y-k на пути к лучшему
По умолчанию Re: PIC и BlueTooth

AndGrig, уважаемый akegor написал об обмене распакованными бинарными данными в шестнадцатеричном формате - там действительно только 0…9, A…F. Других шестнадцатеричных цифр ещё не придумали. Пишите свою реализацию sprintf/sscanf для формата %x или %X и пользуетесь. При передаче и приёме только будет в 2 раза больше данных.

В Вашем случае при спаривании устройств прочитать все, пришедшее по UART и дальше уже продолжить нормальное выполнение.
Самое правильное - кольцевой буфер на некоторое (›2) количество символов и разборки с ним. Можете для старта своего обмена просто передать набор байт, который не встретится в основном обмене.
По совету уважаемого akegor это может быть любая отличная от используемых 0…9,A…F (0x30…0x39, 0x41…0x46, 0x61…0x66) комбинация. Например два байта 0x00…
Приём данных из UART, как и их передачу организовать на буферах в памяти и исключительно в прерываниях. В основной программе только анализ флагов и указателей.
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
mike-y-k вне форума  
Сказали "Спасибо" mike-y-k
AR_Favorit (16.01.2019)
 

Закладки
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
mikroC PRO for PIC помогоите разобраться igor33 PIC 5 22.05.2016 21:19
Тормоза при передаче данных через UART в Bluetooth модуль rus_12345 Микроконтроллеры, АЦП, память и т.д 8 05.01.2015 19:39
Литература по микроконтроллерам (AVR, PIC, ПЛИС и т.д.). Сборка книг - (256 книг+ 27 CD c примерами из книг) [обновление 2011, PDF, DJVU] yurinform Микроконтроллеры, АЦП, память и т.д 5 05.07.2011 19:00
Вопрос про PIC 16F876А Serega7777 Микроконтроллеры, АЦП, память и т.д 2 18.12.2007 22:34


Часовой пояс GMT +4, время: 16:57.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot