реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Тонкости работы USART (ну для tiny2313 точно)
90S1200
сообщение Jun 22 2006, 04:55
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 17
Регистрация: 5-05-06
Пользователь №: 16 806



Собственно говоря хочется лишь уяснить некоторые детали которые в общем случае решаемы.
Так что скажем интерес чисто академический.
Дело вот в чем.
В манах написано что после запрета на передачу передача продолжается если во время запрета
в выходном буфере или сдвиговом регистре находятся непереданные данные.
Решил я воспользоваться этим. Мальчишество конечно. Можно выключить и после передачи.
Ну тут решил попробовать. Вдруг когда нибудь все в это упрется а так хоть опыт будет.
В первом варианте все работало отлично. Не знаю может если б тестить дня 3 непрерывно что и всплыло бы. А так заработало потыркал все равно работает сбоев нет.
Заказчик изменил условия. Переделал но эта часть оставалась неизменной.
Запускаю. Ошибки. Причем ошибки явно наступают случайным образом. Начал разбираться
все упирается в цикл где идет ожидание окончания передачи. В одних случаях флаг выставляется
в других нет. Вероятность 50/50. Мне казалось что флаги выставляются в любом случае по наступлению
события. Вопрос тогда а это событие наступило? Была передача или нет? Если была то почему флаг не стал. Если не было то почему не было. Ведь в буфере по любому есть непереданные данные.

Было бы интересно выслушать Ваши мнения
Go to the top of the page
 
+Quote Post
Kovrov
сообщение Jun 22 2006, 06:28
Сообщение #2


Мастер-фломастер
****

Группа: Свой
Сообщений: 611
Регистрация: 29-12-05
Пользователь №: 12 700



а что такое запрет на передачу
в смысле TXEN=0 ?


--------------------
Вон ПОПОВ, клоун клоуном, а радио изобрел!!
Go to the top of the page
 
+Quote Post
beer_warrior
сообщение Jun 22 2006, 06:29
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380



Судя по написанному, вы поллите флажок в цикле. Тут вполне возможен проскок. Чтоб гарантировано отловить флажок, используйте прерывание.


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
_Bill
сообщение Jun 22 2006, 07:10
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 416
Регистрация: 18-04-06
Из: Челябинск
Пользователь №: 16 219



Цитата(90S1200 @ Jun 22 2006, 07:55) *
Запускаю. Ошибки. Причем ошибки явно наступают случайным образом. Начал разбираться
все упирается в цикл где идет ожидание окончания передачи. В одних случаях флаг выставляется
в других нет. Вероятность 50/50. Мне казалось что флаги выставляются в любом случае по наступлению
события. Вопрос тогда а это событие наступило? Была передача или нет? Если была то почему флаг не стал. Если не было то почему не было. Ведь в буфере по любому есть непереданные данные.

О каком флаге идет речь?
Go to the top of the page
 
+Quote Post
arttab
сообщение Jun 22 2006, 07:34
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 432
Регистрация: 7-12-04
Из: Новосибирск
Пользователь №: 1 371



Цитата(beer_warrior @ Jun 22 2006, 13:29) *
Судя по написанному, вы поллите флажок в цикле. Тут вполне возможен проскок. Чтоб гарантировано отловить флажок, используйте прерывание.

это как проскочить. мк не RND всетакм


--------------------
OrCAD, Altium,IAR, AVR....
Go to the top of the page
 
+Quote Post
90S1200
сообщение Jun 22 2006, 08:34
Сообщение #6


Участник
*

Группа: Новичок
Сообщений: 17
Регистрация: 5-05-06
Пользователь №: 16 806



Цитата(beer_warrior @ Jun 22 2006, 10:29) *
Судя по написанному, вы поллите флажок в цикле. Тут вполне возможен проскок. Чтоб гарантировано отловить флажок, используйте прерывание.

Забавно это читать.
Я просто не представляю как процессор может не выполнить команду.
Что значит проскок?
То есть флаг стоял а камень посчитал что его нет?
Это что есть некоторая вероятность безошибочного выполнения проверенного кода.
Вроде 5% остается на то что машина ПРАВИЛЬНО выполнит код.


Цитата(Kovrov @ Jun 22 2006, 10:28) *
а что такое запрет на передачу
в смысле TXEN=0 ?

Точно
Go to the top of the page
 
+Quote Post
beer_warrior
сообщение Jun 22 2006, 08:42
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380



Цитата
Это что есть некоторая вероятность безошибочного выполнения проверенного кода.
Вроде 5% остается на то что машина ПРАВИЛЬНО выполнит код.

Вы думаете есть вероятность ошибочной работы конечного автомата? smile.gif
Насколько я понимаю условия достаточно экстремальные.
Так, что флаг мог выставиться, и быть сброшеным до чтения из регистра. Тем более вы говорите, об изменении поведения после изменения другой части программы smile.gif
На чем пишете, чем собираете, если С учтены ли volatile? Есть ли прерывания? Код в студию пожалуйста!


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
90S1200
сообщение Jun 22 2006, 08:59
Сообщение #8


Участник
*

Группа: Новичок
Сообщений: 17
Регистрация: 5-05-06
Пользователь №: 16 806



Цитата(beer_warrior @ Jun 22 2006, 12:42) *
Цитата
Это что есть некоторая вероятность безошибочного выполнения проверенного кода.
Вроде 5% остается на то что машина ПРАВИЛЬНО выполнит код.

Вы думаете есть вероятность ошибочной работы конечного автомата? smile.gif
Насколько я понимаю условия достаточно экстремальные.
Так, что флаг мог выставиться, и быть сброшеным до чтения из регистра. Тем более вы говорите, об изменении поведения после изменения другой части программы smile.gif
На чем пишете, чем собираете, если С учтены ли volatile? Есть ли прерывания? Код в студию пожалуйста!

Насчет конечных автоматов это вы конечно умно заметили.
А насчет флага: что могло его сбросить?
Насколько я понимаю такое событие не документировано.
Цитата Флаг сбрасывается аппаратно при обработке программы прерывания или програмно записью в него 1
Ни того ни другого не было
Go to the top of the page
 
+Quote Post
beer_warrior
сообщение Jun 22 2006, 09:57
Сообщение #9


Профессионал
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380



Цитата
А насчет флага: что могло его сбросить?
Насколько я понимаю такое событие не документировано.


Если в разных вариантах кода работает по разному, наверное где-то сбрасываться. Почему я сразу и предложил прерывание - сразу за одним аппаратым событием, наступит следующее и вы _гарантированно_ отловите флаг, если такой имел место.
Если нет - тогда запишем в глюки smile.gif


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
90S1200
сообщение Jun 22 2006, 10:44
Сообщение #10


Участник
*

Группа: Новичок
Сообщений: 17
Регистрация: 5-05-06
Пользователь №: 16 806



Цитата(beer_warrior @ Jun 22 2006, 13:57) *
Цитата
А насчет флага: что могло его сбросить?
Насколько я понимаю такое событие не документировано.


Если в разных вариантах кода работает по разному, наверное где-то сбрасываться. Почему я сразу и предложил прерывание - сразу за одним аппаратым событием, наступит следующее и вы _гарантированно_ отловите флаг, если такой имел место.
Если нет - тогда запишем в глюки smile.gif

Что значит где то?
Вы конечно не видите исходника но то что измененая программа ни коим образом не касается USART
точно. Если она влияет то я могу предположить лишь то что это просто магия.
Непрямое влияние рабочих регистров на регистры ввода вывода.
ТО что это глюк это мне ясно. Но какова его природа?
Вы подсказали мне интересную мысль.
Вероятно при запрете передачи регистр также флагов сбрасывается.
Тогда вопрос а насколько эта ситуация типична?
Допустим работает таймер. Переполнился стал флаг. Если таймер потом отключить то флаг также сброситься?
Это что получается что флаги сбрасываются и при отключении устройств за которыми они закреплены?
Go to the top of the page
 
+Quote Post
DS
сообщение Jun 22 2006, 10:46
Сообщение #11


Гуру
******

Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250



Флаг при выключении, конечно сбрасывается. Иначе при включении состояние флага будет неопределенным.


--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
Go to the top of the page
 
+Quote Post
Kovrov
сообщение Jun 22 2006, 10:46
Сообщение #12


Мастер-фломастер
****

Группа: Свой
Сообщений: 611
Регистрация: 29-12-05
Пользователь №: 12 700



Цитата(90S1200 @ Jun 22 2006, 12:34) *
Цитата(Kovrov @ Jun 22 2006, 10:28) *

а что такое запрет на передачу
в смысле TXEN=0 ?

Точно

флаг UDRe или TXC?
скорее всего тхс да?


--------------------
Вон ПОПОВ, клоун клоуном, а радио изобрел!!
Go to the top of the page
 
+Quote Post
90S1200
сообщение Jun 22 2006, 12:09
Сообщение #13


Участник
*

Группа: Новичок
Сообщений: 17
Регистрация: 5-05-06
Пользователь №: 16 806



Цитата(DS_ @ Jun 22 2006, 14:46) *
Флаг при выключении, конечно сбрасывается. Иначе при включении состояние флага будет неопределенным.

А на основании чего вы сделали заключение что он сбрасывается?
Это ваши рассуждения или это данные даташитов или еще лучше эксперимент.
Лично мне ваш вывод не кажется само собой разумеющимся.


Цитата(Kovrov @ Jun 22 2006, 14:46) *
Цитата(90S1200 @ Jun 22 2006, 12:34) *


Цитата(Kovrov @ Jun 22 2006, 10:28) *

а что такое запрет на передачу
в смысле TXEN=0 ?

Точно

флаг UDRe или TXC?
скорее всего тхс да?

Ага txc
Go to the top of the page
 
+Quote Post
otrog
сообщение Jun 22 2006, 12:20
Сообщение #14


Местный
***

Группа: Свой
Сообщений: 232
Регистрация: 22-02-06
Из: Воронеж
Пользователь №: 14 589



Цитата(90S1200 @ Jun 22 2006, 16:09) *
Цитата(DS_ @ Jun 22 2006, 14:46) *

Флаг при выключении, конечно сбрасывается. Иначе при включении состояние флага будет неопределенным.

А на основании чего вы сделали заключение что он сбрасывается?
Это ваши рассуждения или это данные даташитов или еще лучше эксперимент.
Лично мне ваш вывод не кажется само собой разумеющимся.


Ага txc


DataSheet ATtiny2313/V стр.128:
Код
USART Control and Status Register A – UCSRA
                      TXC
Read/Write            R/W
Initial Value         0


Initial Value - значение бита после подачи питания или системного сброса.


--------------------
Истина рождается в спорах; но когда страсти кипят, истина испаряется.
Go to the top of the page
 
+Quote Post
90S1200
сообщение Jun 22 2006, 12:39
Сообщение #15


Участник
*

Группа: Новичок
Сообщений: 17
Регистрация: 5-05-06
Пользователь №: 16 806



Цитата(otrog @ Jun 22 2006, 16:20) *
Цитата(90S1200 @ Jun 22 2006, 16:09) *

Цитата(DS_ @ Jun 22 2006, 14:46) *

Флаг при выключении, конечно сбрасывается. Иначе при включении состояние флага будет неопределенным.

А на основании чего вы сделали заключение что он сбрасывается?
Это ваши рассуждения или это данные даташитов или еще лучше эксперимент.
Лично мне ваш вывод не кажется само собой разумеющимся.


Ага txc


DataSheet ATtiny2313/V стр.128:
Код
USART Control and Status Register A – UCSRA
                      TXC
Read/Write            R/W
Initial Value         0


Initial Value - значение бита после подачи питания или системного сброса.

Вы вообще понимаете что речь идет о включении внутреннего устройства кристалла(запуск USART и
использование им выводов) а не о включении микроконтроллера.
Или вы прочитали последний вопрос и решили дать исчерпывающий ответ?
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 17:44
Рейтинг@Mail.ru


Страница сгенерированна за 0.01395 секунд с 7
ELECTRONIX ©2004-2016