Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
23.06.2013, 19:55
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.11.2008
Адрес: г.Смоленск
Сообщений: 2,018
Сказал спасибо: 348
Сказали Спасибо 1,024 раз(а) в 552 сообщении(ях)
|
Таблица адресов для внеш. памяти
В очередной раз затуп... Просветите, пожалуйста.
Опишу задачу. К AVR подключена внешняя память FRAM по SPI 2x4МГц, микроконтроллер собирает данные с датчиков, датчики разделены по зонам и номерам.
Т.е. получается таблица, где столбцы это зоны, строки - номера датчиков. Мы принимаем несколько байтов с данными и вписываем их в fram по определенному адресу, закрепленному именно за этим датчиком, например зона 2, датчик 6. Мне напрашивается таблица с адресам, чтобы просто задав номер ячейки таблицы записать данные. Но, что-то таблица в уме прикидывается немаленькая(мин 15x15)
Забить на данную реализацию и сделать так?
Несколько первых байт в фрам отводим под счетчик, с начального адреса(после адреса счетчика) начинаем писать, просто задав в заголовке зону и номер, а далее данные. Сохранять в счетчик адрес следующей записи и т.д. Потом скопом считывать разбирая(сортируя) по заголовку в таблицу!?
Вся соль в том, что данные могут модифицироваться,т.е. лучше обратиться напрямую по адресу, чем перебирать и искать по индексу.
Вот тут и затык...
Данные могут приходить от разных датчиков, кол-во получается приличное, соответственно и время на обработку критично.
Как считаете, расчитывать и вбивать адреса в программу?
|
|
|
|
23.06.2013, 20:19
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
Re: Таблица адресов для внеш. памяти
Выделить каждому датчику свое пространство по 2-4-8 и т.д. байт и записывать по таблице. Второй вариант только увеличит нагрузку на и так слабенький контроллер, да и запутаться/ошибиться проще
|
|
|
|
23.06.2013, 20:37
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.11.2008
Адрес: г.Смоленск
Сообщений: 2,018
Сказал спасибо: 348
Сказали Спасибо 1,024 раз(а) в 552 сообщении(ях)
|
Re: Таблица адресов для внеш. памяти
Буду сейчас высчитывать адреса, спасибо.
|
|
|
|
23.06.2013, 20:39
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 7,014
Сказал спасибо: 3,025
Сказали Спасибо 3,196 раз(а) в 2,168 сообщении(ях)
|
Re: Таблица адресов для внеш. памяти
Я - за "фиксированные размеры разделов для зон и датчиков + математика со степенями 2".
Сообщение от Saadov
|
Вся соль в том, что данные могут модифицироваться,т.е. лучше обратиться напрямую по адресу, чем перебирать и искать по индексу.
|
Во ФРАМ чтение разрушаюшее и тоже расходует ресурс.
|
|
|
|
23.06.2013, 20:45
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.11.2008
Адрес: г.Смоленск
Сообщений: 2,018
Сказал спасибо: 348
Сказали Спасибо 1,024 раз(а) в 552 сообщении(ях)
|
Re: Таблица адресов для внеш. памяти
Сообщение от ForcePoint
|
Я - за "фиксированные размеры разделов для зон и датчиков + математика со степенями 2".
|
Разделы и так будут фиксированные, я же знаю сколько байт я приму.
Сообщение от ForcePoint
|
Во ФРАМ чтение разрушаюшее и тоже расходует ресурс.
|
Мне 10 в 12 степени хватит(1 триллион износостойкость).
|
|
|
|
23.06.2013, 20:55
|
|
Гражданин KAZUS.RU
Регистрация: 16.03.2011
Сообщений: 486
Сказал спасибо: 8
Сказали Спасибо 131 раз(а) в 116 сообщении(ях)
|
Re: Таблица адресов для внеш. памяти
Сообщение от ForcePoint
|
Во ФРАМ чтение разрушаюшее и тоже расходует ресурс.
|
На наш век хватит.
|
|
|
|
24.06.2013, 03:58
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.11.2008
Адрес: г.Смоленск
Сообщений: 2,018
Сказал спасибо: 348
Сказали Спасибо 1,024 раз(а) в 552 сообщении(ях)
|
Re: Таблица адресов для внеш. памяти
Лень было вбивать адреса вручную, да и вдруг изменить надо будет.
Состряпал простенькую программку, без всяких украшательств, можно сказать - под себя. Но вдруг кому нужна будет. По идее будет работать у всех с NET Framework 4.0,4.5
Просто вбивается начальный адрес, потом выбирается количество байт(пространство на которое будет ссылаться адрес), задаем размерность массива, выводим, получается массив адресов, который автоматом копируется в буфер обмена для вставки в программу для микроконтроллера.
Последний раз редактировалось Saadov; 25.06.2013 в 00:12.
|
|
|
|
24.06.2013, 06:20
|
|
Гуру портала
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 19,055
Сказал спасибо: 2,562
Сказали Спасибо 11,888 раз(а) в 5,962 сообщении(ях)
|
Re: Таблица адресов для внеш. памяти
Какая сложность вычислить адрес mas[x][y][z]? Зачем таблицы?
А mas может располагаться где угодно...
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
|
|
|
|
24.06.2013, 09:38
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
|
Re: Таблица адресов для внеш. памяти
Сообщение от Saadov
|
задаем размерность массива, выводим, получается массив адресов, который автоматом копируется в буфер обмена для вставки в программу для микроконтроллера
|
А почему нельзя пойти традиционным способом? Например, так:
Код:
|
#define N_Sensrs 15
uint8 uiZone, // номер зоны
uiSens; // номер датчика
address = base_addr + ( (uiZone-1)*N_Sensrs + uiSens )*sizeof( тип_элемента_данных_с_дачика ); |
__________________
There's always more than one way to skin a cat.
|
|
|
Сказали "Спасибо" tempora
|
|
|
24.06.2013, 22:32
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.11.2008
Адрес: г.Смоленск
Сообщений: 2,018
Сказал спасибо: 348
Сказали Спасибо 1,024 раз(а) в 552 сообщении(ях)
|
Re: Таблица адресов для внеш. памяти
Сообщение от akegor
|
Какая сложность вычислить адрес mas[x][y][z]? Зачем таблицы?
|
Приведите кусок кода, пожалуйста.
Сообщение от tempora
|
А почему нельзя пойти традиционным способом? Например, так:
|
N_Sensrs 15 - это кол-во байт в памяти отведенных на 1 датчик?
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 07:16.
|
|