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

 
 
> Повторная запись в порт
TriS
сообщение Dec 28 2010, 14:06
Сообщение #1





Группа: Участник
Сообщений: 9
Регистрация: 21-07-10
Пользователь №: 58 536



Пишу код под attiny2313, на CAVR. Сталкнулся с такой вот проблемой.

порт В4 настроен на выход, дефолтом на нем 0.
код:
.....
PORTB |= 1<<4;
delay_ms(500);
PORTB |= 1<<4;
.....

повторная запись единички в регистр переводит его состояние в ноль, как от этого избавиться? мне все рано что было на выводе до исполнения команды, но когда я хочу туда записать 1, я хочу быть уверен что порт не упадет в 0.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Marian
сообщение Dec 30 2010, 16:24
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 148
Регистрация: 23-02-07
Пользователь №: 25 618



Цитата(TriS @ Dec 28 2010, 20:06) *
PORTB |= 1<<4;
delay_ms(500);
PORTB |= 1<<4;

Раз на CVAVR ваш код равен
PORTB.4=1;
delay_ms(500);
PORTB.4=1;

И тот и другой код должен работать, но компилятор после оптимизации, скорее всего, вторую установку порта выкинет и в протеусе вы ее не увидите. ( У вас в проге такого куска то и не найти)
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Dec 30 2010, 16:46
Сообщение #3


Гуру
******

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



QUOTE (Marian @ Dec 30 2010, 21:24) *
но компилятор после оптимизации, скорее всего, вторую установку порта выкинет
С чего бы это ему вдруг выкинуть обращение к volatile-переменной? Если все же выкинет - в топку такой компилятор.


--------------------
На любой вопрос даю любой ответ
"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



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

 


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


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