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

SFR в IAR'e

Уважаемые!

Проблема:

Mega162. Задумался по поводу экономии памяти. Объявил свой SFR в Extended IO.

Дебаггер всё рисует как хотелось.

НО НЕ РАБОТАЕТ В ПРОЦЕ!

Проверяю бит SFR'a в подпрограмме. Есть подозрение, что чего-то недописал. В смысле, в объявлении.

Или ещё где (в другом месте) собака порылась?

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


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

Уважаемые!

Проблема:

Mega162. Задумался по поводу экономии памяти. Объявил свой SFR в Extended IO.

Дебаггер всё рисует как хотелось.

НО НЕ РАБОТАЕТ В ПРОЦЕ!

Проверяю бит SFR'a в подпрограмме. Есть подозрение, что чего-то недописал. В смысле, в объявлении.

Или ещё где (в другом месте) собака порылась?

 

Про AVR не уверен, но в MCS51 свободные адреса в области SFR физически не существуют, поэтому в отладчике все кучеряво, а на железе, сам понимаешь :-)

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


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

Про AVR не уверен, но в MCS51 свободные адреса в области SFR физически не существуют, поэтому в отладчике все кучеряво, а на железе, сам понимаешь :-)

В том-то и дело, что там целая куча свободной памяти. Правда, только в описании на Мегу. B)

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


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

SFR в Extended IO обрабатывается так же, как и переменная с атрибутами __no_init volatile.

В чём смысл обьявления SFR вместо переменной? Но это уже другой вопрос.

По существу. Листинг пробовали смотреть?

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


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

О да, да - их можно наобъявлять сколько угодно.
Конечно насчет мега162 Вы правы,

но вот например у меги48/88/168 есть:

6.5.1 General Purpose I/O Registers

The ATmega48/88/168 contains three General Purpose I/O Registers. These registers can be

used for storing any information, and they are particularly useful for storing global variables and

Status Flags. General Purpose I/O Registers within the address range 0x00 - 0x1F are directly

bit-accessible using the SBI, CBI, SBIS, and SBIC instructions.

 

Так что 3 байта памяти дополнительные есть :biggrin:

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


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

Про имеющиеся SFR речи не было. Юное программическое дарование наковыряло "целую кучу свободной памяти"

Тов. АВР. Добрее надо быть. Сам знаеш какие в даташитах бывают "шедевры"

Нормальный дебагер, тот с которого Я начинал, ругался если производишь запись в несуществующие регистры (msc51 какой то венгерский досовский). АВРстудио обрабатывает SFR как обычный дамп памяти. Ктож знал что аврстудио такая фигня!

AlexNN В микроконтроллерах, да наверное и других микросхемах, если региср не используется, то и отсутствует. В нормальных даташитах написано, "чтение из этих адресов даёт непредсказуемые данные"

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


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

[CENSORED]AVRстудио просто обязан правильно отображать работату железа.

Сейчас сижу пытаюсь симулировать работу прерывания от компаратора, не работает если меняешь бит ACO, приходится ещё ACI крутить. Мелочь, а неприятно.

Изменено пользователем IgorKossak

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


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

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

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

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

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

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

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

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

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

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