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

 
 
> Сохранение SREG, идут лишние посылки по UART
paskal
сообщение Apr 2 2010, 17:18
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 352
Регистрация: 29-10-06
Из: Тула
Пользователь №: 21 769



У меня программа принимает некоторый пакет байт по UARTу, затем шлет ответ. И прием и отправку делаю по прерываниям. При этом отсылаемый пакет иногда дублируется. Если же в основной программе после разрешения прерывания передатчика вставить паузу не менеее длины посылки, то работает идеально.
Напрашивается вывод что в обработчике прерывания по передаче меняется SREG, и цикл ожидания по команде BRNE сваливается на передачу еще одного пакета.
Всвязи с этим чайницкий вопрос. А SREG в обработчике сохраняется? И если нет, то как его сохранить?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ILYAUL
сообщение Apr 5 2010, 06:59
Сообщение #2


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

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Но в случаях без вложенных прерываний волне возможно обойтись и in savesreg, sreg и соответствеено out .... Правильно ?


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
Палыч
сообщение Apr 5 2010, 07:52
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(ILYAUL @ Apr 5 2010, 09:59) *
Но в случаях без вложенных прерываний волне возможно обойтись и in savesreg, sreg и соответствеено out .... Правильно ?
Т.е. Вы хотите обойтись без сохранения/восстановления SREG в прерываниях? Ни в коем случае!

Или: вопрос был о том, нужно ли всё-же сохранять регистр savereg? Если этот регистр предназначен исключительно для сохранения SREG и для других целей не используется нигде, то - да, можно его не сохранять; но в противном случае - сохранять/восстанавливать обязательно.
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Apr 5 2010, 10:58
Сообщение #4


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

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Цитата(Палыч @ Apr 5 2010, 11:52) *
Т.е. Вы хотите обойтись без сохранения/восстановления SREG в прерываниях? Ни в коем случае!

Или: вопрос был о том, нужно ли всё-же сохранять регистр savereg? Если этот регистр предназначен исключительно для сохранения SREG и для других целей не используется нигде, то - да, можно его не сохранять; но в противном случае - сохранять/восстанавливать обязательно.

Да имено так , я сохраняю в отдельном регистре , предназначенный именно под SREG и конечно для других целей его не использую.
В приведённом мною коде ( огрызок ) , нет ещё одного прерывания , которое используется в программе , но несмотря на то что , я не толкаю SAVESREG в стек , данные возвращаются всегда коректно. Поэтому и полемика.
Поэтому и не видел смысла пушить его. Хотя надо отметиь , что вложенных прерываний в программе нет.

Сообщение отредактировал ILYAUL - Apr 5 2010, 10:59


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
V_G
сообщение Apr 5 2010, 12:20
Сообщение #5


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

Группа: Свой
Сообщений: 1 818
Регистрация: 15-10-09
Из: Владивосток
Пользователь №: 52 955



Цитата(ILYAUL @ Apr 5 2010, 21:58) *
Хотя надо отметиь , что вложенных прерываний в программе нет.

Ну, в общем-то в мегах все остальные прерывания запрещаются при обработке прерываний. Так что если вы насильно не поместите инструкцию SEI в код, вложенных прерываний не будет.
Другое дело - Xmega, где имеется механизм приоритетов прерываний, и о вложенных прерываниях надо заботиться, в том числе грамотной расстановкой приоритетов.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- paskal   Сохранение SREG   Apr 2 2010, 17:18
- - SasaVitebsk   Если вы про Си, то сохраняется. А вообще ничего н...   Apr 2 2010, 18:34
|- - paskal   Цитата(SasaVitebsk @ Apr 2 2010, 21:34) Е...   Apr 2 2010, 19:01
|- - ILYAUL   Цитата(paskal @ Apr 2 2010, 23:01) На асс...   Apr 2 2010, 19:17
|- - V_G   Цитата(ILYAUL @ Apr 3 2010, 06:17) .DEF ...   Apr 3 2010, 01:23
|- - ILYAUL   Цитата(V_G @ Apr 3 2010, 05:23) ............   Apr 3 2010, 13:55
|- - defunct   Цитата(ILYAUL @ Apr 3 2010, 16:55) Не пон...   Apr 3 2010, 17:11
|- - ILYAUL   ЦитатаИ что это за Push SREG? SREG в AVR находится...   Apr 3 2010, 21:34
|- - demiurg_spb   Вы не поняли, так делать плохо: Цитата(ILYAUL ...   Apr 4 2010, 18:41
|- - ILYAUL   Цитата(demiurg_spb @ Apr 4 2010, 22:41) В...   Apr 4 2010, 20:14
|- - Палыч   Цитата(ILYAUL @ Apr 4 2010, 23:14) Есть у...   Apr 5 2010, 05:44
|- - V_G   Цитата(Палыч @ Apr 5 2010, 16:44) Прежде ...   Apr 5 2010, 06:24
- - paskal   Итак, все действительно разрешилось сохранением SR...   Apr 5 2010, 17:35


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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 18:18
Рейтинг@Mail.ru


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