Страница 1 из 1

Странный глюк

Добавлено: 15.02.2016{, 13:59}
Naladchik
Создал заготовку. Суть в следующем. Принять данные с UART, записать в темповую переменную и далее работать с ней. При этом исключить возможность перезаписи в ней данных до конца обработки (исключить возможность влияния мусора из UART). Так вот проблема, при записи данных темповую переменную записываются только 2 первых символа (по крайней мере на дисплее вижу именно так). Кто пояснит, в чем глюк?

Странный глюк

Добавлено: 15.02.2016{, 21:01}
Airis
0547498.png
Переменная Data_IN_act после первого срабатывание дальше уже не будет обновляться (менят свое состояние). Единожды записанная единица, там будет все время, и без разницы что у нее есть разрешение на запись, по тому что записывать она может только единица, но не ноль.

Странный глюк

Добавлено: 16.02.2016{, 05:55}
Naladchik
Airis, ниже, на второй плате, происходит периодическое (пока) обнуление данной переменной. Проблему записи только двух первых знаков это не решает.

Странный глюк

Добавлено: 16.02.2016{, 08:45}
Airis
Не заметил то что на второй плате, но и тут проблема. Одновибратор небудет считать 3 секунды, он проработает очень короткий момент
(микросекунду, миллисекунду) и тоже самое произойдет с переменной Data_IN_act - оно поменяет свое состояние с
высокое на низкое почти мгновенно. А это означаете что Data_IN_act будет выводит данные на дисплей на это очень короткое мгновение, и
сразу после это его гасить. Так что это еще хорошо что на дисплее можно успеть увидеть
2 символа.

Странный глюк

Добавлено: 16.02.2016{, 10:26}
Naladchik
Airis, опять мимо. 
Airis писал(а):не будет считать 3 секунды
будет, и считает. это можно "в живую" увидеть по светодиоду, подключенному к выходу D13. Состояние D13 напрямую зависит от состояния Data_IN_act. И символы висят эти самые 3с.

Airis, я очень ценю Ваше желание помочь разобраться, но вот если бы Вы проверили этот проект "в железе" и сравнили мой и Ваш результаты было бы более информативно.
С Уважением.

Странный глюк

Добавлено: 16.02.2016{, 11:23}
rw6cm
Naladchik писал(а):в чем глюк?

Странный глюк

Добавлено: 16.02.2016{, 12:34}
Naladchik
rw6cm, Спасибо.
Ваш вариант делал почти то, что мне нужно, главное, направление "куда копать" было понятно.
Подправил под свою задачу, заработало.

P.S. плюс в карму.

Странный глюк

Добавлено: 16.02.2016{, 13:59}
rw6cm
Naladchik писал(а):rw6cm, Спасибо
Всегда рад помочь.
Но честно сказать, вопрос в теме поставлен некудышне…
«Принять данные с UART, записать в темповую переменную и далее работать с ней (исключить возможность влияния мусора из UART)»
Что за данные? С какой интенсивностью приходят? О каком мусоре речь? Где критерий что это мусор ?
«При этом исключить возможность перезаписи в ней данных до конца обработки»
До какого конца? Пяти секунд по таймеру, или до турецкой пасхи?
Отсюда и ответ был «пальцем в небо» )))
И даже ваше заключение, «Подправил под свою задачу, заработало.»  ни какой ясности не дало.
Таймер сброса в вашем варианте сбрасывает только св.диод, не трогая переменную темп.
Даже если это подправить он будет перезаписывать данные с принятых, и не определять, успели они там обновится или нет.
В общем разбирайтесь …. !)))))

Странный глюк

Добавлено: 16.02.2016{, 14:54}
Naladchik
rw6cm, Ответил в личку.

Странный глюк

Добавлено: 16.02.2016{, 19:00}
monitorrr
Просьба если вопрос решен, написать в тему!
То же такая проблема!

Странный глюк

Добавлено: 16.02.2016{, 19:38}
Naladchik
Был найден косяк и в исходном проекте. переменная Data_IN_Act устанавливалась в высокое состояние в начале приема данных, а должна  по окончанию. Соответственно и запись данных из приемной переменной в буферную происходила в начале приема а не по окончанию, вот поэтому только начало посылки и записывалось.
Для тех кто вдруг захочет проверить у себя, имейте ввиду что при запуске Монитора com порта и нажатии кнопки "соединение" Монитор отправляет в порт какие то данные, соответственно моя программа этот момент отлавливает и блокируется на время работы одновибратора.
Далее все работает как и задумывалось. Готовность к приему контролируется по гашению светодиода на D13