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

 
 
> Atmega3250 PORTJ (7ми битный порт), проблема с установкой произвольного бита
toshas
сообщение Sep 18 2008, 17:42
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 372
Регистрация: 14-02-06
Пользователь №: 14 339



Добрый вечер!

есть atmega3250, PORTJ имеет только 7 бит, программа codevision 1.24.7f:
при явном задании PORTJ=0b0000010 бит1 правильно ставится в "1" и на ножке 5 вольт.
необходимо изменить бит1 не затронув остальные.
конструкция PORTJ = PORTJ ^ (1 << 1) работающая на 8ми битных портах здесь дает следующее:
на ножке вольтметр показывает 2.5В и соответственно осциллограф периодическое переключение 0-1

как правильно написать код ?

спасибо!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Qwertty
сообщение Sep 18 2008, 19:22
Сообщение #2


Местный
***

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



Цитата(toshas @ Sep 18 2008, 21:42) *
Добрый вечер!

есть atmega3250, PORTJ имеет только 7 бит, программа codevision 1.24.7f:
при явном задании PORTJ=0b0000010 бит1 правильно ставится в "1" и на ножке 5 вольт.
необходимо изменить бит1 не затронув остальные.
конструкция PORTJ = PORTJ ^ (1 << 1) работающая на 8ми битных портах здесь дает следующее:
на ножке вольтметр показывает 2.5В и соответственно осциллограф периодическое переключение 0-1
как правильно написать код ?
спасибо!

Как обычно:
Код
#define LED_PIN  1
PORTJ |= (1<<LED_PIN); // установить 1
PORTJ &= ~(1<<LED_PIN); // 0 соответственно

Ваша конструкция (1 << 1) малоинформативна, лучше сразу воспользоваться помощью препроцессора и определить такие константы, как выводы порта через #define.
Go to the top of the page
 
+Quote Post



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

 


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


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