Картошка 0 10 ноября, 2018 Опубликовано 10 ноября, 2018 · Жалоба В 11.11.2018 в 00:58, jcxz сказал: Прежде чем начинать хамить на замечания, хотя-бы на минуту включите голову и подумайте - что будет если между volatile unsigned char srreg = USART1->SR; и следующей строчкой вашего "кода" в UART.RX придёт новый байт? И вы не хамите - Гуру. Этот код - а вы его только что вставили - и там есть UART.RX. По существу - там, что не видно, что я читаю SR и сразу DR - что не так ? О каких еще механизмах вневременном принятии данных я должен знать - о фифо тут нет, прерывания есть только по таймеру для вырабатывания доп флагов, время выполнения кода всех задействованых в программе прерываний вместе взятых - последовательно не превышает времени трансляции уартом примерно 2 бит данных на текущей скорости ???? вся система четко расчитана. Дополнительно - зачем петлять так код - если зарегистрировали прерывание по RXNE - то оно и сработает по RXNE . Единственным незыблемым условием для сброса некоторых или можно сказать всех флагов - есть чтение двух регистров, причем действие настолько документировано что не увидеть что оно практически одинаково для сброса любых состояний вызвавшее прерывания - просто невозможно, если иногда читаешь мануалы конечно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 10 ноября, 2018 Опубликовано 10 ноября, 2018 · Жалоба 7 минут назад, Картошка сказал: По существу - там, что не видно, что я читаю SR и сразу DR - что не так ? Ну значит - продолжайте думать. Пока не поймёте почему надо: 1) сперва читать регистр статуса; 2) потом анализировать его состояние, и только уже после этого, по результатам этого анализа - 3) читать или не читать DR (согласно мануала на МК) - не сможете написать что-то действительно стабильно работающее без всяких неожиданностей. Все ответы "зачем и почему" есть в моих сообщениях и в мануале. А с 1997-го или с какого другого Вы там что-то пишете - здесь пальцы гнуть бессмысленно. Здесь каждый имеющий глаза и голову сможет сам оценить ваш "код" Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Картошка 0 10 ноября, 2018 Опубликовано 10 ноября, 2018 (изменено) · Жалоба В 11.11.2018 в 01:28, jcxz сказал: Ну значит - продолжайте думать. Пока не поймёте почему надо: 1) сперва читать регистр статуса; 2) потом анализировать его состояние, и только уже после этого, по результатам этого анализа - 3) читать или не читать DR (согласно мануала на МК) - не сможете написать что-то действительно стабильно работающее без всяких неожиданностей. Все ответы "зачем и почему" есть в моих сообщениях и в мануале. Я что не анализирую SR ??? Какая разница что я потом просто проигнорирую прочитанный DR. Вы же его все равно должны прочитать его для сброса прерывания ???? Ну даете... Что не так ? Сохраненный SR что - срок годности истечет ???? Это двойное действие сбрасывает флаг прерывания! - что не так сделал ??? Скорость работы кода прерывания посчитана и также расчитаны время работы всех прерываний в программе, там OV не будет. А вы меня пытаетесь в какой-то детской некомпетентности обвинить. Я по существу спрашиваю - с детектированием FE сталкивались ? Если сталкивались помогите - ибо НЕ РАБОТАЕТ детект, в регистре статуса я его не вижу, IDLE страбатывает, OV часто срабатывает когда отладчиком смотрю, но увы FE - нет . FE нормально детектируется периферией на AVR и STM32 - я там LIN делал, но увы с ST8 - не получилось - флаг не выставляется. Если есть что - поделитесь, а качать статиста - вообще некрасиво. ---------------------------------------- Изменено 10 ноября, 2018 пользователем Картошка Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Картошка 0 11 ноября, 2018 Опубликовано 11 ноября, 2018 · Жалоба Проблему с FE не решил. Пришлось для синхронизации использовать просто IDLE статус (причем в 1 байтовый интервал). Межпроцессорный обмен позволяет это сделать без критического джиттера. Если что-то есть по FE конкретно - просьба поделиться. Отблагодарю чем могу. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться