Alex952 0 14 декабря, 2007 Опубликовано 14 декабря, 2007 · Жалоба Уважаемые! Проблема: Mega162. Задумался по поводу экономии памяти. Объявил свой SFR в Extended IO. Дебаггер всё рисует как хотелось. НО НЕ РАБОТАЕТ В ПРОЦЕ! Проверяю бит SFR'a в подпрограмме. Есть подозрение, что чего-то недописал. В смысле, в объявлении. Или ещё где (в другом месте) собака порылась? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladimirYU 0 14 декабря, 2007 Опубликовано 14 декабря, 2007 · Жалоба Уважаемые! Проблема: Mega162. Задумался по поводу экономии памяти. Объявил свой SFR в Extended IO. Дебаггер всё рисует как хотелось. НО НЕ РАБОТАЕТ В ПРОЦЕ! Проверяю бит SFR'a в подпрограмме. Есть подозрение, что чего-то недописал. В смысле, в объявлении. Или ещё где (в другом месте) собака порылась? Про AVR не уверен, но в MCS51 свободные адреса в области SFR физически не существуют, поэтому в отладчике все кучеряво, а на железе, сам понимаешь :-) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex952 0 14 декабря, 2007 Опубликовано 14 декабря, 2007 · Жалоба Про AVR не уверен, но в MCS51 свободные адреса в области SFR физически не существуют, поэтому в отладчике все кучеряво, а на железе, сам понимаешь :-) В том-то и дело, что там целая куча свободной памяти. Правда, только в описании на Мегу. B) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
IgorKossak 0 14 декабря, 2007 Опубликовано 14 декабря, 2007 · Жалоба SFR в Extended IO обрабатывается так же, как и переменная с атрибутами __no_init volatile. В чём смысл обьявления SFR вместо переменной? Но это уже другой вопрос. По существу. Листинг пробовали смотреть? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
singlskv 0 14 декабря, 2007 Опубликовано 14 декабря, 2007 · Жалоба О да, да - их можно наобъявлять сколько угодно.Конечно насчет мега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 байта памяти дополнительные есть Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
fmdost 0 14 декабря, 2007 Опубликовано 14 декабря, 2007 · Жалоба Про имеющиеся SFR речи не было. Юное программическое дарование наковыряло "целую кучу свободной памяти" Тов. АВР. Добрее надо быть. Сам знаеш какие в даташитах бывают "шедевры" Нормальный дебагер, тот с которого Я начинал, ругался если производишь запись в несуществующие регистры (msc51 какой то венгерский досовский). АВРстудио обрабатывает SFR как обычный дамп памяти. Ктож знал что аврстудио такая фигня! AlexNN В микроконтроллерах, да наверное и других микросхемах, если региср не используется, то и отсутствует. В нормальных даташитах написано, "чтение из этих адресов даёт непредсказуемые данные" Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
fmdost 0 14 декабря, 2007 Опубликовано 14 декабря, 2007 (изменено) · Жалоба [CENSORED]AVRстудио просто обязан правильно отображать работату железа. Сейчас сижу пытаюсь симулировать работу прерывания от компаратора, не работает если меняешь бит ACO, приходится ещё ACI крутить. Мелочь, а неприятно. Изменено 17 декабря, 2007 пользователем IgorKossak Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться