Do you have a question? Post it now! No Registration Necessary
- Harry Zhurov
December 25, 2003, 4:57 pm

Thu, 25 Dec 2003 18:49:05 +0300 Unrau Alexander wrote to All:
[...]
UA> Т.е. хочется просто написать чтоот типа:
UA> uint32_t dwInternalVariable1;
UA> uint32_t dwInternalVariable2;
UA> #define dwExternalRegisterLitleEndian ( *((volatile uint32_t*)(0xXXXX)) )
UA> #define dwExternalRegisterBigEndian ( *((volatile uint32_t*)(0xYYYY)) )
UA> ...
UA> dwInternalVariable1 = dwExternalRegisterLitleEndian;
UA> dwInternalVariable2 = dwExternalRegisterBigEndian;
UA> ...
UA> Может секции какие отдельно прописать на эти девайсы и задать для них
UA> порядок
UA> байт. Или тип данных какойнить обратный применить.
UA> А также можно ли его (avr-gcc) обязать писать/читать 16 и 32 разрядные
UA> слова
UA> в определённом порядке?
UA> Hу типа сначала младший байтик, потом старший, или наоборот.
Это врядли.
UA> Подсознательно мне мыслится что всё это не возможно, но мало-ли?
UA> Можно наверное c++ обёртку смострячить, но что-то как-то не хочется. :(
Почему? Как раз тот самый случай, когда С++ рулит. Причем, ты уже почти
написал нужный код, осталось только добавить ключевое слово class, пару
фигурных скобок да макросы на функции заменить.
// ---------------------------------------
class TSlon
{
public:
TSlon() : Value(0) { }
void GetBE() { Value = ...; }
void GetLE() { Value = ...; }
void operator=(uint32 x) { Value = x; }
operator uint32 () const { return Value; }
private:
uint32 Value;
};
TSlon s1, s2;
void f()
{
s1.GetBE();
s2.GetLE();
uint32 a = s1;
a += s2; // :)
... // и так далее
}
// ---------------------------------------
Если нужно не только читать, но и писать такими порядками, то добавить еще
пару функций.
[...]
UA> Т.е. хочется просто написать чтоот типа:
UA> uint32_t dwInternalVariable1;
UA> uint32_t dwInternalVariable2;
UA> #define dwExternalRegisterLitleEndian ( *((volatile uint32_t*)(0xXXXX)) )
UA> #define dwExternalRegisterBigEndian ( *((volatile uint32_t*)(0xYYYY)) )
UA> ...
UA> dwInternalVariable1 = dwExternalRegisterLitleEndian;
UA> dwInternalVariable2 = dwExternalRegisterBigEndian;
UA> ...
UA> Может секции какие отдельно прописать на эти девайсы и задать для них
UA> порядок
UA> байт. Или тип данных какойнить обратный применить.
UA> А также можно ли его (avr-gcc) обязать писать/читать 16 и 32 разрядные
UA> слова
UA> в определённом порядке?
UA> Hу типа сначала младший байтик, потом старший, или наоборот.
Это врядли.
UA> Подсознательно мне мыслится что всё это не возможно, но мало-ли?
UA> Можно наверное c++ обёртку смострячить, но что-то как-то не хочется. :(
Почему? Как раз тот самый случай, когда С++ рулит. Причем, ты уже почти
написал нужный код, осталось только добавить ключевое слово class, пару
фигурных скобок да макросы на функции заменить.
// ---------------------------------------
class TSlon
{
public:
TSlon() : Value(0) { }
void GetBE() { Value = ...; }
void GetLE() { Value = ...; }
void operator=(uint32 x) { Value = x; }
operator uint32 () const { return Value; }
private:
uint32 Value;
};
TSlon s1, s2;
void f()
{
s1.GetBE();
s2.GetLE();
uint32 a = s1;
a += s2; // :)
... // и так далее
}
// ---------------------------------------
Если нужно не только читать, но и писать такими порядками, то добавить еще
пару функций.
--
H.Z.
harry.zhurov<antispam::at>ngs<antispam::period>ru
H.Z.
harry.zhurov<antispam::at>ngs<antispam::period>ru
We've slightly trimmed the long signature. Click to see the full one.

Re: Вопрос по avr-gcc
Hello Unrau.
25 Dec 03 18:49, you wrote to all:
UA> Странного хочется.
UA> А можно ли заставить avr-gcc для разных адресных пространств (внешней
UA> памяти)
UA> использовать разный порядок байт (big и litle endian).
Да вроде нет.
UA> Hапример у меня 2 девайса на внешней шине которые доступны как
UA> внешняя
UA> память, но имеют разный порядок байт (с 16 и 32 разрядными
UA> регистрами), и очень не хочется обращаться к одному из них побайтно и
UA> складывать прочитанные байтики в половинки/четвертинки внутренних
UA> переменных при чтении или доставать байтики из этих
UA> половинок/четвертинок при записи.
Я бы сделал ассемблерные макросы и обращался через них. (Примеры можно найти
в .h файлах, полное описание где-то в недрах документации)
UA> А также можно ли его (avr-gcc) обязать писать/читать 16 и 32 разрядные
UA> слова в определённом порядке? Hу типа сначала младший байтик, потом
UA> старший, или наоборот.
avr-gcc имеет встроеный порядок записи/чтения байтов в слове тот, который нужен
для правильного обращения к внутренним 16-битным регистрам. Менять его я бы не
стал. Сделал бы макрос.
UA> Можно наверное c++ обёртку смострячить, но что-то как-то не хочется.
UA> :(
Это к HZ ;)
Alexey
25 Dec 03 18:49, you wrote to all:
UA> Странного хочется.
UA> А можно ли заставить avr-gcc для разных адресных пространств (внешней
UA> памяти)
UA> использовать разный порядок байт (big и litle endian).
Да вроде нет.
UA> Hапример у меня 2 девайса на внешней шине которые доступны как
UA> внешняя
UA> память, но имеют разный порядок байт (с 16 и 32 разрядными
UA> регистрами), и очень не хочется обращаться к одному из них побайтно и
UA> складывать прочитанные байтики в половинки/четвертинки внутренних
UA> переменных при чтении или доставать байтики из этих
UA> половинок/четвертинок при записи.
Я бы сделал ассемблерные макросы и обращался через них. (Примеры можно найти
в .h файлах, полное описание где-то в недрах документации)
UA> А также можно ли его (avr-gcc) обязать писать/читать 16 и 32 разрядные
UA> слова в определённом порядке? Hу типа сначала младший байтик, потом
UA> старший, или наоборот.
avr-gcc имеет встроеный порядок записи/чтения байтов в слове тот, который нужен
для правильного обращения к внутренним 16-битным регистрам. Менять его я бы не
стал. Сделал бы макрос.
UA> Можно наверное c++ обёртку смострячить, но что-то как-то не хочется.
UA> :(
Это к HZ ;)
Alexey
Site Timeline
- » Re^2: микропотребляющий микроконтроллер :)
- — Next thread in » Microcontrollers (Russian)
-
- » AVR-Butterfly
- — Previous thread in » Microcontrollers (Russian)
-
- » По моему это гениально
- — Newest thread in » Microcontrollers (Russian)
-
- » (PDF) Hair and Scalp Diseases by Amy J. McMichael
- — The site's Newest Thread. Posted in » Embedded Programming
-