Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Порт G в atmega128
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
nagserg
Хочу в Code Vision 1.24.6 сделать порт G как обычный порт входа-выхода. Компилятор ругается на PORTG.0=0, т.е. биту 0 порта G присвоить 0, а когда PORTC.0=0 нормально воспринимает (компилятор). Почему так?
MALLOY2
компилято здесь не причем это аппаратная фича PORTG не имеет битовую адресацию в отличии от порта С, нужно делать так ->

Установка бита порта PORTG|=(1<<3) установить 3 бит порта
Сброс бита порта PORTG&=~(1<<3) сбросить 3 бит порта
yung
Цитата(MALLOY2 @ Jul 19 2005, 17:57)
компилято здесь не причем это аппаратная фича PORTG не имеет битовую адресацию в отличии от порта С, нужно делать так ->

Установка бита порта PORTG|=(1<<3) установить 3 бит порта
Сброс бита порта PORTG&=~(1<<3) сбросить 3 бит порта
*


Мне очень интересно стало, что за битовая адресация а АВР, это ведь не 51-й. Полез в PDF. Ответ правильный, не не совсем понятный. Просто адреса регистров указанного порта лежат за пределами той области, где работают команды SBI и CBI. Компилятор видимо заточен как раз под них. Т.е. это в определенной мере недоработка компилятора, т.к. он не опознает, что адрес лежит вне допустимой области. Кстати, попробовал PORTC.0=0 в ICC, которым и пользуюсь, так он даже этого не понимает.
nagserg
Цитата(MALLOY2 @ Jul 19 2005, 16:57)
компилято здесь не причем это аппаратная фича PORTG не имеет битовую адресацию в отличии от порта С, нужно делать так ->

Установка бита порта PORTG|=(1<<3) установить 3 бит порта
Сброс бита порта PORTG&=~(1<<3) сбросить 3 бит порта
*


Да, заработало, спасибо
Panych
Столкнулся с этим же под IAR, но эти команды у меня не возымели эффекта - так и не удалось выставить порт в "1".

Код
DDRG |= ( 1 << 2 );
PORTG |= ( 1 << 2 );


Отключения режима совместимости с 103-ей не нашел...

Листинг первой строки:
Код
     41            // настройка портов MPU
     42            DDRG |= (1<<2);
   \   00000002   91100064           LDS     R17, 100
   \   00000006   6014               ORI     R17, 0x04
   \   00000008   93100064           STS     100, R17


Что я проглядел?
=AVR=
Отключение режима совместимости с 103-ей делается установкой В ЕДИНИЦУ фуз-бита M103C=1 (при программировании программатором)
Qwertty
Цитата(Panych @ Sep 11 2007, 17:37) *
Отключения режима совместимости с 103-ей не нашел...
...
Что я проглядел?

Вот отключение режима и проглядели. Это фьюз M103C, т.е. совместимость отключается с помощью программатора.
Panych
Точно!
И ведь на самом видном месте! smile.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.