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

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

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

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

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

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


 
Опции темы

Аvrstudio/c#/песочница

Непрочитано 25.12.2012, 09:56  
omercury
Почётный гражданин KAZUS.RUN
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,487
Сказал спасибо: 30
Сказали Спасибо 3,070 раз(а) в 2,011 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Аvrstudio/c#/песочница

Сообщение от whoim Посмотреть сообщение
Получается, я, пока у меня идет вывод - теряю байтики в регистре data потому что не забрал их?
Ну типа того.
PHP код:
            //отладка
            RS485_send_str(_gnss_line);RS485_send_str("\r\n");
            _gnss_pos = 0; 
Пока в прерывании приёма данных работает передача, байтики и теряются.
Тут надо просто копировать буфер приёмника в буфер передатчика, ставить флаг разрешения передачи из буфера передатчика и выносить процедуру передачи наружу из текущего прерывания. Буферы приёмника и передатчика, естественно, раздельные. Либо, как тонко подметил ut1wpr, переключать буферы приёмника и передатчика.
Реклама:
omercury вне форума  
Непрочитано 25.12.2012, 10:48  
Boba_spb
Почётный гражданин KAZUS.RUN
 
Регистрация: 08.06.2008
Сообщений: 1,393
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
Boba_spb на пути к лучшему
По умолчанию Re: Аvrstudio/c#/песочница

Лучше всего передачу посадить на прерывания. На худой конец - разрешить прерывания перед началом передачи, что б работал прием на фоне передачи.
Boba_spb вне форума  
Непрочитано 25.12.2012, 11:04  
whoim
Почётный гражданин KAZUS.RUN
 
Аватар для whoim
 
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,618
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
whoim на пути к лучшему
По умолчанию Re: Аvrstudio/c#/песочница

ага, примерно понял.. не хочется заводить кучу буферов для разных usart, но видимо придется..
Итак, логика работы..
в прерывании по приходу байтиков в usart мы загоняем пришедшее в буфер, а если встретим \r\n (ну видимо \r) то копируем текущий буфер во временный (передача в другой уарт мне нужна только для отладки, потом там будет обработка) и ставим какой нить свой флаг, который мониторим в прерывании таймера (есть таймер 1миллсек), там первым делом снимаем этот флаг и передаем второй буфер на передачу или парсинг. Так?
whoim вне форума  
Непрочитано 25.12.2012, 11:11  
omercury
Почётный гражданин KAZUS.RUN
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,487
Сказал спасибо: 30
Сказали Спасибо 3,070 раз(а) в 2,011 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Аvrstudio/c#/песочница

Ставим флаг разрешения передачи и запускаем передачу.
В прерывании по опустошению регистра данных USART загружаем следующий байт и так до опустошения буфера. На последнем байте сбрасываем флаг разрешения передачи (а он вообще нужен? ).
И никаких таймеров.
omercury вне форума  
Непрочитано 25.12.2012, 11:20  
whoim
Почётный гражданин KAZUS.RUN
 
Аватар для whoim
 
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,618
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
whoim на пути к лучшему
По умолчанию Re: Аvrstudio/c#/песочница

Сообщение от omercury Посмотреть сообщение
Ставим флаг разрешения передачи и запускаем передачу.
В прерывании по опустошению регистра данных USART загружаем следующий байт и так до опустошения буфера. На последнем байте сбрасываем флаг разрешения передачи (а он вообще нужен? ).
И никаких таймеров.
Да мне передача нужна пока только как отладка, потом кучу других вещей взамен делать. Думаю, надо иметь промежуточных механизм, а там уже хоть передача в другой уарт, хоть что. передача в этот уарт (C1) нужна только при старте для конфигурации модуля
whoim вне форума  
Непрочитано 25.12.2012, 11:24  
ut1wpr
Почётный гражданин KAZUS.RUN
 
Аватар для ut1wpr
 
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,613
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
ut1wpr на пути к лучшему
По умолчанию Re: Аvrstudio/c#/песочница

Ну, что значит "не хочется" в лексике программера? Рядышком должны быть и аргументы.
А работать с двумя асинхронными потоками по каким-то там вотчпсам - моветон. Вы имеете два события. Они и должны вызывать действия-реакцию. Не надо пытаться их синхронизировать собаками. Первое событие - приперся байт. Надо с ним что-то делать. Делаем. Второе событие - готово содержимое буфера для передачи. Надо передавать.
Проведите аналогию с бассейном и трубами. Ваши буфера - это бассейн.
Количество буферов будет зависеть от скорости входного потока и от скорости выходного. Полная аналогия с диаметрами труб. Если вы не сбалансируете дебет и кредит - бассейн начнет выплескивать лишнее.
Детали не буду расписывать. Вам гораздо важнее понять общую концепцию. Да и полезнее самому понять-написать-отладить, чем ждать готового решения. Готовое может быть только у вас. Никто, кроме вас не знает тонкостей ваших задач в совокупности. Естественно, никто особенно и не рвется их узнавать
__________________
С уважением,
Vic / ut1wpr
ut1wpr вне форума  
Непрочитано 25.12.2012, 11:25  
whoim
Почётный гражданин KAZUS.RUN
 
Аватар для whoim
 
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,618
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
whoim на пути к лучшему
По умолчанию Re: Аvrstudio/c#/песочница

В принципе, в прерывании таймера взамен флага "есть чо" можно проверять первый байтик буфера. Если в нем не ноль (а то и $ - признак вменяемых данных) - то есть чо парсить. Если же там \0, который мы по окончании парсинга будем туда ручками ставить - то ловить нечего, из уарта еще не добежало до комплекта данных. \n в прерывании по приходу данных успешно потеряется, если простое условие организуем: если \r, то копируем буфер0 в буфер1 и обнуляем позицию, иначе кидаем в буфер0 новый байтик и ++ позицию..

Как быстрее всего закопировать char buff1[200] в char buff2[200] ориентируясь, что если в середке \0 то далее можно не копировать?
whoim вне форума  
Непрочитано 25.12.2012, 11:27  
ut1wpr
Почётный гражданин KAZUS.RUN
 
Аватар для ut1wpr
 
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,613
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
ut1wpr на пути к лучшему
По умолчанию Re: Аvrstudio/c#/песочница

Сообщение от whoim Посмотреть сообщение
Да мне передача нужна пока только как отладка, потом кучу других вещей взамен делать.
А может, какой-нибудь другой способ отладки принять? Время-то идет, уже бы и отладили...
__________________
С уважением,
Vic / ut1wpr
ut1wpr вне форума  
Непрочитано 25.12.2012, 11:28  
whoim
Почётный гражданин KAZUS.RUN
 
Аватар для whoim
 
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,618
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
whoim на пути к лучшему
По умолчанию Re: Аvrstudio/c#/песочница

Сообщение от ut1wpr Посмотреть сообщение
Рядышком должны быть и аргументы.
да согласен, имел ввиду - ищу альтернативу)

Сообщение от ut1wpr Посмотреть сообщение
торое событие - готово содержимое буфера для передачи. Надо передавать.
Так опять же - передача на этапе отладки. Далее будут расчеты всякие, парсинг, ложение в структуру..


Сообщение от ut1wpr Посмотреть сообщение
Да и полезнее самому понять-написать-отладить, чем ждать готового решения. Готовое может быть только у вас
Ну так за этим я и тут В принципе, проблему понял. Буду решать. На работе свет отрубили (

Щас дома организуюсь..
whoim вне форума  
Непрочитано 25.12.2012, 11:28  
whoim
Почётный гражданин KAZUS.RUN
 
Аватар для whoim
 
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,618
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
whoim на пути к лучшему
По умолчанию Re: Аvrstudio/c#/песочница

Сообщение от ut1wpr Посмотреть сообщение
А может, какой-нибудь другой способ отладки принять?
Способ узнать, вменяемые ли данные в буфере для парсинга?)
Я с этого и начал - парсить перестало нормально)
whoim вне форума  
 
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Песочница по С RY723 Электроника - это просто 0 27.02.2011 14:05


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


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.