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

 
 
> xmega128a1 + sdram
bekor
сообщение Jan 9 2011, 17:39
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 66
Регистрация: 28-06-09
Пользователь №: 50 704



возникла необходимость внешней памяти на xmega128a1
под рукой есть 8 штук SDRAM 8Mx8 byte (MT48LC8M8A2)
подскажите пожалуйста можно ли этот SDRAM присобачить к xmega128a1 ???
в даташите на мк написано что организация памяти должна быть 4 битная для SDRAM
а у меня вроде 8 битная 05.gif


--------------------
1 километр = 1024 метр
Go to the top of the page
 
+Quote Post
3 страниц V   1 2 3 >  
Start new topic
Ответов (1 - 39)
prottoss
сообщение Jan 9 2011, 19:53
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(bekor @ Jan 10 2011, 04:39) *
в даташите на мк написано что организация памяти должна быть 4 битная для SDRAM
а у меня вроде 8 битная 05.gif

XMEGA A MANUAL (Rev H) ->24. EBI - External Bus Interface -> 24.8 SDRAM Configuration

Chip Select 3 on the EBI can be configured from SDRAM operation, and the EBI must be config-
ured for 3-Port or 4-Port interface. The SDRAM can be configured for 4-bit or 8-bit data bus, and
4-Port interface must be used for 8-bit data bus.
The SDRAM interface signals from the EBI to
the SDRAM is listed in Table 24-2 on page 273.


--------------------
Go to the top of the page
 
+Quote Post
Duhas
сообщение Jan 10 2011, 05:02
Сообщение #3


Местный
***

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



вся проблема что в А1 нету 4-х портов под EBI...
Go to the top of the page
 
+Quote Post
bekor
сообщение Jan 10 2011, 05:28
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 66
Регистрация: 28-06-09
Пользователь №: 50 704



вот досада а 05.gif

скажите пожалуйста а достать 4 битную SDRAM очень трудно ?
на компютерный планках памяти вообше бывают 4 битные или там только 8 и 16 ???

мне нужно иметь как минимум 8МБ памяти,
этот вопрос решаемый или прийдется брать другую иксмегу ?
а кстати на каких моделях есть 4 порта под EBI ?


--------------------
1 километр = 1024 метр
Go to the top of the page
 
+Quote Post
prottoss
сообщение Jan 10 2011, 05:49
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(Duhas @ Jan 10 2011, 16:02) *
вся проблема что в А1 нету 4-х портов под EBI...
Да, на самом деле, для А1 только три портаsad.gif Не понятно нахрен они так сделали - тем паче что чипы 100-выводные...


--------------------
Go to the top of the page
 
+Quote Post
Duhas
сообщение Jan 10 2011, 08:11
Сообщение #6


Местный
***

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



хрен их разбери.. в спецификации семейства А есть слова о четырехпортовой конфигурации... в принципе мона часть адреса выставлять не железом а софтом..

могет атымел готовит линейку А0.. иль еще чего ..

ну можно наверно и по извращаться.. с помощью одного из битов адреса менять мультиплексором местами 4 бита.. только надо подумать как правильно это сделать..

Сообщение отредактировал Duhas - Jan 10 2011, 08:13
Go to the top of the page
 
+Quote Post
prottoss
сообщение Jan 10 2011, 08:22
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(bekor @ Jan 10 2011, 16:28) *
вот досада а 05.gif

скажите пожалуйста а достать 4 битную SDRAM очень трудно ?
Я не спец по SDRAM sm.gif но судя по даташитам, опять же, не вижу проблем подключить 8-битную как 4-битную. Просто не подключать старшие-младшие 4 бита.... Если, конечно, нет ограничений на количество (цену?) используемых чипов памяти.


--------------------
Go to the top of the page
 
+Quote Post
bekor
сообщение Jan 10 2011, 09:21
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 66
Регистрация: 28-06-09
Пользователь №: 50 704



Цитата(prottoss @ Jan 10 2011, 14:22) *
Я не спец по SDRAM sm.gif но судя по даташитам, опять же, не вижу проблем подключить 8-битную как 4-битную. Просто не подключать старшие-младшие 4 бита.... Если, конечно, нет ограничений на количество (цену?) используемых чипов памяти.


тоесть вы хотите сказать что если цеплять туда 8 битную память то единственной проблемой будет
то что использовать можно будет только половину памяти ?


--------------------
1 километр = 1024 метр
Go to the top of the page
 
+Quote Post
prottoss
сообщение Jan 10 2011, 09:25
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(bekor @ Jan 10 2011, 20:21) *
тоесть вы хотите сказать что если цеплять туда 8 битную память то единственной проблемой будет
то что использовать можно будет только половину памяти ?
Да.
Вы даташит какойнить хоть мельком открывали?sm.gif


--------------------
Go to the top of the page
 
+Quote Post
Duhas
сообщение Jan 10 2011, 09:29
Сообщение #10


Местный
***

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



ну если пол объема хватает - то не проблема ..
Go to the top of the page
 
+Quote Post
bekor
сообщение Jan 10 2011, 09:53
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 66
Регистрация: 28-06-09
Пользователь №: 50 704



вот здорово yeah.gif

есть еще вопросы
генератор кода в CVAVR требует ввести кучу параметров для всяких там задержк,
но не знаю откуда брать эти цыфры, в даташите на память их вроде небыло.
и еше как обяснить компилятору чтоб большие массивы хранить во внешней памяти а
все остальные глобальные переменные во внутреннюю память ?
Прикрепленное изображение


Сообщение отредактировал bekor - Jan 10 2011, 09:54


--------------------
1 километр = 1024 метр
Go to the top of the page
 
+Quote Post
Duhas
сообщение Jan 10 2011, 10:52
Сообщение #12


Местный
***

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



по задержкам мона порыть ДШ.. там должны быть времена доступа и т.д.. но память у вас я думаю много скоростнее хмеги.. так что задержки мона и по нулям... задержку инициализации - я бы поглядел в ДШ...

ну и на край мона минимальные задержки везде выставить...
Go to the top of the page
 
+Quote Post
bekor
сообщение Jan 10 2011, 10:55
Сообщение #13


Участник
*

Группа: Участник
Сообщений: 66
Регистрация: 28-06-09
Пользователь №: 50 704



а что на счет row bits, column bits,
и SDRAM self refresh ??

а еще компилятор ругается что только первые 64КБ будет использоваться с прямым доступом
потому что указатели 16 битные

это значит что для доступа к памяти придется вручную писать функции какие то ?

Сообщение отредактировал bekor - Jan 10 2011, 12:09


--------------------
1 километр = 1024 метр
Go to the top of the page
 
+Quote Post
Duhas
сообщение Jan 10 2011, 12:23
Сообщение #14


Местный
***

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



это смотрите в ДШ на память там слово в слово такие же параметры... кол-во столбцов и строк.. точнее их адресных битов...

ко тому как там ваш компилятор будет пользовать и прочее - не ко мне )
Go to the top of the page
 
+Quote Post
KKV2003
сообщение Jan 12 2011, 08:11
Сообщение #15


Участник
*

Группа: Участник
Сообщений: 30
Регистрация: 11-02-08
Пользователь №: 34 931



Меня лично их EBI-нутая система шин не порадовала и я под свой проект сделал подпрограммы управления SDRAM без всякой кривой аппаратной поддержки шины. Не так уж и сложно подергать ножками - скорости вроде хватает. Конечно, не сильно быстро получается ( по сравнению с аппаратным потоковым доступом на 50 МГц ), но "программное" потоковое чтение-запись в burst-режиме SDRAM вполне резко работает. А поскольку через EBI ATxMega работает без поддержки burst ( насколько я понял ), то и я ничего не теряю. И никаких заморочек с DMA не приходится придумывать... У меня просто данные валятся снаружи по 8 бит и прямо в SDRAM rolleyes.gif
В другом проекте на ATxMega мы подключили 4-х битную SDRAM - тоже весьма резко качает ( 2 цикла чтения полубайт = чтение байта ).

Насколько я понял, row bits - количество разрядов адреса для строк, column bits - то же для адресации внутри строки.
SDRAM self refresh - наверняка признак использования самостоятельной регенерации памяти ( хотя может быть и какой-нибудь режим указать придется, кто бы его читал ). Но в своем проекте я эту регенерацию использую ( самому морочиться с ручной регенерацией - не обязательно ). Считал/записал и перевел память обратно в режим само-ренегерации ( он же спящий режим )... santa2.gif
Go to the top of the page
 
+Quote Post
bekor
сообщение Jan 14 2011, 09:00
Сообщение #16


Участник
*

Группа: Участник
Сообщений: 66
Регистрация: 28-06-09
Пользователь №: 50 704



Подключил SDRAM (16M x 8) заработало сразу! rolleyes.gif

но есть две проблемы:

1. компилятор видит только первые 64КБ.
2. если поднести руку к микросхеме памяти уже на расстоянии 1см, контроллер сбросывается.

p.s. керамический кондер 100n у памяти между Vdd и Vss присутствует,
неиспользуемый полубайт а так же все остальные неиспользованные ноги оставил в воздухе,
может от этого происходит сброс ???

Сообщение отредактировал bekor - Jan 14 2011, 09:03


--------------------
1 километр = 1024 метр
Go to the top of the page
 
+Quote Post
prottoss
сообщение Jan 14 2011, 09:23
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(bekor @ Jan 14 2011, 19:00) *
Подключил SDRAM (16M x 8) заработало сразу! rolleyes.gif

но есть две проблемы:

1. компилятор видит только первые 64КБ.
2. если поднести руку к микросхеме памяти уже на расстоянии 1см, контроллер сбросывается.

p.s. керамический кондер 100n у памяти между Vdd и Vss присутствует,
неиспользуемый полубайт а так же все остальные неиспользованные ноги оставил в воздухе,
может от этого происходит сброс ???

1. В настройках проекта разрешите внешнюю шину памяти и укажите ее количество.
2. Конечно же нужно было подтянуть неиспользуемые линии данных к напряжению питания. Так же поступить и с остальными не используемыми входами... Очень может влиять разводка платы на помехоустойчивость.


--------------------
Go to the top of the page
 
+Quote Post
bekor
сообщение Jan 14 2011, 09:43
Сообщение #18


Участник
*

Группа: Участник
Сообщений: 66
Регистрация: 28-06-09
Пользователь №: 50 704



Цитата(prottoss @ Jan 14 2011, 15:23) *
1. В настройках проекта разрешите внешнюю шину памяти и укажите ее количество.

это я и делаю но компилер грит типа немогу исползовать больше 64КБ памяти потомучто у меня указатели 16 битные.


Цитата(prottoss @ Jan 14 2011, 15:23) *
2. Конечно же нужно было подтянуть неиспользуемые линии данных к напряжению питания. Так же поступить и с остальными не используемыми входами... Очень может влиять разводка платы на помехоустойчивость.


эту проблему я тоьк что решил,
надо было CS заземлить rolleyes.gif

Прикрепленное изображение


--------------------
1 километр = 1024 метр
Go to the top of the page
 
+Quote Post
prottoss
сообщение Jan 14 2011, 09:50
Сообщение #19


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(bekor @ Jan 14 2011, 19:33) *
это я и делаю но компилер грит типа немогу исползовать больше 64КБ памяти потомучто у меня указатели 16 битные.
Модель LARGE или HUGE нуна сделать

Код
#pragma location = 0x0100000
__no_init char membase[1024];

void main(void)
{    
      int i = 0;
    while(1)
          membase[i] = (char)(i++);
}

Компилируется без проблем (IAR 5.30)

Цитата(bekor @ Jan 14 2011, 19:43) *
Я же говорю - у Вас модель памяти - SMALL


--------------------
Go to the top of the page
 
+Quote Post
bekor
сообщение Jan 14 2011, 10:00
Сообщение #20


Участник
*

Группа: Участник
Сообщений: 66
Регистрация: 28-06-09
Пользователь №: 50 704



Цитата(prottoss @ Jan 14 2011, 15:50) *
Модель LARGE или HUGE нуна сделать


сделал LARGE но не помогло 05.gif


--------------------
1 километр = 1024 метр
Go to the top of the page
 
+Quote Post
KKV2003
сообщение Jan 14 2011, 10:05
Сообщение #21


Участник
*

Группа: Участник
Сообщений: 30
Регистрация: 11-02-08
Пользователь №: 34 931



А как насчет Huge-модели? Может пример от Atmel-а скомпилять? Они там все под эту модель.

Хотя у меня лично были очень большие проблемы с Huge-моделью памяти. Пока не отказался от нее, не работали простейшие вещи ( передача параметров в процедуру, циклы )... smile3046.gif
Go to the top of the page
 
+Quote Post
bekor
сообщение Jan 14 2011, 10:12
Сообщение #22


Участник
*

Группа: Участник
Сообщений: 66
Регистрация: 28-06-09
Пользователь №: 50 704



huge модели там нету
там только small, medium и large

уауууууу нашел заводской пример для SDRAM в папке с компилятором yeah.gif
ща попробую разобраться...


--------------------
1 километр = 1024 метр
Go to the top of the page
 
+Quote Post
bekor
сообщение Jan 14 2011, 12:16
Сообщение #23


Участник
*

Группа: Участник
Сообщений: 66
Регистрация: 28-06-09
Пользователь №: 50 704



разобрался rolleyes.gif
Код
/* External memory >64k write function */
void mem_write(unsigned long addr, unsigned char data)
{
unsigned char s,r;
s=SREG;
#asm("cli")
r=RAMPX;
RAMPX=((unsigned char *) &addr)[2];
*((unsigned char*) addr)=data;
RAMPX=r;
SREG=s;
}

/* External memory >64k read function */
unsigned char mem_read(unsigned long addr)
{
unsigned char s,r,data;
s=SREG;
#asm("cli")
r=RAMPX;
RAMPX=((unsigned char *) &addr)[2];
data=*((unsigned char*) addr);
RAMPX=r;
SREG=s;
return data;
}

работает !

но скорость чтения и записи не очень радует.
максимальная скорость получаеться примерно 100КБ/с при минимальных задержках в настройках EBI

это нормально или можно добиться большей скорости ?

Сообщение отредактировал bekor - Jan 14 2011, 12:19


--------------------
1 километр = 1024 метр
Go to the top of the page
 
+Quote Post
KKV2003
сообщение Jan 17 2011, 04:01
Сообщение #24


Участник
*

Группа: Участник
Сообщений: 30
Регистрация: 11-02-08
Пользователь №: 34 931



Цитата(bekor @ Jan 14 2011, 18:16) *
разобрался rolleyes.gif
Код
/* External memory >64k write function */

}

работает !

но скорость чтения и записи не очень радует.
максимальная скорость получаеться примерно 100КБ/с при минимальных задержках в настройках EBI

это нормально или можно добиться большей скорости ?

Вообще чтение из SDRAM происходит примерно за 7-8 тактов периферийной шины. А уж ее скорость задается пользователем. Если ядро запустить на 32 МГц и использовать удвоение частоты периферийной шины, то SDRAM будет работать на 64 МГц. И на чтение будет уходить порядка 100-150 нСек, что весьма не плохо.
"Курите" документацию по генераторам xMega - там много интересного. Свой проект я "выкурил" из этого атмеловского примера...

Сообщение отредактировал KKV2003 - Jan 17 2011, 04:07
Go to the top of the page
 
+Quote Post
bekor
сообщение Jan 17 2011, 06:53
Сообщение #25


Участник
*

Группа: Участник
Сообщений: 66
Регистрация: 28-06-09
Пользователь №: 50 704



Спасибо,
буду разбираться, хотя у меня и сейчас 32MHz


--------------------
1 километр = 1024 метр
Go to the top of the page
 
+Quote Post
bekor
сообщение Jan 17 2011, 21:42
Сообщение #26


Участник
*

Группа: Участник
Сообщений: 66
Регистрация: 28-06-09
Пользователь №: 50 704



вот настроил процессор на 32МГц а периферию на 64МГц
скорость работы SDRAM поднялась с 100КБ/с до 160КБ/с
но всеравно мало...
мне нужно хотябы 500КБ/с

что еще можно придумать ?

и еше вопрос, почему перед чтением в этих функциях глобально запрешаются прерывания ?
нельзя ли как то без этого, а то это будет мишать основной программе.



ууу разобрался [CENSORED] 08.gif
вся проблема была в том что основное времья жрало не само чтение а вызов функции чтения,
вынул эти строки из функции и прям в цикл в место вызова запихнул и скорость поднялась до 580КБ/с

теперь осталось разобраться с глобальным отключением прерываний,
непонятно зачем оно вообше нужно если обращение к SDRAM производиться апаратными средствами EBI ?

Сообщение отредактировал IgorKossak - Jan 17 2011, 22:12
Причина редактирования: Последнее предупреждение


--------------------
1 километр = 1024 метр
Go to the top of the page
 
+Quote Post
KKV2003
сообщение Jan 18 2011, 10:44
Сообщение #27


Участник
*

Группа: Участник
Сообщений: 30
Регистрация: 11-02-08
Пользователь №: 34 931



Поздравляю с успехом. А с прерываниями вряд-ли подскажу, ибо их аппаратным доступом не пользуюсь... Может доку их "докурить"? blush.gif
Go to the top of the page
 
+Quote Post
bekor
сообщение Jan 18 2011, 18:26
Сообщение #28


Участник
*

Группа: Участник
Сообщений: 66
Регистрация: 28-06-09
Пользователь №: 50 704



спасибо, rolleyes.gif
с прерыванием тоже разбирусь как нибудь,
точнее пока что проблем не выявилось с этим
пока все нормально работает...

Сообщение отредактировал bekor - Jan 18 2011, 18:28


--------------------
1 километр = 1024 метр
Go to the top of the page
 
+Quote Post
bekor
сообщение Feb 4 2011, 12:49
Сообщение #29


Участник
*

Группа: Участник
Сообщений: 66
Регистрация: 28-06-09
Пользователь №: 50 704



возможно ли писать этот кусок кода на ассемблере чтобы уменьшить время его выполнения ?
Код
unsigned char s,r,data;

s=SREG;
#asm("cli")
r=RAMPX;
RAMPX=((unsigned char *) &addr)[2];
data=*((unsigned char*) addr);
RAMPX=r;
SREG=s;


--------------------
1 километр = 1024 метр
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Feb 6 2011, 09:01
Сообщение #30


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Цитата(bekor @ Feb 4 2011, 15:49) *
возможно ли писать этот кусок кода на ассемблере чтобы уменьшить время его выполнения ?
Код
unsigned char s,r,data;

s=SREG;
#asm("cli")
r=RAMPX;
RAMPX=((unsigned char *) &addr)[2];
data=*((unsigned char*) addr);
RAMPX=r;
SREG=s;


Возможно всё. Что за компилятор?
Можно ассемблерную вставку написать, либо в отдельном nnn.S файле написать асмовую функцию.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
bekor
сообщение Feb 6 2011, 17:19
Сообщение #31


Участник
*

Группа: Участник
Сообщений: 66
Регистрация: 28-06-09
Пользователь №: 50 704



Цитата(demiurg_spb @ Feb 6 2011, 13:01) *
Возможно всё. Что за компилятор?

CodeVisionAVR rolleyes.gif


--------------------
1 километр = 1024 метр
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Feb 6 2011, 20:32
Сообщение #32


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Цитата(bekor @ Feb 6 2011, 20:19) *
CodeVisionAVR rolleyes.gif

тогда асмовые вставки выглядят примерно так:
Код
    #asm
       ld   r30,y+
       ld   r31,y+
       adiw r30,0
    #endasm
Напишите то что нужно Вам и будет счастье...

Вы с asm для AVR знакомы?

http://www.atmel.com/dyn/resources/prod_do...nts/doc0856.pdf
http://www.atmel.com/dyn/resources/prod_do...nts/doc1022.pdf
http://www.avr-asm-download.de/beginner_en.pdf


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
zombi
сообщение Feb 6 2011, 20:50
Сообщение #33


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Цитата(bekor @ Feb 4 2011, 15:49) *
возможно ли писать этот кусок кода на ассемблере чтобы уменьшить время его выполнения ?

Может для начала посмотреть как на асме выглядят эти процедуры после кодевижона.
И тогда подумать можно ли их ускорить.
Цитата(bekor @ Jan 18 2011, 00:42) *
и еше вопрос, почему перед чтением в этих функциях глобально запрешаются прерывания ?

Я тоже не понимаю зачем прерывания запрещать.
Возможно для того чтобы эти фукции были атомарны и также как LDS,STS не прерывались.
Go to the top of the page
 
+Quote Post
bekor
сообщение Feb 7 2011, 07:47
Сообщение #34


Участник
*

Группа: Участник
Сообщений: 66
Регистрация: 28-06-09
Пользователь №: 50 704



Цитата
Напишите то что нужно Вам и будет счастье...

хочу читать байт по заданному адресу с SDRAM.
Цитата
Вы с asm для AVR знакомы?

К сожалению с ASM не дружу.
Цитата
как на асме выглядят эти процедуры после кодевижона

Вот это
Код
         sx1=SREG;
         #asm("cli")
         rx1=RAMPX;
         RAMPX=((unsigned char *) &addr_a1)[2];
         vdac_a1=*((unsigned char*) addr_a1);
         RAMPX=rx1;
         SREG=sx1;
         addr_a1++;

компиль превратил в это:

Код
;         sx1=SREG;
_0x84:
    IN   R3,63
;         #asm("cli")
    cli
;         rx1=RAMPX;
    IN   R2,57
;         RAMPX=((unsigned char *) &addr_a1)[2];
    __GETB1MN _addr_a1,2
    OUT  0x39,R30
;         vdac_a1=*((unsigned char*) addr_a1);
    LDS  R26,_addr_a1
    LDS  R27,_addr_a1+1
    LD   R13,X
;         RAMPX=rx1;
    OUT  0x39,R2
;         SREG=sx1;
    OUT  0x3F,R3
;         addr_a1++;
    LDI  R26,LOW(_addr_a1)
    LDI  R27,HIGH(_addr_a1)
    CALL __GETD1P_INC
    __SUBD1N -1
    CALL __PUTDP1_DEC


Сообщение отредактировал bekor - Feb 7 2011, 07:53


--------------------
1 километр = 1024 метр
Go to the top of the page
 
+Quote Post
zombi
сообщение Feb 8 2011, 09:00
Сообщение #35


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Цитата(bekor @ Feb 7 2011, 10:47) *
Вот это
.
компиль превратил в это:
.

Мдаааа...
Лишний раз убедился что если нужно быстродействие нужно на асме писать.
Помочь это ускорить не смогу т.к. не знаком с кодевижоном и никогда не писал на СИ для мк.

З.Ы. А вот это макросы чтоли?
__GETB1MN _addr_a1,2
__SUBD1N -1

Go to the top of the page
 
+Quote Post
UraGun
сообщение Mar 1 2011, 18:34
Сообщение #36


Участник
*

Группа: Участник
Сообщений: 28
Регистрация: 11-10-05
Из: Запорожье
Пользователь №: 9 516



Сейчас вожусь с тем же самым. По моему твёрдому убеждению после прокуренной доки на эксмегу, и закупленных непонятно зачем на радиорынке SDRAM планок с 8ми и 16 битными микросхемами, нашел тайминги в доке на эксмегу. там четко показано последовательное вычитывание двух тетрад по одному адресу. А значит, при подключении 8ми битной микросхемы, траблов не будет, но и работать не будет тоже. т.к. вместо двух тетрад, расположенных по одному адресу будут вычитываться два последовательных адреса. За сим возня с 8ми и 16 битными кристаллами была отложена. Закупил за бугром 100 штук MT48LC32M4A2-7EG. Это именно то, что нужно, все 128 кбит при 4х разрядах данных. Щас как раз собираю макет. Кстаит, не только я применил эту память, вот эти ребятки тоже :
http://alvidi.de/avr_xmodul_V2_0_en.html
но у них пол памяти только, потому что 16 микросхема.
Кстати они весьма любезно выложили и схему :
http://alvidi.de/data_sheets/avr_xschematic_V2_0.pdf
Успехов, коллеги.

ЗЫ памятью могу поделиться. 5$/шт, остправлю в любой город куда ходят поезда из Запорожья. Без проблем скажем по 10 штучек, кому нужно. Мне пока столько не выработать. Пишите, звоните, если что +380-6666666-82 Михаил.
Go to the top of the page
 
+Quote Post
korobov_michael
сообщение Mar 3 2011, 04:52
Сообщение #37


Частый гость
**

Группа: Свой
Сообщений: 118
Регистрация: 11-03-07
Из: Украина, Харьков
Пользователь №: 26 059



Добрый день. У меня дополнительный вопрос по работе со SDRAM.

Стоит связка ATxmega128A1+MT48LC16M4A2P-75:G. Тесты прошли нормально, память с контроллером работает. Однако, когда контроллер при отладке попадает в breakpoint, и находится в стопе какое-то время, содержимое SDRAM разрушается. Компилятор и отладчик от ИАРа. Знает ли кто-нибудь, есть ли возможность как-то настроить отладчик, чтобы даже в стопе от EBI шли команды refresh на SDRAM? А то задолбался, чес-слово! К тому же думаю, что на ARM'ах, которые предназначены для работы со SDRAM, эта проблема ну уж точно должна была быть решена

Спасибо.
Go to the top of the page
 
+Quote Post
KKV2003
сообщение Mar 3 2011, 10:15
Сообщение #38


Участник
*

Группа: Участник
Сообщений: 30
Регистрация: 11-02-08
Пользователь №: 34 931



Сильно сомневаюсь, чтобы можно было бы тормознуть процессор с сохранением работоспособности памяти если это не заложено автоматически. Когда к памяти не производится обращение, то на нее можно ( нужно ) подавать команду SelfRefresh, то есть самостоятельной регенерации. В этом режиме ей даже тактовых импульсов подавать не надо. Но вот как действует EBI-контроллер - я не знаю совершенно.

Есть подозрение, что можно вручную контроллеру памяти указывать перейти в режим SelfRefresh - тогда даже если проц тормознется, то содержимое оперативки должно сохраняться. Хотя пока наши люди такой возможности не нашли. Да и отладчиком пока xMeg-у не мучили. Может и мы с таким столкнемся. Может быть Вам тоже не тормозить процессор - использовать другие методы отладки?

P.S. При работе с SDRAM без использования EBI таких проблем, мне кажется, не будет. Команду можно подать и вручную. Разве что тормознется в процессе обращения к памяти, ДО команды SelfRefresh.
Go to the top of the page
 
+Quote Post
AlexG_changed
сообщение Mar 3 2011, 10:55
Сообщение #39


Участник
*

Группа: Validating
Сообщений: 64
Регистрация: 16-06-05
Пользователь №: 6 073



Судя по справке AVR Studio 5 в JTAGICE mkII и 3 кое-что предусмотрено для регенерации SDRAM во время останова:

XMEGA OCD
OCD and clocking

When the MCU enters stopped mode, the OCD clock is used as MCU clock. The OCD clock is either the JTAG TCK if the JTAG interface is being used, or the PDI_CLK if the PDI interface is being used.

The JTAGICE mkII does not offer a variable clock rate for XMEGA targets.

SDRAM refresh in stopped mode

When the OCD is in stopped mode, the MCU is clocked by the PDI or JTAG clock, as described in the paragraph above. Since nothing is known of this frequency by the debugger or OCD, a low refresh period (0x10) is automatically used. This value can't be changed by the user.
Go to the top of the page
 
+Quote Post
korobov_michael
сообщение Mar 4 2011, 04:29
Сообщение #40


Частый гость
**

Группа: Свой
Сообщений: 118
Регистрация: 11-03-07
Из: Украина, Харьков
Пользователь №: 26 059



В AppNote 1312 нашел штуку, которая напрямую, конечно, не подойдет, но, быть может, окажется полезной.

2.5 SDRAM Refresh Considerations


...


When in sleep mode and the clock to the EBI module is stopped, it is possible to enter Self-refresh mode for the SDRAM module. To enable Self-refresh, set the SDRAM Self-refresh Enable bit (SDSREN) in Control Register B (CTRLB) for Chip Select block 3. Note that it is not possible to access the SDRAM when in Self-refresh mode.
Получится, конечно, полный изврат, но можно перед потенциальной точкой останова записать этот бит. Вопрос только в том, сколько времени требуется EBI, чтобы выполнить эту операцию.

Go to the top of the page
 
+Quote Post

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

 


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


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