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

 
 
> WinAVR и переменные
Guest_Serg79_*
сообщение Sep 27 2006, 07:21
Сообщение #1





Guests






Как разместить глобальную переменную по определенному адресу в памяти, при использовании WinAVR.
Например:
Код
/*
* Нужно разместить по адресу 0x0110
*/
char flag;

Как мне это сделать?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Сергей Борщ
сообщение Sep 27 2006, 08:30
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(Serg79 @ Sep 27 2006, 10:21) *
Как разместить глобальную переменную по определенному адресу в памяти, при использовании WinAVR.
Например:
Код
/*
* Нужно разместить по адресу 0x0110
*/
char flag;

Как мне это сделать?
Посмотреть в заголовочных файлах из комплекта компилятора как там по абсолютным адресам размещаются переменные портов, таймеров и другой периферии.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Guest_Serg79_*
сообщение Sep 27 2006, 08:59
Сообщение #3





Guests






Цитата(Сергей Борщ @ Sep 27 2006, 12:30) *
Цитата(Serg79 @ Sep 27 2006, 10:21) *

Как разместить глобальную переменную по определенному адресу в памяти, при использовании WinAVR.
Например:
Код
/*
* Нужно разместить по адресу 0x0110
*/
char flag;

Как мне это сделать?
Посмотреть в заголовочных файлах из комплекта компилятора как там по абсолютным адресам размещаются переменные портов, таймеров и другой периферии.

Нет, так точно не прокатит. Вот что там есть:
Код
#define _MMIO_BYTE(mem_addr) (*(volatile uint8_t *)(mem_addr))
#define _MMIO_WORD(mem_addr) (*(volatile uint16_t *)(mem_addr))

#define _SFR_MEM8(mem_addr) _MMIO_BYTE(mem_addr)
#define _SFR_MEM16(mem_addr) _MMIO_WORD(mem_addr)

Данные макросы просто грамотно формируют указатель на соответствуюфий адрес. И данный диапозон адресов не используется компилятором под глобальные переменные.
А мне именно надо разместить переменную по адресу начинающемуся с 0x0100.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Serg79   WinAVR и переменные   Sep 27 2006, 07:21
- - Serg79   Народ, не ужели ни кто не знает как это сделать. Д...   Sep 27 2006, 08:36
- - otrog   Для IAR-а делал так: Код#define r_mode (* ...   Sep 27 2006, 09:10
|- - Serg79   Цитата(otrog @ Sep 27 2006, 13:10) Для IA...   Sep 27 2006, 09:53
|- - Harvester   Цитата(Serg79 @ Sep 27 2006, 13:53) Цитат...   Sep 27 2006, 11:47
- - Serg79   Представляете, в отстойном CodeVision это можно сд...   Sep 27 2006, 11:06
|- - IgorKossak   Цитата(Serg79 @ Sep 27 2006, 14:06) Вы мн...   Sep 27 2006, 11:25
|- - otrog   Цитата(Serg79 @ Sep 27 2006, 15:06) Вы мн...   Sep 27 2006, 11:27
- - Tiro   Ну прочтите же, наконец, документацию! Пере...   Sep 27 2006, 11:32
- - aesok   Цитата(Serg79 @ Sep 27 2006, 11:21) Как р...   Sep 27 2006, 11:37
|- - defunct   Цитата(aesok @ Sep 27 2006, 14:37) Язык ...   Sep 28 2006, 23:50
|- - IgorKossak   Цитата(defunct @ Sep 29 2006, 02:50) Цита...   Sep 29 2006, 06:50
|- - aesok   Цитата(defunct @ Sep 29 2006, 03:50) Цита...   Sep 29 2006, 07:12
- - AVR_Amator   По WinAVR есть очень любопытные сайты http://avr....   Oct 12 2006, 14:58


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

 


RSS Текстовая версия Сейчас: 24th July 2025 - 02:28
Рейтинг@Mail.ru


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