Перейти к содержанию
    

st8l051 Uart детектирование FE.

В 11.11.2018 в 00:58, jcxz сказал:

Прежде чем начинать хамить на замечания, хотя-бы на минуту включите голову и подумайте - что будет если между 

volatile unsigned char srreg = USART1->SR;

и следующей строчкой вашего "кода" в UART.RX придёт новый байт?

И вы не хамите - Гуру. Этот код - а вы его только что вставили - и там есть UART.RX.  По существу - там, что не видно, что я читаю SR и сразу DR - что не так ? О каких еще механизмах вневременном принятии данных я должен знать - о фифо тут нет, прерывания есть только по таймеру для вырабатывания доп флагов, время выполнения кода всех задействованых в программе прерываний вместе взятых - последовательно не превышает времени трансляции уартом примерно 2 бит данных на текущей скорости ????  вся система четко расчитана.  Дополнительно - зачем петлять так код - если зарегистрировали прерывание по RXNE - то оно и сработает по RXNE . Единственным незыблемым условием для сброса некоторых или можно сказать всех флагов - есть чтение двух регистров, причем действие настолько документировано что не увидеть что оно практически одинаково для сброса любых состояний вызвавшее прерывания - просто невозможно, если иногда читаешь мануалы конечно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

7 минут назад, Картошка сказал:

По существу - там, что не видно, что я читаю SR и сразу DR - что не так ?

Ну значит - продолжайте думать. Пока не поймёте почему надо: 1) сперва читать регистр статуса; 2) потом анализировать его состояние, и только уже после этого, по результатам этого анализа - 3) читать или не читать DR (согласно мануала на МК) - не сможете написать что-то действительно стабильно работающее без всяких неожиданностей. Все ответы "зачем и почему" есть в моих сообщениях и в мануале.

А с 1997-го или с какого другого Вы там что-то пишете - здесь пальцы гнуть бессмысленно. Здесь каждый имеющий глаза и голову сможет сам оценить ваш "код"  :biggrin:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 11.11.2018 в 01:28, jcxz сказал:

Ну значит - продолжайте думать. Пока не поймёте почему надо: 1) сперва читать регистр статуса; 2) потом анализировать его состояние, и только уже после этого, по результатам этого анализа - 3) читать или не читать DR (согласно мануала на МК) - не сможете написать что-то действительно стабильно работающее без всяких неожиданностей. Все ответы "зачем и почему" есть в моих сообщениях и в мануале.

Я что не анализирую SR ??? Какая разница что я потом просто проигнорирую прочитанный DR. Вы же его все равно должны прочитать его  для сброса прерывания ???? Ну даете... Что не так ? Сохраненный SR что - срок годности истечет ???? Это двойное действие сбрасывает флаг прерывания! - что не так сделал ??? Скорость работы кода прерывания посчитана и также расчитаны время работы всех прерываний в программе, там OV не будет.

 А вы меня пытаетесь в какой-то детской некомпетентности обвинить. Я по существу спрашиваю - с детектированием FE сталкивались ? Если сталкивались помогите - ибо НЕ РАБОТАЕТ детект, в регистре статуса я его не вижу, IDLE страбатывает, OV часто срабатывает когда отладчиком смотрю, но увы FE - нет .

FE нормально детектируется периферией на AVR и STM32 - я там LIN делал, но увы с ST8 - не получилось - флаг не выставляется.

Если есть что - поделитесь, а качать статиста - вообще некрасиво.

----------------------------------------

 

Изменено пользователем Картошка

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Проблему с FE не решил. Пришлось для синхронизации использовать просто IDLE статус (причем в 1 байтовый интервал). Межпроцессорный обмен позволяет это сделать без критического джиттера.

Если что-то есть по FE конкретно - просьба поделиться. Отблагодарю чем могу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...