|
Виж темите без отговор | Виж активните теми
Дата и час: Пон Юли 27, 2026 6:14 pm
Проблеми с управлението на външна RAM с компилатор MCC18
| Автор |
Съобщение |
|
Цецо
Ранг: Форумен бог
Регистриран на: Пон Сеп 27, 2004 9:22 am Мнения: 15501 Местоположение: София
|
Мисля че ефекта ще е като на PIC18C801. Паметта си е там, достъпна е, но компилатора се инати да работи с нея като с нормална памет. Няма и как. Но да не разводняваме темата.
_________________ "Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.
|
| Чет Апр 13, 2006 12:20 am |
|
 |
|
TheWizard
Ранг: Форумен бог
Регистриран на: Сря Апр 27, 2005 12:48 pm Мнения: 6094
|
@Nikola Kirov - би трябвало да бъде автоматично(прозрачно за програмиста) поне при Infineona е така
Има настройки за времената на R, W, CE.... (това се отнася за външните РАМ и ФЛАШ или друга периферия)
в ПДФите са описани
|
| Чет Апр 13, 2006 1:06 am |
|
 |
|
Цецо
Ранг: Форумен бог
Регистриран на: Пон Сеп 27, 2004 9:22 am Мнения: 15501 Местоположение: София
|
Абе хора говорите за две различни архитектури. При пик и авер архитектурата имате две отделни адресно/даннови пространства. Самото ALU си знае че инструкцията се fetch-ва от едното, а операндите се взимат от второто. Двете пространства нямат общи точки, извън ALUто. На външната шина е изведено програмното пространство. Затова и на външната шина не може да се закачи рам с нормален достъп. Под нормален се разбира еквивалентен на вътрешния. Можете да закачите FLASH или РАМ, като идеята е да го ползвате за код или ако случайно го искате за данни - е достъпен по специален начин (при PIC чрез TAB регистрите),. Може и да има компилатор, който да скрива въпросния начин, но скоростта на достъп винаги ще е различна.
При инфинеона,ARM,MCF57XX, MSP430 имаме общо адресно пространство. Инструкции и операнди ALU то ги тегли от една и съща шина. Затова и инструкциите са по няколко цикъла (а не по 1 като при горните). Това значи че можете да си вържете РАМ, FLASH и каквото искате друго на краката отвън - те се мапват в адресното пространство и достъпа е еквивалентен на вътрешните (е може да има цикли на изчакване).
_________________ "Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.
|
| Чет Апр 13, 2006 3:00 pm |
|
 |
|
TheWizard
Ранг: Форумен бог
Регистриран на: Сря Апр 27, 2005 12:48 pm Мнения: 6094
|
Не бъркате ли малко FLASH/RAM със SFR(Data Memory) регистри
|
| Чет Апр 13, 2006 3:37 pm |
|
 |
|
Nikola Kirov
Ранг: Форумен бог
Регистриран на: Нед Окт 31, 2004 9:19 pm Мнения: 4464 Местоположение: Stara Zagora
|
Правилно го обяснява Цецо. В AVR работата с външен рам става не както с обикновенния и деиствително ще е по бавна. Но не и много бавна около 4Мбаита в секунда може да се очаква на 16Мегахерца честота на кварца. В наи лошата ситуация около 2MB
|
| Чет Апр 13, 2006 4:02 pm |
|
 |
|
TheWizard
Ранг: Форумен бог
Регистриран на: Сря Апр 27, 2005 12:48 pm Мнения: 6094
|
За PIC 18C801/601 това което ви вълнува се намира в
External Memory Interfacing Techniques for the PIC18F8XXX
AN869(C implementation) и AN778
void main(void)
{
rom unsigned int *DataPtr;
unsigned char i;
unsigned char v;
// Setup your data memory address.
DataPtr = (rom unsigned int*)0x20000;
// Write 0 - 255 at address
for ( i = 0; i < 255; i++ )
DataPtr[i] = i;
// Read back values
for ( i = 0; i < 255; i++ )
{
v = DataPtr[i];
if ( v != i ) // And compare it with expected value.
while(1); // On failure, it will loop here forever.
}
// When done stop here.
while(1);
}
|
| Чет Апр 13, 2006 4:57 pm |
|
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 0 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|