Úklid-mám pár 16bit mcu ST10F276,64 MHz,832KB Flash,68KB Ram,24kanálů 10bitADC,TQFP-144=prostě slušný čip. Původní cena 40USD. Prodám kus za cca 150Kč+poštovné(nebo osobní odběr Praha4). Pište na: Mard
Řešil jsem otázku, jak uložit velký objem dat (záznamník fotek z CMOS kamery) a zjistil jsem, že Jesper Hansen to už za mne vyřešil. Jeho projekt popisuje připojení DRAM 512kB*8.
Důvod proč jsem chtěl připojit DRAM je ten, že je jich obvykle dostatek. Pokud nějakou nemáte, tak se podívejte raději pořádně do šuplíku po nějakém paměťovém modulu do PC, kde jsou hezky vedle sebe. A v nouzi nejvyšší zlikvidujte nějakou starou nepoužívanou VGA kartu. Další důvod byl ten, že jsem potřeboval nízkou spotřebu. SRAM paměti mají obvykle dost vysokou spotřebu, pokud nejde o nějaký typ se Stand-by režimem. Paměť DRAM požaduje proud jen, když se něco děje, jinak má spotřebu nízkou. Při nízké frekvenci refresh (nepředpokládám, že by zde byl čtenář, který by chtěl připojit paměť a nevěděl co tento termín znamená, proto nezabíhám do podrobností) je spotřeba minimální, Jesper měl 2-3 mA. Pozor však na pomalou refresh, pokud budete používat zařízení za vyšších teplot (typicky třeba v automobilu na slunci může být uvnitř teplota až 60C). Třetím důvodem je malý počet připojovacích vodičů, protože DRAM mají multilexovaná data a adresu, na rozdil od SRAM. A čtvrtý, poslední důvod je ten, že jsem chtěl mít v zásobě nějaké řešení, které bych mohl potřebovat do masovější výroby, a tam se hodí DRAM, protože je výrazně levnější než SRAM.
Dále již Jesper: Měl jsem spoustu Hitatchi M5M44800 DRAM pamětí, které jsem dostal skoro zadarmo, tak jsem se rozhodl to zkusit s jednou z nich. Jde o 512k DRAM x 8 bit. Využívá refresh cyklus 1024 (každý max 16 ms), a umožňuje CBR refresh dat (CAS-before-RAS). Použitý procesor je At90S8515. Refresh je ošetřen periodickým přerušením přes Timer1. Počet je nastaven na -125 a předdělička na hodnotu fClk/1024 (8 MHz), to dává přerušení každých 16 ms. Při každém přerušení, se provede 1024 krát cyklus obnovy, a při každé iteraci se dělá CBR refresh. Cyklus trvá celkem cca 1,6 ms, na celou realizaci. To znamená, že obnova spotřebuje asi 10% času procesoru. Mohlo by to být horší . Situace je trochu horší, když začneme studovat RD / WR cyklus. Vzhledem k tomu, že musíte provádět multiplexing adresy a dat, při každém přístupu, tak čtení z paměti trvá asi 3,6 us, a zápis trvá 3 us. Takže to znamená, že je možné číst a zapisovat do paměti s rychlostí asi 300 kB / sec. Ale vzhledem k tomu, že přístup do 512kB paměti je lineární, tak to není tak zlé.
Jesperův projekt, včetně zdrojového programu v C, je k dispozici zde.
Zdrojový kód:
Zdroj: Dram.c
/*
Jesper Hansen <jesperh@telia.com> This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
DRAM Test Code
--------------
PIN assignements on STK200 board
Port A
0..7 Data 0..7 and address 0..7
Port C
0 A8
1 A9R
2 -RAS
3 -CAS
4 -OE
5 -WR
*/
#include <io.h> //
#include <progmem.h> //
#include <signal.h> //
#include <interrupt.h> //
#include "uart.h"
#include "delay.h"
// At 8 MHz clock, the clock period is 125 nS
//
// 12.8 mS @ prescaler 5 (f/1024) (128 uS) requires
// a counter preload value of -125 = 0xff83
#define TI1_H 0xff
#define TI1_L 0x83
// Executes a 1024 cycle CAS-before-RAS refresh sequence
// on every timer interrupt (every 16 mS)
// This takes about 1.6 mS @ 8 MHz, so the refresh overhead
// is about 10 %
SIGNAL(SIG_OVERFLOW1)//timer 1 overflow every 16 mS
Mard 07/09 20:30 dawe, snažíme se odstranit chyby, které vznikly aktualizací software. Omlouvám se, na článek se pochopitelně podívám. Doporučuji ale vždy navíc poslat informační PM některému z adminů.