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

 
 
3 страниц V  < 1 2 3  
Reply to this topicStart new topic
> xmega128a1 + sdram
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 Текстовая версия Сейчас: 22nd July 2025 - 20:55
Рейтинг@Mail.ru


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