Реклама на сайте DatasheetsDatasheets

KAZUS.RUN - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Книги и журналы
FAQ по электронике

  Datasheets
Поиск SMD
Онлайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Схемы и проекты
Принципиальные схемы
  Программы
Каталог сайтов
Калькуляторы
  Форумы по электронике
Помощь проекту

AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR...

 
Опции темы

Зашёл в тупик Мегой на приёме

Непрочитано 07.07.2015, 09:02  
OlegNZH
Почётный гражданин KAZUS.RUN
 
Регистрация: 28.02.2010
Сообщений: 2,294
Сказал спасибо: 52
Сказали Спасибо 460 раз(а) в 391 сообщении(ях)
OlegNZH на пути к лучшему
По умолчанию Зашёл в тупик Мегой на приёме

прерывание как-то не так работает
(Мега не важно какая 8-16)
Коротко
Есть прерывание
Код:
interrupt [USART_RXC] void usart_rx_isr(void)
{
//Пусто
}
и
Код:
void main(void) {
while(1){
             run_();
            }
}
Приём и прерывание по приёму разрешены

Так вот

run_() пилит , всё прекрасно....пока не придёт первое прерывание...

Далее Чудеса.

run_() начинает тормозить на пустышку страшным образом, вплоть до того , что если даже в обработчике ПРОСТО объявляешь переменную- в разы .
TXD садишь на плюс - бесполезно.
Оптимизация выключена (пишу в CV- на Работе...а дома комп сдох)



Я не понял юмора - какого чёрта он(обработчик) на себя одеяло тянет?Мало того- отдаёт ведь временно.
Взяло прерывание- запретил остальные , вышел - отпустил.
PS Давно я здесь не был ..Чт-то Набор тормозит жутко ..Реклама? как убрать?
PPS я понимаю , что Чудес не бывает! И ни у кого Такой ситуации не было ...Я просто задолбался , и Железяку менял , и платы...всё под копирку , хоть башкой об стену...И упрощал до безобразия, заглушками .Понятно , что я дурак - где-то что-то не досмотрел .. Ну...бывают такие стуации..
Реклама:

Последний раз редактировалось OlegNZH; 07.07.2015 в 10:06.
OlegNZH вне форума  
Непрочитано 07.07.2015, 10:53  
Paul74s
Частый гость
 
Регистрация: 19.05.2014
Сообщений: 48
Сказал спасибо: 5
Сказали Спасибо 11 раз(а) в 11 сообщении(ях)
Paul74s на пути к лучшему
По умолчанию Re: Зашёл в тупик Мегой на приёме

А нога RXD настроена на прием ? и подтянута к + ?
Paul74s вне форума  
Непрочитано 07.07.2015, 11:09  
nml
Супер-модератор
 
Аватар для nml
 
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,394
Сказал спасибо: 2,016
Сказали Спасибо 1,356 раз(а) в 591 сообщении(ях)
nml на пути к лучшему
По умолчанию Re: Зашёл в тупик Мегой на приёме

Сообщение от OlegNZH Посмотреть сообщение
Есть прерывание
Код:
interrupt [USART_RXC] void usart_rx_isr(void)
{
//Пусто
}
run_() пилит , всё прекрасно....пока не придёт первое прерывание...

Далее Чудеса.

run_() начинает тормозить на пустышку страшным образом, вплоть до
В обработчике прерывания на самом деле пусто?
Тогда так и будет. Ибо пришел байт, выставился флаг запроса прерывания. Идем в прерывание и выходим. А флаг-то стоит! Он сбрасывается при чтении UDR. То есть вышли из прерывания, выполнили одну команду и обратно.
__________________
[ жизнь приятна и красива, если выпить литр пива ]
nml вне форума  
Сказали "Спасибо" nml
OlegNZH (07.07.2015)
Непрочитано 07.07.2015, 15:05  
OlegNZH
Почётный гражданин KAZUS.RUN
 
Регистрация: 28.02.2010
Сообщений: 2,294
Сказал спасибо: 52
Сказали Спасибо 460 раз(а) в 391 сообщении(ях)
OlegNZH на пути к лучшему
По умолчанию Re: Зашёл в тупик Мегой на приёме

Сообщение от nml Посмотреть сообщение
В обработчике прерывания на самом деле пусто?
Тогда так и будет. Ибо пришел байт, выставился флаг запроса прерывания. Идем в прерывание и выходим. А флаг-то стоит! Он сбрасывается при чтении UDR. То есть вышли из прерывания, выполнили одну команду и обратно.
Вот Вы сказанули , я ажно поперхнулся, ушёл с Работы забыв куртку и деньги ...опомнился только , когда за проезд пришлось платить (благо мелочь в брюках была)....
Всё верно .я действовал по классике (FE ? UPE ? DOR) верны ? тогда читаем UDR. Но не учёл , что это в прерывании , и если байду подсуну , то никакого чтения UDR не будет.А байду я и подсовывал! - у меня мультипроцессорная система на 30 клиентов , и физически не мог всех перепрошивать , когда параметры Сервера менял ...я был больше озабочен 9-й бит не потерять , который нужно заранее сохранить ....Вот и подсовывал от сервера всякую муйню , вплоть , когда уже в отчаяние перешёл - отвёрткой старт бит. Она меня вежливо посылала ...
(...When the Receive Complete Interrupt Enable (RXCIE) in UCSRB is set, the USART
Receive Complete Interrupt will be executed as long as the RXC Flag is set (provided
that global interrupts are enabled). When interrupt-driven data reception is used, the
receive complete routine must read the received data from UDR in order to clear the
RXC Flag, otherwise a new interrupt will occur once the interrupt routine terminates...) .... и по Вектору после каждой операции заглядывала , на RETI....

Я чуть не поседел, тупица я.
Жестокий Вы . СПАСИБО!
PS А до пустышки я уж дошёл всё вырезая вусмерть , остался скелет , который вёл себя аналогичным образом.
поставлю
Код:
       bit_rx8=UCSRB & (1‹‹RXB8);
       data=UDR;
ДО проверки истинности Данных .А там уже буду смотреть, что пришло.
Ещё раз СПАСИБО!

Последний раз редактировалось OlegNZH; 07.07.2015 в 15:36.
OlegNZH вне форума  
Непрочитано 07.07.2015, 17:33  
OlegNZH
Почётный гражданин KAZUS.RUN
 
Регистрация: 28.02.2010
Сообщений: 2,294
Сказал спасибо: 52
Сказали Спасибо 460 раз(а) в 391 сообщении(ях)
OlegNZH на пути к лучшему
По умолчанию Re: Зашёл в тупик Мегой на приёме

Сообщение от Paul74s Посмотреть сообщение
А нога RXD настроена на прием ? и подтянута к + ?
А её и не нужно настраивать (как и TXD)

When the receiver is enabled, the normal pin operation of the
RxD pin is overridden by the USART and given the function as the receiver’s serial
input.

USART сам всё под себя берёт.
PS аааа - насчёт подтяжки .. да кому она нужна ..~50К на приёмнике?Кому нужно - ставит уже по-сути.Например на оптроне 6N137 - от 4K и ниже нормируется. Чем больше скорость- тем меньше резистор.

Последний раз редактировалось OlegNZH; 07.07.2015 в 17:56.
OlegNZH вне форума  
Непрочитано 08.07.2015, 23:06  
nml
Супер-модератор
 
Аватар для nml
 
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,394
Сказал спасибо: 2,016
Сказали Спасибо 1,356 раз(а) в 591 сообщении(ях)
nml на пути к лучшему
По умолчанию Re: Зашёл в тупик Мегой на приёме

Сообщение от OlegNZH Посмотреть сообщение
Я чуть не поседел, тупица я.
Так давно известно, чем ошибка глупее - тем дольше искать...
__________________
[ жизнь приятна и красива, если выпить литр пива ]
nml вне форума  
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 10:53.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.