Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Ограничитель используемой SRAM
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
KESTVVV
Здравствуйте.
Столкнулся с ситуацией - не хватает SRAM доступной для использования программой.
Микроконтроллер ATMEGA 48PA.
В AVR Studio имеется файлик m48PAdef.inc в котором имеется ограничение используемой программой памяти.

#pragma AVRPART MEMORY INT_SRAM START_ADDR 0x100

Вопрос такой - с чем именно связанно это ограничение?
megajohn
Цитата(KESTVVV @ Apr 15 2014, 17:08) *
Вопрос такой - с чем именно связанно это ограничение?


Дык, регистры периферии и прочее

по ссылке смотреть Figure 8-3. Data memory map
RabidRabbit
Не хватает ОЗУ - берите контроллер "потолще", например, 88PA, там её в два раза больше.
Цитата(KESTVVV @ Apr 15 2014, 17:08) *
#pragma AVRPART MEMORY INT_SRAM START_ADDR 0x100

А это адрес, с которого ОЗУ начинается, ничего более.
RTFD, короче говоря sm.gif
KESTVVV
То что они используются под периферию - я прекрасно знаю. Но имеются блоки памяти помеченные как зарезервированные.
Вопрос в том - можно ли использовать адреса помеченные как зарезервированные?

Цитата(RabidRabbit @ Apr 15 2014, 15:25) *
Не хватает ОЗУ - берите контроллер "потолще", например, 88PA, там её в два раза больше.

А это адрес, с которого ОЗУ начинается, ничего более.
RTFD, короче говоря sm.gif


У этой модели по этим настройкам доступно 256 из 512 байт SRAM.
megajohn
Цитата(RabidRabbit @ Apr 15 2014, 17:25) *
Не хватает ОЗУ - берите контроллер "потолще", например, 88PA, там её в два раза больше.
А это адрес, с которого ОЗУ начинается, ничего более.


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

А вообще, автору можно приделать malloc / free ( это проще, чем перепаивать контроллеры )

Цитата(KESTVVV @ Apr 15 2014, 17:28) *
То что они используются под периферию - я прекрасно знаю. Но имеются блоки памяти помеченные как зарезервированные.
Вопрос в том - можно ли использовать адреса помеченные как зарезервированные?


и где такое узрели ?

Код
; ***** DATA MEMORY DECLARATIONS *****************************************
.equ    FLASHEND    = 0x07ff; Note: Word address
.equ    IOEND    = 0x00ff
.equ    SRAM_START    = 0x0100
.equ    SRAM_SIZE    = 512
.equ    RAMEND    = 0x02ff
.equ    XRAMEND    = 0x0000
.equ    E2END    = 0x00ff
.equ    EEPROMEND    = 0x00ff
.equ    EEADRBITS    = 8
#pragma AVRPART MEMORY PROG_FLASH 4096
#pragma AVRPART MEMORY EEPROM 256
#pragma AVRPART MEMORY INT_SRAM SIZE 512
#pragma AVRPART MEMORY INT_SRAM START_ADDR 0x100
KESTVVV
Я пишу на на ассемблере.
Я конечно понимаю , что это выход за "рекомендуемые" значения.
Имеются два крупных блока 008С-00AF , 00C7-00FF - информация из даташита - сводная таблица регистров.
RabidRabbit
Написание программы на ассемблере не избавляет от необходимости внимательно читать даташит. Причём весь, не кусками. А на Ваш вопрос исчерпывающе отвечает пункт 8.3 SRAM Data Memory.
megajohn
Цитата(KESTVVV @ Apr 15 2014, 17:41) *
Я пишу на на ассемблере.
Я конечно понимаю , что это выход за "рекомендуемые" значения.
Имеются два крупных блока 008С-00AF , 00C7-00FF - информация из даташита - сводная таблица регистров.


For compatibility with future devices, reserved bits should be written to zero if accessed.
Reserved I/O memory addresses should never be written.
KESTVVV
Цитата(RabidRabbit @ Apr 15 2014, 15:47) *
Написание программы на ассемблере не избавляет от необходимости внимательно читать даташит. Причём весь, не кусками. А на Ваш вопрос исчерпывающе отвечает пункт 8.3 SRAM Data Memory.

И где в этом пункте указана причина запрета обращения к этой области?

То что атмел пытается себя обезопасить от проблем связанных с эволюцией контроллеров - это понятно.
Если модель контроллера не меняется , то есть возможность использования этой области. Так?
Сергей Борщ
Цитата(KESTVVV @ Apr 15 2014, 17:09) *
Если модель контроллера не меняется , то есть возможность использования этой области. Так?
Возможность есть, памяти там нет. А даже если сегодня вы ее там случайно найдете - не факт, что она там будет в таком же контроллере из другой упаковки.


Цитата(KESTVVV @ Apr 15 2014, 16:28) *
У этой модели по этим настройкам доступно 256 из 512 байт SRAM.
Ой. Память начинается от 0x100 и заканчивается на 0x2FF. 512 байт. Где вы потеряли половину?
KESTVVV
Цитата(Сергей Борщ @ Apr 15 2014, 16:15) *
Возможность есть, памяти там нет. А даже если сегодня вы ее там случайно найдете - не факт, что она там будет в таком же контроллере из другой упаковки.


Ой. Память начинается от 0x100 и заканчивается на 0x2FF. 512 байт. Где вы потеряли половину?

Спасибо.... Я ошибочно предполагал , что память заканчивается на 0x01FF .
Тему можно закрывать.
megajohn
Цитата(Сергей Борщ @ Apr 15 2014, 18:15) *
Ой. Память начинается от 0x100 и заканчивается на 0x2FF. 512 байт. Где вы потеряли половину?



это вы потеряли половину, а топик-стартер потерял 75% =)))
в меге88 1кб

Код
.equ    SRAM_START    = 0x0100
.equ    SRAM_SIZE    = 1024
.equ    RAMEND    = 0x04ff
Сергей Борщ
Цитата(megajohn @ Apr 15 2014, 17:25) *
это вы потеряли половину, а топик-стартер потерял 75% =)))
Не, я зрение на прошлой неделе проверял - единица. В первом сообщении речь идет о меге-48.
prottoss
Цитата(megajohn @ Apr 15 2014, 20:25) *
это вы потеряли половину, а топик-стартер потерял 75% =)))
в меге88 1кб
Это Ваш аватар просто одним глазом смотрит sm.gif - речь про ATmega48 а не про ATmega88
megajohn
Цитата(Сергей Борщ @ Apr 15 2014, 18:33) *
Не, я зрение на прошлой неделе проверял - единица. В первом сообщении речь идет о меге-48.


RabidRabbit: берите контроллер "потолще", например, 88PA
KESTVVV: У этой модели по этим настройкам доступно 256 из 512 байт SRAM.

я бы сказал, что слово этой имеет двойственность смысла относительно целевого МК.

Ну да ладно
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.