Bascom AVR непосредственное обращение к вутренней EEPROM

Обсуждаем контроллеры компании Atmel.
Ответить
Аватара пользователя
Reloader
Мучитель микросхем
Сообщения: 451
Зарегистрирован: Сб фев 26, 2011 14:38:42
Откуда: Новочеркасск

Bascom AVR непосредственное обращение к вутренней EEPROM

Сообщение Reloader »

Доброго времени суток, уважаемые Коты!!!
вопрос такой :
мне необходимо обращаться непосредственно к ячейке собственной EEPROM МК. для чтения и записи.
перелопатил весь хелп Баскома, но нашел только возможность обращения через переменную. сей способ не подходит так как при создании переменной (массива) резервируются ячейки и в случае заполнения 10 значений из 100 - 90% ячеек остаются зарезервированы и пусты :(((
мне же нужно более оптимально работать с EEPROM.

Сильно не пинайте - на Баском недавно перешел...
Выпрямите спину и уберите левую руку от лица.
Мой Youtube канал
Аватара пользователя
Reloader
Мучитель микросхем
Сообщения: 451
Зарегистрирован: Сб фев 26, 2011 14:38:42
Откуда: Новочеркасск

Re: Bascom AVR непосредственное обращение к вутренней EEPROM

Сообщение Reloader »

Уважаемые Коты, Неужели никто незнает?
или может быть я как-то непонятно написал?....
Выпрямите спину и уберите левую руку от лица.
Мой Youtube канал
Аватара пользователя
BCluster
Собутыльник Кота
Сообщения: 2512
Зарегистрирован: Пн апр 06, 2009 19:33:29
Откуда: Молдова, Кишинев
Контактная информация:

Re: Bascom AVR непосредственное обращение к вутренней EEPROM

Сообщение BCluster »

А указателей нет в этом чуде?) Или через асм?)
Аватара пользователя
Reloader
Мучитель микросхем
Сообщения: 451
Зарегистрирован: Сб фев 26, 2011 14:38:42
Откуда: Новочеркасск

Re: Bascom AVR непосредственное обращение к вутренней EEPROM

Сообщение Reloader »

Асмом вообще не владею, к своему стыду...
по поводу указателей...
Это для моего проекта.
Задача такова :
(примерно)
в 1-ю ячейку памяти пишем длинну массива (например 100)
Соответственно опрашиваем ячейки с 2 по 101.
дальше 2-й массив
102-я ячейка - длинна массива (например 10)
следовательно мессив должен занимать ячейки с 103 по 113
трабла в том, что размерность массивов может быть абсолютно разная.
При использовании встроенной в Баском системы хранения переменных в EEPROM происходит такая весч :
при задании массива длинной в 100 - резервируется 100 ячеек.
то есть если я создам такую переменную, и запишу туда 20 значений, то все равно будет зарезервировано 100 ячеек.
проект предполагается варганить на Меге8. При таком формировании массивов - просто расточительство памяти...


покопавшист в Гугле цельный день :( все больше прихожу к выводу плюнуть на сие и прикрутить по SPI что-нить вроде AT26DF081A-SU с 1 мегабайтом памяти и иметь возможность записи колометровых массивов на все случаи жизни...

(только вот с SPI я ещё не работал пока....)
Выпрямите спину и уберите левую руку от лица.
Мой Youtube канал
Аватара пользователя
Moto_v3x
Потрогал лапой паяльник
Сообщения: 307
Зарегистрирован: Ср мар 31, 2010 11:45:58
Откуда: Славянск

Re: Bascom AVR непосредственное обращение к вутренней EEPROM

Сообщение Moto_v3x »

Как вариант, если конечно они достучаться до EEPROM, то это ADR, ADR2, POKE, PEEK, INP, OUT.
Аватара пользователя
Reloader
Мучитель микросхем
Сообщения: 451
Зарегистрирован: Сб фев 26, 2011 14:38:42
Откуда: Новочеркасск

Re: Bascom AVR непосредственное обращение к вутренней EEPROM

Сообщение Reloader »

если конечно они достучаться до EEPROM

использовать вместо внутренней EEPROM
Выпрямите спину и уберите левую руку от лица.
Мой Youtube канал
Аватара пользователя
BCluster
Собутыльник Кота
Сообщения: 2512
Зарегистрирован: Пн апр 06, 2009 19:33:29
Откуда: Молдова, Кишинев
Контактная информация:

Re: Bascom AVR непосредственное обращение к вутренней EEPROM

Сообщение BCluster »

Ну я немного не понимаю... Вы не знаете какой у вас будет размер массива? Максимальный размер всех переменных которые надо хранить в еепром превышает его размер?
Аватара пользователя
Reloader
Мучитель микросхем
Сообщения: 451
Зарегистрирован: Сб фев 26, 2011 14:38:42
Откуда: Новочеркасск

Re: Bascom AVR непосредственное обращение к вутренней EEPROM

Сообщение Reloader »

Ну я немного не понимаю

именно не влезает :(
например мне нужно использовать 3 массива. размер каждого - разный. но максимальный размер одного (любого) массива будет равен 200
Если использовать стандартный способ хранения переменных мне нужно объявить 3 массива с максимальным количеством в 200 значений

Ну а например мне нужно
S1(100)
S2(200)
S3(50)
итого 350 байт
в следующем моменте может быть так :
S1(200)
S2(200)
S3(100)
итого 500 байт

И все прекрасно :)
Однако Баском попытается зарезервировать 3Х200 = 600 байт (а в меге8 только 512)
Если же была бы возможность прямого обращения к ячейкам я мог бы создать эти же самые 3 массива распределяя адреса доступа к ячейкам и формируя длины массивов таким образом, что они при любом раскладе впишутся в память.
Выпрямите спину и уберите левую руку от лица.
Мой Youtube канал
Аватара пользователя
BCluster
Собутыльник Кота
Сообщения: 2512
Зарегистрирован: Пн апр 06, 2009 19:33:29
Откуда: Молдова, Кишинев
Контактная информация:

Re: Bascom AVR непосредственное обращение к вутренней EEPROM

Сообщение BCluster »

Сделайте один массив на всю область памяти, сделайте переменные которые будут хранить смещения. Фактически это и будет непосредственный доступ в память. Я не знаю как там у вас в бейсике, но на си можно было бы сделать указатели которые бы указывали на свои области памяти и "при изменении размеров массивов" (ибо в реале оно не совсем так) можно было бы смещать и указатели.
Аватара пользователя
Reloader
Мучитель микросхем
Сообщения: 451
Зарегистрирован: Сб фев 26, 2011 14:38:42
Откуда: Новочеркасск

Re: Bascom AVR непосредственное обращение к вутренней EEPROM

Сообщение Reloader »

Согласен, как вариант такое можно устроить, но я все больше склоняюсь к внешней памяти, причем к флэш...
Это развяжет руки в полной мере. Объемы могут намного превысить необходимые в среднем размеры массивов, а в особо критичном случае позволят не заморачиваться по поводу размерности какого-то одного массива....

Единственной проблемой в моем случае является организация обращения к памяти по SPI, в чем абсолютно нет опыта...
надеюсь мудрые Коты или Гугел мне что-нить толковое посоветуют...
Выпрямите спину и уберите левую руку от лица.
Мой Youtube канал
Аватара пользователя
BCluster
Собутыльник Кота
Сообщения: 2512
Зарегистрирован: Пн апр 06, 2009 19:33:29
Откуда: Молдова, Кишинев
Контактная информация:

Re: Bascom AVR непосредственное обращение к вутренней EEPROM

Сообщение BCluster »

Ну если есть потребность в большем объеме то конечно да. Наверняка для баскома есть либы для работы с флеш.
А ваще на си пишите )
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: Bascom AVR непосредственное обращение к вутренней EEPROM

Сообщение Мурик »

Reloader писал(а):перелопатил весь хелп Баскома, но нашел только возможность обращения через переменную
Как-же вы хелп лопатили что не заметили пары операторов с явно недвусмысленным именем READEEPROM и WRITEEEPROM?
Аватара пользователя
Reloader
Мучитель микросхем
Сообщения: 451
Зарегистрирован: Сб фев 26, 2011 14:38:42
Откуда: Новочеркасск

Re: Bascom AVR непосредственное обращение к вутренней EEPROM

Сообщение Reloader »

Уважаемый Мурик, я не оставил данные операторы без внимания, но при их использовании нет прямого обращения к ячейке, а только через массив Data. я потратил несколько часов пытаясь решить проблему используя данные операторы. Использовал и встроенный отладчик и Proteus, и тесты на железе. Но, увы, грамотное заполнение EEPROM происходит только при начальном компилировании а именно :

Код: Выделить всё

$eeprom
Label1:
Data 1 , 2 , 3 , 4 , 5
Label2:
Data 10 , 20 , 30 , 40 , 50
$data


Если же в последствии происходит попытка изменить размерность массива и заполнить его в цикле - изменяется только 1-е значение массива.
И опять же : Данные операторы не предоставляют возможности прямого обращения по адресу ячейки
Выпрямите спину и уберите левую руку от лица.
Мой Youtube канал
Аватара пользователя
Shahabbas
Родился
Сообщения: 3
Зарегистрирован: Сб июл 21, 2012 09:05:18

Re: Bascom AVR непосредственное обращение к вутренней EEPROM

Сообщение Shahabbas »

Всем привет .
Приподниму старую тему - может кому пригодится .
Считывание и запись EEPROM с прямым доступам к нужным ячейкам :
Считывание памяти при запуске программы можно производить сразу после объявления переменных , например :

Код: Выделить всё

$regfile = "m32def.dat"
$crystal = 16000000
$hwstack = 64
$swstack = 16
$framesize = 64

'Объявление переменных
 Dim Signal As Byte                       'переменная переключения формы сигнала
 Dim Freq As Long                         'переменная частоты
 Dim Ste_p As Long                        'переменная шага изменения частоты


'Считываются данные с EEPROM
 Readeeprom Signal , 0                    'в переменную Signal из 0 ячейки
 Readeeprom Freq , 10                     'в переменную Freq из 10 ячейки
 Readeeprom Ste_p , 20                    'в переменную Ste_p из 20 ячейки

'---далее продолжение своей программы---


Запись в память можно производить так-же с прямым доступом к ячейкам в нужном месте программы , например :

Код: Выделить всё

'---подпрограмма записи данных в память---
 Writeeeprom Signal , 0                   'Запись в ячейку 0 переменной Signal
 Writeeeprom Freq , 10                    'Запись в ячейку 10 переменной Freq
 Writeeeprom Ste_p , 20                   'Запись в ячейку 20 переменной Ste_p сигнала

'---далее продолжение своей программы---
aleksandr-zh
Сверлит текстолит когтями
Сообщения: 1278
Зарегистрирован: Пн июн 18, 2007 21:51:20

Re: Bascom AVR непосредственное обращение к вутренней EEPROM

Сообщение aleksandr-zh »

а чем была сложность?
всё есть в справке, куча примеров в сети...
Ответить

Вернуться в «AVR»