Не, где-то ты недосмотрел.
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Сергей Борщ 15 января 2003 г. 18:29
В ответ на: Коллеги! Можно ли в IAR for MSP430 задать битовую структуру размером байт ? отправлено NickB 15 января 2003 г. 15:27

Все нормально. Вот из help:
Bitfields in expressions will have the same data type as the base type (signed or unsigned char, short, int, or long).

К переменной, объявленной как


typedef struct
{
unsigned char BufferEmpty:1;
unsigned char MediaBusy:1;
unsigned char RemoteBusy:1;
unsigned char RxXIDData:1;
unsigned char RxLMPData:1;
unsigned char TxLMPData:1;
}LAPStatusType;

LAPStatusType LapStatus;


идет обращение байтовыми командами:

\ 015A F2D01000 BIS.B #16,&LAPStatus
\ 015E 0800
118 LAPStatus.RxLMPData=1;

Возможно тебя смущает то, что память под следующую переменную выделяется с "дыркой" в один байт? Это связано с тем, что 430 не умеет читать слова с нечетного адреса. Поэтому если в С-исходнике у тебя за объявлением переменной размером в байт объявлена переменна размером в слово, то она будет выровнена по границе слова и при необходимости останется дырка. А если вслед за битовым полем ты объявишь байтовую переменную, она как раз в эту дырку и упадет. Так что смотреть в map и тасовать объявления в исходнике.

А что у тебя выдает sizeof(CONTROL_REGISTER)?

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru