Funkar DPSRAM via "Extended Memory" på ATmega128?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
zwitter
Inlägg: 111
Blev medlem: 25 november 2004, 18:03:34
Ort: Göteborg
Kontakt:

Funkar DPSRAM via "Extended Memory" på ATmega128?

Inlägg av zwitter »

Jag kör en ATmega128 och jobbar med "Extended Memory" via ett DPSRAM för att skapa en kommunikationskanal mellan ATmega128:an och en FPGA. DPSRAMet har bla. en BUSY-kanal som indikerar när båda sidorna accessar samma minnesarea. Den sida som förlorar får BUSY=LOW, vilket betyder att läsningen eller skrivningen inte gick att utföra. Detta medför självklart att man får försöka göra sin operation igen tills man lyckas.

Men, som det verkar finns det inget stöd för detta i "Extended Memory"-funktionen som medföljer ATmega128:an. Tanken är väl att det ska användas av endast en part och då uppstår ju aldrig ett läge där det är "BUSY" på linjen.

Frågan är alltså om det går att använda DPSRAM med "Extended Memory" i detta läge.
:?:
Användarvisningsbild
chille
Inlägg: 2469
Blev medlem: 25 juni 2003, 20:54:41
Ort: Stockholm
Kontakt:

Inlägg av chille »

Det där med DPSRAM låter nice. Vad kostar dom och hur stora är dom?
macgyver
Inlägg: 321
Blev medlem: 8 juni 2005, 00:24:09
Ort: Göteborg
Kontakt:

Inlägg av macgyver »

kan du inte göra så att du kopplar BUSY till en negative-edge triggad interrupt portpinne på AVR:n
om du skriver koden i C så kan du ha adressvariabeln som en global och när en interrupt kommer läser ISR:en av senaste lästa/skrivna address, och repeterar läsningen/skrivningen
Användarvisningsbild
zwitter
Inlägg: 111
Blev medlem: 25 november 2004, 18:03:34
Ort: Göteborg
Kontakt:

Inlägg av zwitter »

chille: jag vet inte vad de kostar. kolla på farnell. 16k är de jag kör med.

macgyver: Du gav mej en idé. BUSY-signalen till cpu:n går nämligen via fpga:n. Om jag kollar mot den efter en skrivning samtidigt som jag låter fpga:n hålla BUSY-signalen till cpu:n tills jag ska göra en ny skrivning, då hinner cpu:n läsa den. Ägget är kläckt :)
macgyver
Inlägg: 321
Blev medlem: 8 juni 2005, 00:24:09
Ort: Göteborg
Kontakt:

Inlägg av macgyver »

japp det funkar ju, fast det blir ju lite långsamare att polla BUSY linjen efter varje skrivning/läsning än att använda interuppt vid kollision.
men om hastighet inte har nån betydelse så är det lättast som du säger att läsa av BUSY status från FPGA:n efter skrivning/läsning istället för att använda använda interuppt
Användarvisningsbild
Icecap
Inlägg: 26647
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

I ett projekt där jag använde SPRAM upptäckte jag at det var 2 adressor (högsta) som var roliga: Om sida A skrev till ena adressen skickades ett interrupt ut till sida B och om sida B skrev till andra adressen kom det en interrupt ut till sida A. Skitsmidigt, snacka om att kunna fylla på och skriva "kör för fan!"

Då jag hade DPRAMen som "ena sidan skriver och andra läser enbart" använde jag aldrig "krock-skyddet" men jag ville ha gjort det vid att koppla Wait till "Halt" på processorerna, en krock-skrivning hade då stoppat den ena processor 1 skriv cyklus och sedan hade den kör sedan.

Minnet jag använde är från Cypress som har många roliga saker.
Skriv svar