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

 
 
> Не устанавливается флаг RXC0
koluna
сообщение Apr 30 2008, 11:04
Сообщение #1


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

Группа: Участник
Сообщений: 1 040
Регистрация: 3-01-07
Пользователь №: 24 061



Зравствуйте!

В функции обработки прерывания по приёму байта от UART после приёма одного байта не устанавливается флаг RXC0 микроконтроллера (ATmega88, WinAVR).

do
{
// всякая ерунда
}
while (!(UCSR0A & (1 << RXC0)));

Т. е., не выходим из цикла!!!
Байты точно доходят до МК.
Приём не запрещал...

Почему?

Спасибо!


--------------------
Благодарю заранее!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 4)
Сергей Борщ
сообщение Apr 30 2008, 12:27
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(n_bogoyavlensky @ Apr 30 2008, 14:04) *
Приём не запрещал...
Тогда покажите, как вы его разрешали, т.е. всю инициализацию USART. И покажите функцию обработки прерывания. Это вы в прерывании в цикле крутитесь?


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
vet
сообщение Apr 30 2008, 12:44
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 550
Регистрация: 16-06-04
Из: Казань
Пользователь №: 32



проверять флаг приёма символа в прерывании по приёму символа - странная идея.


--------------------
Главная линия этого опуса ясна мне насквозь!
Go to the top of the page
 
+Quote Post
koluna
сообщение Apr 30 2008, 13:01
Сообщение #4


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

Группа: Участник
Сообщений: 1 040
Регистрация: 3-01-07
Пользователь №: 24 061



Цитата(vet @ Apr 30 2008, 16:44) *
проверять флаг приёма символа в прерывании по приёму символа - странная идея.


Пришедший байт - "Стоп" для работы. Т. е., по нему мы должны выйти из цикла.
До этого был уже принят один байт - байт команды smile.gif

Вопрос снимается.
Это мой глюк. Совсем не в прошивке контроллера.
Спасибо за помощь всем!

Цитата(Сергей Борщ @ Apr 30 2008, 16:27) *
Тогда покажите, как вы его разрешали, т.е. всю инициализацию USART. И покажите функцию обработки прерывания. Это вы в прерывании в цикле крутитесь?


RXEN устанавливал. Всё принимается!
Функция обработки прерывания у меня просто огромна! smile.gif
В прерывании в цикле кручусь. Это плохо?


--------------------
Благодарю заранее!
Go to the top of the page
 
+Quote Post
mdmitry
сообщение Apr 30 2008, 16:18
Сообщение #5


Начинающий профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648



Цитата(n_bogoyavlensky @ Apr 30 2008, 17:01) *
В прерывании в цикле кручусь. Это плохо?

В зависимости от того, что делаете может быть и плохо.
Цикл в прерывании блокирует какие-либо другие действия пока из него не выйдите. А если цикл стал бесконечный? smile.gif
Я делаю короткие прерывания по мере возможностей. Сделал необходимое и возвратился к выполнению основной программы. В основной программе можно и циклы на ожидания флагов поставить при необходимости.


--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 25th June 2025 - 10:41
Рейтинг@Mail.ru


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