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

 
 
> Память (внешняя память), Как устроена память???
satnettv
сообщение Sep 4 2007, 11:26
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 35
Регистрация: 8-08-07
Из: MockBa
Пользователь №: 29 658



Помогите разобраться как устроена память:

1. как устроена адресация памяти (т.е. как выставляются адреса для записи, чтения)
2. как записывать, читать данные.

в принципе общее устройство памяти понятно - данные забиваются в конкретные адреса памяти.

хотелось бы понять как прописывать адреса для нескольких записей в память (при чтении).

Вот, например, есть строка n-символов (пусть будет 80 бит), периодически строка меняется (кол-во символов не меняется), т.е каждую строку нужно записывать в свой конкретный адрес. как нужно учитывать это при простановке адреса для записи??

затем надо считывать записанные строки из памяти, как узнать по какому адресу находятся конкретная записанная строка???


Если можно покажите код на Си для реализации данного дела (желательно с пояснениями).

использую компилятор CodeVision, в качестве памяти используется FL25L256, микроконтроллер мега128, соединены по интерфейсу SPI.


Заранее извините за безграммотность по данному вопросу, и заранее всем спасибо!!!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
vesago
сообщение Sep 4 2007, 14:48
Сообщение #2


Тутэйшы
****

Группа: Свой
Сообщений: 708
Регистрация: 30-11-04
Пользователь №: 1 263



Не совсем понятно - интересует особенности работы с данной микросхемой или идеология работы со внешней памятью. Если первое - лучьше как всегда почитать мануал. Если второе, заводите пару функций типа u8_t Read_EEPROM(u16_t addr, u8_t len, u8_t *buf); u8_t Write_EEPROM(u16_t addr, u8_t len, u8_t *buf); Если несколько одинаковых записей, в качестве addr передаете номер записи, умноженный на размер записи ну и опционально плюс смещение.
Go to the top of the page
 
+Quote Post
satnettv
сообщение Sep 4 2007, 14:56
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 35
Регистрация: 8-08-07
Из: MockBa
Пользователь №: 29 658



Цитата(vesago @ Sep 4 2007, 18:48) *
Если второе, заводите пару функций типа u8_t Read_EEPROM(u16_t addr, u8_t len, u8_t *buf); u8_t Write_EEPROM(u16_t addr, u8_t len, u8_t *buf); Если несколько одинаковых записей, в качестве addr передаете номер записи, умноженный на размер записи ну и опционально плюс смещение.




Более конкретно интересует этот вопрос. Если можно распишите пожалуйста более детально ("Если несколько одинаковых записей, в качестве addr передаете номер записи, умноженный на размер записи ну и опционально плюс смещение"). С памятью никогда не работал, а требуется сделать описанное выше. Так что более подробная инфа по данной теме никогда не помешает. Очень интересует реалиазация процедур на Си.
Go to the top of the page
 
+Quote Post
Непомнящий Евген...
сообщение Sep 5 2007, 09:48
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



Цитата(satnettv @ Sep 4 2007, 18:56) *
Более конкретно интересует этот вопрос. Если можно распишите пожалуйста более детально ("Если несколько одинаковых записей, в качестве addr передаете номер записи, умноженный на размер записи ну и опционально плюс смещение"). С памятью никогда не работал, а требуется сделать описанное выше. Так что более подробная инфа по данной теме никогда не помешает. Очень интересует реалиазация процедур на Си.


Пусть у вас есть структура
typedef struct
{
///все, что угодно, в том числе ваша строка
} TStruct;
TStruct a, b, c, d;
и вам надо их хранить в памяти начиная с адреса ADDR друг за другом. Тогда адрес первой структуры будет ADDR, второй - ADDR + sizeof(TStruct), n-ой ADDR + sizeof(TStruct) * (n-1). Этот адрес вы и передете вышеуказанным ф-циям.
Как реализовать эти ф-ции для вашео типа памяти - надо почитать даташит. Скорее всего, есть некие опкоды записи и чтения, вы сначала передаете опкод, затем адрес, а затем либо пишите либо читаете информацию.
Запись может быть более сложная, если стирание происходит секторами; часто запись ограничена 1-й страницей. Но тут вам надо прочитать даташит, и если будут конкретные вопросы - задавайте.

Сообщение отредактировал Непомнящий Евгений - Sep 5 2007, 09:48
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- satnettv   Память (внешняя память)   Sep 4 2007, 11:26
|- - satnettv   Цитата(Непомнящий Евгений @ Sep 5 2007, 13...   Sep 5 2007, 10:11
|- - satnettv   Цитата(satnettv @ Sep 5 2007, 14:11) Со с...   Sep 5 2007, 14:29
|- - Непомнящий Евгений   Все Цитата(satnettv @ Sep 5 2007, 18:29)...   Sep 5 2007, 15:05
- - satnettv   Делаю для себя, микроконтроллер mega128, внешняя п...   Sep 5 2007, 14:36
|- - satnettv   Цитата(satnettv @ Sep 5 2007, 18:36) Дела...   Sep 6 2007, 11:46
- - satnettv   Цитата(satnettv @ Sep 4 2007, 15:26) Помо...   Sep 6 2007, 11:45
- - satnettv   даташит на память - http://www.compel.ru/images/ca...   Sep 6 2007, 12:21
|- - thorium   Цитата(satnettv @ Sep 6 2007, 15:21) дата...   Sep 6 2007, 12:33
- - Kuzmi4   Ну и зачем плодить кучу тем??   Sep 6 2007, 12:32
- - zltigo   Moderator: Все темы объеденены в разделе "В п...   Sep 6 2007, 12:44
- - Непомнящий Евгений   Уважаемый satnettv! Насколько я понимаю, вы по...   Sep 7 2007, 06:31
- - Devin 001   Помоему такую тему уже видел.   Sep 11 2007, 16:29


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

 


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


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