Перейти к содержанию
    

Коллеги, объясните что это за опрерация и применима ли она в WinAVR?

TWCR=((1<<TWEN)+(1<<TWINT)+(1<<TWSTO))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Коллеги, объясните что это за опрерация и применима ли она в WinAVR?

TWCR=((1<<TWEN)+(1<<TWINT)+(1<<TWSTO))

Запись в TWCR байта с установленными (равными 1) битами TWEN, TWINT и TWSTO.

Чаще пишут TWCR=((1<<TWEN)|(1<<TWINT)|(1<<TWSTO)) . Но результат тот же.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Запись в TWCR байта с установленными (равными 1) битами TWEN, TWINT и TWSTO.

Чаще пишут TWCR=((1<<TWEN)|(1<<TWINT)|(1<<TWSTO)) . Но результат тот же.

 

Спасибо. Меня смущает только то что в одной функции одновременно одна и таже операция записана по разному: так как привёл я и так как привели вы. Весьма странно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо. Меня смущает только то что в одной функции одновременно одна и таже операция записана по разному: так как привёл я и так как привели вы. Весьма странно.

Записать то можно по разному - всё равно это константа

#define TWI_BYTE 0x94

TWCR=TWI_BYTE; // тот же результат

 

22:           TWCR=((1<<TWEN)|(1<<TWINT)|(1<<TWSTO));
+00000070:   E984        LDI       R24,0x94       Load immediate
+00000071:   93800074    STS       0x0074,R24     Store direct to data space

Может почему-то автору так было удобней в тот момент.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Может почему-то автору так было удобней в тот момент.

Ага,клавиша "+" располагается удобнее на клавиатуре, или клавишу "|" заело.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Помогите, не могу понять:

#define CH 0x07

temp=I2C_Rx(NOT_ACK);

if(temp&(1<<CH)) - что за операция здесь происходит?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Помогите, не могу понять:

#define CH 0x07

temp=I2C_Rx(NOT_ACK);

if(temp&(1<<CH)) - что за операция здесь происходит?

 

единичка сдвигается на семь битов (0x07) и поразрядно складывается с переменной temp.

Если седьмой бит переменной temp равен единице, то их побитовая (поразрядная) сумма будет больше нуля, а если значение в скобках if больше нуля, то выполнится соотвествующий код. в противном случае выполнение перейдет на else

1<<CH = 1<<0x07 = 10000000

допустим значение переменной temp = 11011100, тогда

11011100

& 10000000

____________

10000000

 

или temp = 01110000

 

01110000

&10000000

____________

00000000

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

единичка сдвигается на семь битов (0x07) и поразрядно складывается с переменной temp.

 

Большое спасибо, теперь всё ясно. Я то думал что 0х07 сдвигается на один бит, получался полный ступор.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

18.03.2010 в 15:24, Dmitro25 сказал:

Подскажите, как в IAR узнать размер кода, который получился после компиляции?

 

18.03.2010 в 16:14, Сергей Борщ сказал:

Tools->Options->Messages->Show build messages выбрать all.

А еще можно включить генерацию .map - файла (Project->Options->Linker->Listing) и в нем посмотреть детально - какая функция сколько заняла и куда попала. То же и по переменным.

подскажите как сделать это в IAR 8.3? у меня в диалоге нет выпадающего списка. есть только кнопка "enable all dialogs"

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

55 минут назад, RusikOk сказал:

подскажите как сделать это в IAR 8.3?

Увы, уже лет 8 не пользуюсь ИАРом. Может кто-то другой подскажет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, RusikOk сказал:

подскажите как сделать это в IAR 8.3? у меня в диалоге нет выпадающего списка. есть только кнопка "enable all dialogs"

Во всех версиях IAR это устроен одинаково.

Главное меню: Project -> Options -> Linker -> List -> ставите галочку возле "Generate linker map file". Это для того, чтобы линкер *.map файл в директорий List писал.

И в этом файле после компиляции найдете интересующую вас информацию - она в самом его конце. Например, у меня так:

  51'531 bytes of readonly  code memory
   1'291 bytes of readonly  data memory
  12'689 bytes of readwrite data memory

Errors: none
Warnings: none

А такого, чтобы вам эту информацию в каком-то окне само показывало, - этого нет, map-файл надо читать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 минуту назад, Xenia сказал:

А такого, чтобы вам эту информацию в каком-то окне само показывало, - этого нет, map-файл надо читать.

в 7й версии было

83664b2bf626t.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А такого, чтобы вам эту информацию в каком-то окне само показывало, - этого нет, map-файл надо читать.


Не поверите, шайтан (-8Ж , само показывает, но при компиляции\сборке. Вызывается "магией" View-->Messages-->Build; окошко будет или пристыкованное или плавающее.
Проверено: EWARM 3.xx, 6.30, 7.70, 8.40, EW430 6.30, EW8051 10.30 - всё одинаково.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

33 минуты назад, RusikOk сказал:

в 7й версии было

Тогда только это могу посоветовать: вызовите контекстное меню в окне Messages (для этого правой кнопкой мыши по нему кликнуть надо) и там переставьте галочку с Messages на All. Получите много мусора :), среди которого будут и вожделенные вами строки.

 

 

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

15 минут назад, Obam сказал:


Не поверите, шайтан (-8Ж , само показывает, но при компиляции\сборке. Вызывается "магией" View-->Messages-->Build; окошко будет или пристыкованное или плавающее.
Проверено: EWARM 3.xx, 6.30, 7.70, 8.40, EW430 6.30, EW8051 10.30 - всё одинаково.

Вы правы, не поверю

fbec31684d0dt.jpg

 

13 минут назад, Xenia сказал:

Тогда только это могу посоветовать: вызовите контекстное меню в окне Messages (для этого правой кнопкой мыши по нему кликнуть надо) и там переставьте галочку с Messages на All. Получите много мусора :), среди которого будут и вожделенные вами строки.

об этом я уже писал. выпадающего списка просто нету

3e40ce50b76ct.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...