|
|
  |
Внешняя SRAM, Выбор скорости |
|
|
|
Nov 26 2006, 13:49
|

Ambidexter
    
Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282

|
Цитата(defunct @ Nov 24 2006, 23:34)  Цитата(=GM= @ Nov 24 2006, 16:55)  Зато он противоречит вашей рекомендации для 55-ти нс памяти (см. пост №2).
Да, потому что тайминг Tdvrh = 40ns, который вы взяли из даташита соответствует частоте тактирования 8Mhz. Мы же речь ведем о 16Mhz, т.о. длительность Tdvrh будет в два раза меньше, т.е. 20ns, что годится для 55ns памяти. Странно, но в дейташите Tdvrh = 40ns как для 8 МГц, так и для 16 МГц, возможно вы посмотрели не в ту графу таблицы. Но даже если бы Tdvrh=20 нс, то это не поможет, поскольку минимальная длительность импульса записи RD равна 52.5 нс, а 55-ти наносекундная память обеспечивает выдачу стабильных данных через 35 нс, т.е. минимальная длительность RD должна быть 35+20=55 нс. Возможно, что отдельные экземпляры памяти и МК как-то будут работать, но мы же говорим о соответствии спецификации (по-нашему - техническим условиям) на МК и SRAM, чтобы обеспечить работу системы в любых допустимых условиях эксплуатации.
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
Nov 27 2006, 14:02
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(=GM= @ Nov 26 2006, 13:49)  Но даже если бы Tdvrh=20 нс, то это не поможет, поскольку минимальная длительность импульса записи RD равна 52.5 нс, а 55-ти наносекундная память обеспечивает выдачу стабильных данных через 35 нс, т.е. минимальная длительность RD должна быть 35+20=55 нс. Возможно, что отдельные экземпляры памяти и МК как-то будут работать, но мы же говорим о соответствии спецификации (по-нашему - техническим условиям) на МК и SRAM, чтобы обеспечить работу системы в любых допустимых условиях эксплуатации. Output Enable to Output Valid 35ns это опять же время для 70ns памяти. У 55ns памяти это время чуть-чуть меньше. Например у памяти Winbond W24258-55LL парамер Output Enable to Output Valid = 27ns, 27ns+20ns = 47ns итого имеем даже запас: 52.125ns-47ns = 5.125ns
|
|
|
|
|
Nov 27 2006, 17:41
|

Ambidexter
    
Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282

|
Цитата(defunct @ Nov 27 2006, 11:02)  Цитата(=GM= @ Nov 26 2006, 13:49)  Но даже если бы Tdvrh=20 нс, то это не поможет, поскольку минимальная длительность импульса записи RD равна 52.5 нс, а 55-ти наносекундная память обеспечивает выдачу стабильных данных через 35 нс, т.е. минимальная длительность RD должна быть 35+20=55 нс. Возможно, что отдельные экземпляры памяти и МК как-то будут работать, но мы же говорим о соответствии спецификации (по-нашему - техническим условиям) на МК и SRAM, чтобы обеспечить работу системы в любых допустимых условиях эксплуатации.
Output Enable to Output Valid 35ns это опять же время для 70ns памяти. У 55ns памяти это время чуть-чуть меньше. Например у памяти Winbond W24258-55LL парамер Output Enable to Output Valid = 27ns, 27ns+20ns = 47ns итого имеем даже запас: 52.125ns-47ns = 5.125ns Насчет 27 нс понятно, вначале вроде упоминалась W24257, а не W24258. Тем не менее, запаса нет, вы принимаете Tdvrh равным 20 нс, а на самом деле Tdvrh=40 нс, следовательно, импульс чтения не может быть меньше, чем 27+40=67 нс. Не поленился, скачал свежий документ doc2467.pdf (10/06, ver.O). Проверьте сами, Tdvrh=40 нс для 16 МГц, с.331, таблица 137, строка 9.
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
Jan 30 2007, 15:00
|

В поисках истины
  
Группа: Свой
Сообщений: 431
Регистрация: 7-01-06
Из: Россия
Пользователь №: 12 923

|
ребят, не пинайте больно если что не так, но у меня ничего не работает  Есть ATMega128 и есть 2 диповых памяти выколупанных из старой i386 мамки, в частности MOSEL MS62256H-20NC. Всё это дело я присобачил к меге через защёлку 74ACT573PC и транзистор RK7002 в качестве ивертора CS второй "страницы" памяти. Пробую писать в память и ничего не пишеться - JTAGом смотрю что там в памяти с помощью той же меги. Инициализирую работу пробовал так: Код MCUCR |= _BV(SRE) | _BV(SRW10); // enable external memory (xram) XMCRA |= _BV(SRW01) | _BV(SRW00) | _BV(SRW11) | _BV(SRW10); XMCRB &= ~(_BV(XMM2) | _BV(XMM1) | _BV(XMM0)); дабы увеличить все задержки, но так же пробовал и максимально быстро, короче как тока не пробовал. Что я не так сдела можете подсказать? Ах да. Мега работает с кварцем 18.432MHz
|
|
|
|
|
Jan 30 2007, 15:42
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(Alexey Belyaev @ Jan 30 2007, 14:00)  Есть ATMega128 и есть 2 диповых памяти выколупанных из старой i386 мамки, в частности MOSEL MS62256H-20NC. Задержек определенно не надо. Наиболее вероятно - ошибка в разводке.. Проверить наличие сигналов RD/WR Проверить также сигнал ALE на входе LE защелки. CS защелки - на землю. Цитата Ах да. Мега работает с кварцем 18.432MHz не расчитана она на такую частоту. Цитата 74ACT573PC ACT серия часом не 3V? Mega с кварцем 18.432 на 3V будет сбоить.
|
|
|
|
|
Jan 31 2007, 13:06
|

В поисках истины
  
Группа: Свой
Сообщений: 431
Регистрация: 7-01-06
Из: Россия
Пользователь №: 12 923

|
Цитата(defunct @ Jan 30 2007, 18:42)  Цитата(Alexey Belyaev @ Jan 30 2007, 14:00)  Есть ATMega128 и есть 2 диповых памяти выколупанных из старой i386 мамки, в частности MOSEL MS62256H-20NC.
Задержек определенно не надо. Наиболее вероятно - ошибка в разводке.. Проверить наличие сигналов RD/WR Проверить также сигнал ALE на входе LE защелки. CS защелки - на землю. Цитата Ах да. Мега работает с кварцем 18.432MHz не расчитана она на такую частоту. Цитата 74ACT573PC ACT серия часом не 3V? Mega с кварцем 18.432 на 3V будет сбоить. Всё решено, спасибо за помощь. Защёлка оказалась дохлой. Купил новую всё заработало.
|
|
|
|
|
Jan 31 2007, 22:55
|
Группа: Новичок
Сообщений: 4
Регистрация: 31-01-07
Пользователь №: 24 916

|
Реально пользуем память 55 нс с полным временем 3 цикла (16/3 = 5,33 Мгц) По datasheet рассчитывать временные параметры далеко не подарок. Даже Samsung 55 нс память со скрипом пролазит по временным характеристикам.
А 20МГц ATMEGA с внешней памятью в природе существуют?
Сообщение отредактировал I_AM_WINER - Jan 31 2007, 22:58
|
|
|
|
|
Mar 10 2007, 16:41
|

В поисках истины
  
Группа: Свой
Сообщений: 431
Регистрация: 7-01-06
Из: Россия
Пользователь №: 12 923

|
В общем проблема у меня. Ресетится устройство. Понятно что из-за переполнения. Вот что у меня после компилдяции: Код AVR Memory Usage ---------------- Device: atmega128
Program: 42940 bytes (32.8% Full) (.text + .data + .bootloader)
Data: 5282 bytes (129.0% Full) (.data + .bss + .noinit)
EEPROM: 66 bytes (1.6% Full) (.eeprom)
Build succeeded with 0 Warnings... Линкуется вот так: Код avr-gcc.exe -mmcu=atmega128 -Wl,-u,vfprintf -Wl,-Tdata=0x801100,--defsym=__heap_end=0x80ffff -Wl,-Map=ppp.map at.o common.o fcs.o icmp.o ip.o main.o ppp.o tcp.o udp.o mmc.o logger.o time.o lcd.o ff.o -lprintf_flt -lm -o ppp.elf имею внешнюю оперативку в размере 64к. Делаю тест вот так: Код u16 SRAM_Test(void) { unsigned short j;
Reset_WD();
for (j = 0; j < RAM_SIZE; j++) { _SFR_MEM8(j + EXT_MEM_START) = (unsigned char)(j); Reset_WD(); } for (j = 0; j < RAM_SIZE; j++) { if (_SFR_MEM8(j + EXT_MEM_START) != (unsigned char)(j)) return j; Reset_WD(); }
return 0xffff; // past it's test } В JTAG вижу, что в память всё пишеться и наверное даже читается ибо тест проходит. Но блин когда начинаются обращения из кода типа: Код T_PPP PPP; .... memcpy_P((char*)&PPP.OUR_IP.ip32, OurIP, 4); .... рано или поздно оно ресетится. Помогите победить! ХЕЛП!
|
|
|
|
|
Mar 10 2007, 17:41
|
Знающий
   
Группа: Участник
Сообщений: 596
Регистрация: 26-05-06
Из: Москва
Пользователь №: 17 484

|
Цитата(Alexey Belyaev @ Mar 10 2007, 16:41)  Линкуется вот так: Код avr-gcc.exe -mmcu=atmega128 -Wl,-u,vfprintf -Wl,-Tdata=0x801100,--defsym=__heap_end=0x80ffff -Wl,-Map=ppp.map at.o common.o fcs.o icmp.o ip.o main.o ppp.o tcp.o udp.o mmc.o logger.o time.o lcd.o ff.o -lprintf_flt -lm -o ppp.elf Какая версия avr-ld? Или WinAVR? Вместо "-Tdata=0x801100" попробуйте использовать "--section-start,.data=0x801100". И проверте в .map файле в каких адресах расположена секция .data Анатолий.
|
|
|
|
|
Mar 13 2007, 05:27
|

В поисках истины
  
Группа: Свой
Сообщений: 431
Регистрация: 7-01-06
Из: Россия
Пользователь №: 12 923

|
Вот что видно в мапе: Код Memory Configuration
Name Origin Length Attributes text 0x00000000 0x00020000 xr data 0x00800060 0x0000ffa0 rw !x eeprom 0x00810000 0x00010000 rw !x *default* 0x00000000 0xffffffff
Linker script and memory map
Address of section .data set to 0x800100 LOAD C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5/crtm128.o 0x0080ffff __heap_end = 0x80ffff И ещё далее по тексту вот так: Код .data 0x00800100 0xcc load address 0x0000a6f0 0x00800100 PROVIDE (__data_start, .) *(.data) .data 0x00800100 0xc at.o .data 0x0080010c 0x1a common.o 0x00800110 MainBufferWr_Rx 0x0080010c rtc .data 0x00800126 0x48 main.o .data 0x0080016e 0x20 ppp.o .data 0x0080018e 0x2 tcp.o 0x0080018e TCP_Socket .data 0x00800190 0x1 mmc.o .data 0x00800191 0x2d logger.o .data 0x008001be 0xa ff.o .data 0x008001c8 0x4 C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr5\libc.a(rand.o) *(.gnu.linkonce.d*) 0x008001cc . = ALIGN (0x2) 0x008001cc _edata = . 0x008001cc PROVIDE (__data_end, .)
.bss 0x008001cc 0x13d6 0x008001cc PROVIDE (__bss_start, .) *(.bss) .bss 0x008001cc 0xc common.o 0x008001d5 TimerIntCounter 0x008001cd UART0_RxBufferRd 0x008001cf UART1_RxBufferRd 0x008001ce UART0_RxBufferWr 0x008001d7 LastResetReason 0x008001d1 MainBufferWr_Tx 0x008001d3 MainBufferRd_Rx 0x008001cc GPSModeSet 0x008001d0 UART1_RxBufferWr 0x008001d6 WatchdogCounter .bss 0x008001d8 0x2 icmp.o 0x008001d8 ICMP_Header .bss 0x008001da 0x4 ppp.o 0x008001da CodeHeader 0x008001dc PPPHeader .bss 0x008001de 0x4 tcp.o 0x008001e0 TCP_TmpPort 0x008001de TCP_Header .bss 0x008001e2 0x2 udp.o 0x008001e2 UDP_Header .bss 0x008001e4 0x2 mmc.o .bss 0x008001e6 0x899 logger.o .bss 0x00800a7f 0xc time.o .bss 0x00800a8b 0x4 ff.o *(COMMON) COMMON 0x00800a8f 0x5 at.o 0x00800a8f AT COMMON 0x00800a94 0x642 common.o .... Что скажете? ХЕЛП!
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|