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

 
 
> Два вложенных бесконечных цикла вызывают сбой USART
Anub
сообщение Sep 27 2008, 15:24
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 47
Регистрация: 26-05-08
Пользователь №: 37 825



ATTINY2313
8мГц
Код
while(1){
          if (setTimeFunctionEnabled){
              while(1){
                      ;                  
             };
          }
          if (PINB==0b11111011){  
              setTimeFunctionEnabled = 1;
              while(PINB==0b11111011){};
          }        
    };

Вот такая конструкция приводит к тому что USART начинает работать хз как. При отправке одного или двух символов все приходит нормально, при отправке трех приходит битая строка в которой частично или все другие символы, при попытке отправить четыре и более символов не приходит вообще ничего, либо приходит полный бред. При удалении цикла из строки три все приходит в норму. Я подозреваю что происходит нехватка производительности и контроллер не успевает в такт протоколу отправки. Какие мнения, что это еще может быть?

Сообщение отредактировал Anub - Sep 27 2008, 15:26
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
rezident
сообщение Sep 27 2008, 15:47
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



У вас в четвертой строке закрывающий ; лишниий что ли? Или что-то пропустили? Стиль оформления просто ужасный sad.gif Что вообще тут должно выполнятся и как этот кусок связан с вложенными прерываниями? У оператора while(1) в третьей строке тело какое-то имеется или он в бесконечный цикл уходит?
Go to the top of the page
 
+Quote Post
Anub
сообщение Sep 27 2008, 16:12
Сообщение #3


Участник
*

Группа: Новичок
Сообщений: 47
Регистрация: 26-05-08
Пользователь №: 37 825



Цитата(rezident @ Sep 27 2008, 19:47) *
У вас в четвертой строке закрывающий ; лишниий что ли? Или что-то пропустили? Стиль оформления просто ужасный sad.gif Что вообще тут должно выполнятся и как этот кусок связан с вложенными прерываниями? У оператора while(1) в третьей строке тело какое-то имеется или он в бесконечный цикл уходит?

Конечно в цикле есть код, поместив который сюда у вас возникло бы раз в десять больше вопросов, в нем ничего необычного не происходит, присваивается несколько значений переменным, но корнями он уходит в глубину программы, я не думаю что у кого то здесь возникнет желание разбираться в программе из 1500 операторов. Плюс это не ничего не несет, что он там есть что его нет, результат один и тот же. А причем тут прерывания? Они вообще никакого отношения к этому циклу не имеют. Да он уходит в бесконечный цикл.
Стиль от программистов trolltech, опираюсь так сказать на авторитетов...
Go to the top of the page
 
+Quote Post



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

 


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


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