Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR...

 
Опции темы
Непрочитано 04.03.2015, 11:32  
AlexWonder
Частый гость
 
Регистрация: 06.11.2007
Сообщений: 47
Сказал спасибо: 1
Сказали Спасибо 12 раз(а) в 5 сообщении(ях)
AlexWonder на пути к лучшему
По умолчанию AVR Си и переменная по определенному адресу

Привет знатоки!
В общем, решил перейти с АСМа на Си (AVR Studio 6)
более менее понятно, но вот возникла банальная задача определить переменную по определенному адресу в памяти (RAM). На АСМе это делается без проблем, а вот на Си нашел только через указатель.
Что-то типа - #define TestRam ((unsigned char *)0x0100)
ну и обращение к ней соответсвенно - *(TestRam) = 0xEE

Вот только компилятор может на это же место положить какую-то переменную.
Реклама:
AlexWonder вне форума  
Непрочитано 04.03.2015, 12:11  
С.М.С
Гражданин KAZUS.RU
 
Аватар для С.М.С
 
Регистрация: 03.07.2010
Сообщений: 843
Сказал спасибо: 156
Сказали Спасибо 378 раз(а) в 190 сообщении(ях)
С.М.С на пути к лучшему
По умолчанию Re: AVR Си и переменная по определенному адресу

хз, но для чего это? есть же глобальные переменные видимые из любой процедуры. В этом и прелесть С, что не надо помнить, в каком регистре для чего хранится значение.
С.М.С вне форума  
Непрочитано 04.03.2015, 14:08  
AlexWonder
Частый гость
 
Регистрация: 06.11.2007
Сообщений: 47
Сказал спасибо: 1
Сказали Спасибо 12 раз(а) в 5 сообщении(ях)
AlexWonder на пути к лучшему
По умолчанию Re: AVR Си и переменная по определенному адресу

Ну может не совсем правильно, но вот такая задача:
Есть внешняя память (XRAM) с определенного адреса (у каждого контроллера по разному). Необходимо ее протестировать путем заполнения разными алгоритмами на наличие дублирования ячеек (не пропаян адрес или кз) или КЗ/непропай по шине данных
AlexWonder вне форума  
Непрочитано 04.03.2015, 14:16  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: AVR Си и переменная по определенному адресу

CRC используйте. Это правильнее.
Easyrider83 вне форума  
Непрочитано 04.03.2015, 14:45  
С.М.С
Гражданин KAZUS.RU
 
Аватар для С.М.С
 
Регистрация: 03.07.2010
Сообщений: 843
Сказал спасибо: 156
Сказали Спасибо 378 раз(а) в 190 сообщении(ях)
С.М.С на пути к лучшему
По умолчанию Re: AVR Си и переменная по определенному адресу

или создайте массив значений, записали, считали сравнили
С.М.С вне форума  
Непрочитано 04.03.2015, 15:20  
AlexWonder
Частый гость
 
Регистрация: 06.11.2007
Сообщений: 47
Сказал спасибо: 1
Сказали Спасибо 12 раз(а) в 5 сообщении(ях)
AlexWonder на пути к лучшему
По умолчанию Re: AVR Си и переменная по определенному адресу

CRC ресурсоемкое и в данном случае не эффективное решение. Массив тож не вариант. т.к. он займет память, а ее нельзя занимать, ее надо только проверить. (хотя могу и ошибаться т.к. тоолько осваиваю эту тему) так же бывают случаи, что надо подолбить определенную ящейку памяти разными значениями (проверить плавают ли там биты или нет).
Пока нашел только такой вариант:
Цитата:
for(int AdrFill = RAMSTART+0x20; AdrFill‹=RAMEND; AdrFill++ )
{
p = (unsigned char *)(AdrFill);
(*p) = 0xFF;
}
вот только не могу понять, почему он сначала пытается записать по адресу 0х0000, а уже потом по AdrFill
AlexWonder вне форума  
Непрочитано 04.03.2015, 16:49  
Boba_spb
Почётный гражданин KAZUS.RU
 
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
Boba_spb на пути к лучшему
По умолчанию Re: AVR Си и переменная по определенному адресу

Воспоминания из детства пр тесты памяти.
1. Запись адреса по адресу
2. Запись инверсии адреса по адоесу.
Сначала прописвается вся память, затем вся память считывается.
Определяет правильность адресов и данных.

3. Запись бегущих 1 по памяти.
4. Запись бегущих 0 по памяти.
Это в основном баловство - толку мало.

Ну и взрослые тесты.

5. Запись случайного числа по случайному адресу.
6. Случайные запись/чтение случчайного числа по случайному адресу.
7. Тест максимальных помех
Boba_spb вне форума  
Непрочитано 04.03.2015, 16:56  
AlexWonder
Частый гость
 
Регистрация: 06.11.2007
Сообщений: 47
Сказал спасибо: 1
Сказали Спасибо 12 раз(а) в 5 сообщении(ях)
AlexWonder на пути к лучшему
По умолчанию Re: AVR Си и переменная по определенному адресу

ЭЭЭЭ
это все я знаю (про варианты тестов памяти). Вопрос был в другом:
Как в Си закрепить переменную по определенному адресу?! (пример с очистки памяти - это первое что придло на ум. Как уже написал - это грубый пример )

ИМХО складывается мнение что в Си это не реально.
AlexWonder вне форума  
Непрочитано 04.03.2015, 17:36  
_Артём_
Гражданин KAZUS.RU
 
Регистрация: 16.03.2011
Сообщений: 486
Сказал спасибо: 8
Сказали Спасибо 131 раз(а) в 116 сообщении(ях)
_Артём_ на пути к лучшему
По умолчанию Re: AVR Си и переменная по определенному адресу

Сообщение от AlexWonder Посмотреть сообщение
Как в Си закрепить переменную по определенному адресу?!
ИМХО складывается мнение что в Си это не реально.
Возможно. Нужно в проекте определить свою секцию (настройка линкера) и расположить переменную в этой секции (__attribute__ ((section (".my_section")))).
_Артём_ вне форума  
Непрочитано 04.03.2015, 18:18  
AlexWonder
Частый гость
 
Регистрация: 06.11.2007
Сообщений: 47
Сказал спасибо: 1
Сказали Спасибо 12 раз(а) в 5 сообщении(ях)
AlexWonder на пути к лучшему
По умолчанию Re: AVR Си и переменная по определенному адресу

_Артём_,
Спасибо те мил человек!
Теперь хоть буду знать куда копать.
AlexWonder вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Yagarto GCC объявить массив по определенному адресу svad0 Микроконтроллеры, АЦП, память и т.д 4 13.01.2012 19:49
Литература по микроконтроллерам (AVR, PIC, ПЛИС и т.д.). Сборка книг - (256 книг+ 27 CD c примерами из книг) [обновление 2011, PDF, DJVU] yurinform Микроконтроллеры, АЦП, память и т.д 5 05.07.2011 19:00
Архив проектов на AVR fmssp Proteus, KiCAD и другие ECAD 4 25.10.2010 17:14
Как в CVAVR записать в EEPROM по определенному адресу? woroba Микроконтроллеры, АЦП, память и т.д 8 21.06.2007 08:33


Часовой пояс GMT +4, время: 19:36.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot