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

 
 
 
Reply to this topicStart new topic
> SFR в IAR'e, Пользование своих SFR'ов
AlexNN
сообщение Dec 14 2007, 07:57
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 3-04-06
Пользователь №: 15 744



Уважаемые!
Проблема:
Mega162. Задумался по поводу экономии памяти. Объявил свой SFR в Extended IO.
Дебаггер всё рисует как хотелось.
НО НЕ РАБОТАЕТ В ПРОЦЕ!
Проверяю бит SFR'a в подпрограмме. Есть подозрение, что чего-то недописал. В смысле, в объявлении.
Или ещё где (в другом месте) собака порылась?
Go to the top of the page
 
+Quote Post
VladimirYU
сообщение Dec 14 2007, 08:07
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 426
Регистрация: 5-04-07
Из: Санкт-Петербург
Пользователь №: 26 782



Цитата(AlexNN @ Dec 14 2007, 11:57) *
Уважаемые!
Проблема:
Mega162. Задумался по поводу экономии памяти. Объявил свой SFR в Extended IO.
Дебаггер всё рисует как хотелось.
НО НЕ РАБОТАЕТ В ПРОЦЕ!
Проверяю бит SFR'a в подпрограмме. Есть подозрение, что чего-то недописал. В смысле, в объявлении.
Или ещё где (в другом месте) собака порылась?


Про AVR не уверен, но в MCS51 свободные адреса в области SFR физически не существуют, поэтому в отладчике все кучеряво, а на железе, сам понимаешь :-)
Go to the top of the page
 
+Quote Post
AlexNN
сообщение Dec 14 2007, 08:17
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 3-04-06
Пользователь №: 15 744



Цитата(VladimirYU @ Dec 14 2007, 12:07) *
Про AVR не уверен, но в MCS51 свободные адреса в области SFR физически не существуют, поэтому в отладчике все кучеряво, а на железе, сам понимаешь :-)

В том-то и дело, что там целая куча свободной памяти. Правда, только в описании на Мегу. cool.gif
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Dec 14 2007, 15:02
Сообщение #4


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



SFR в Extended IO обрабатывается так же, как и переменная с атрибутами __no_init volatile.
В чём смысл обьявления SFR вместо переменной? Но это уже другой вопрос.
По существу. Листинг пробовали смотреть?
Go to the top of the page
 
+Quote Post
singlskv
сообщение Dec 14 2007, 16:41
Сообщение #5


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(=AVR= @ Dec 14 2007, 19:09) *
О да, да - их можно наобъявлять сколько угодно.
Конечно насчет мега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.gif
Go to the top of the page
 
+Quote Post
fmdost
сообщение Dec 14 2007, 20:28
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 479
Регистрация: 8-05-07
Из: г. Ставрополь. Северный Кавказ. Россия
Пользователь №: 27 606



Цитата(=AVR= @ Dec 14 2007, 19:52) *
Про имеющиеся SFR речи не было. Юное программическое дарование наковыряло "целую кучу свободной памяти"

Тов. АВР. Добрее надо быть. Сам знаеш какие в даташитах бывают "шедевры"
Нормальный дебагер, тот с которого Я начинал, ругался если производишь запись в несуществующие регистры (msc51 какой то венгерский досовский). АВРстудио обрабатывает SFR как обычный дамп памяти. Ктож знал что аврстудио такая фигня!
AlexNN В микроконтроллерах, да наверное и других микросхемах, если региср не используется, то и отсутствует. В нормальных даташитах написано, "чтение из этих адресов даёт непредсказуемые данные"
Go to the top of the page
 
+Quote Post
fmdost
сообщение Dec 14 2007, 23:30
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 479
Регистрация: 8-05-07
Из: г. Ставрополь. Северный Кавказ. Россия
Пользователь №: 27 606



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

Сообщение отредактировал IgorKossak - Dec 17 2007, 07:42
Go to the top of the page
 
+Quote Post

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

 


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


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