Versión de Firmware con funciones de RAM incorporadas.

Dependencies:   mbed

Fork of VmRecorderV1dot1 by virtualmech

Committer:
JuanManuelAmador
Date:
Tue Jul 14 08:34:11 2015 +0000
Revision:
2:e818c80e6d5c
Funciones de memoria RAM introducidas.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
JuanManuelAmador 2:e818c80e6d5c 1 /**
JuanManuelAmador 2:e818c80e6d5c 2 * @author Juan Manuel Amador Olivares (virtualmech)
JuanManuelAmador 2:e818c80e6d5c 3 */
JuanManuelAmador 2:e818c80e6d5c 4 #include "MultipleRAM.h"
JuanManuelAmador 2:e818c80e6d5c 5
JuanManuelAmador 2:e818c80e6d5c 6 MultipleRAM::MultipleRAM(SPI spi) : _spi(spi){
JuanManuelAmador 2:e818c80e6d5c 7 spi.frequency(16000000); // Velocidad del puerto SPI
JuanManuelAmador 2:e818c80e6d5c 8 maxAddress = NRAMS*RAMBYTES - 1;
JuanManuelAmador 2:e818c80e6d5c 9
JuanManuelAmador 2:e818c80e6d5c 10 sram[0] = new SRAM23LCV1024(_spi,p20);
JuanManuelAmador 2:e818c80e6d5c 11 sram[1] = new SRAM23LCV1024(_spi,p19);
JuanManuelAmador 2:e818c80e6d5c 12 sram[2] = new SRAM23LCV1024(_spi,p18);
JuanManuelAmador 2:e818c80e6d5c 13 }
JuanManuelAmador 2:e818c80e6d5c 14
JuanManuelAmador 2:e818c80e6d5c 15 int MultipleRAM::readBytes(int address, char* buffer, int length){
JuanManuelAmador 2:e818c80e6d5c 16 // Se calcula la ram a la que se debe acceder y la dirección de esta
JuanManuelAmador 2:e818c80e6d5c 17 int index = address/RAMBYTES; // A qué memoria se va a acceder
JuanManuelAmador 2:e818c80e6d5c 18 int ramAddress = address - RAMBYTES*index; // Dirección real a la que se accede a la memoria
JuanManuelAmador 2:e818c80e6d5c 19 return sram[index]->readBytes(ramAddress, buffer, length);
JuanManuelAmador 2:e818c80e6d5c 20 }
JuanManuelAmador 2:e818c80e6d5c 21
JuanManuelAmador 2:e818c80e6d5c 22 int MultipleRAM::writeBytes(int address, char* buffer, int length){
JuanManuelAmador 2:e818c80e6d5c 23 // Se calcula la ram a la que se debe acceder y la dirección de esta
JuanManuelAmador 2:e818c80e6d5c 24 int index = address/RAMBYTES; // A qué memoria se va a acceder
JuanManuelAmador 2:e818c80e6d5c 25 int ramAddress = address - RAMBYTES*index; // Dirección real a la que se accede a la memoria
JuanManuelAmador 2:e818c80e6d5c 26 return sram[index]->writeBytes(ramAddress, buffer, length);
JuanManuelAmador 2:e818c80e6d5c 27 }
JuanManuelAmador 2:e818c80e6d5c 28
JuanManuelAmador 2:e818c80e6d5c 29 unsigned int MultipleRAM::getMaxAddress(){
JuanManuelAmador 2:e818c80e6d5c 30 return maxAddress;
JuanManuelAmador 2:e818c80e6d5c 31 }
JuanManuelAmador 2:e818c80e6d5c 32
JuanManuelAmador 2:e818c80e6d5c 33 MultipleRAM::~MultipleRAM() {
JuanManuelAmador 2:e818c80e6d5c 34 int i;
JuanManuelAmador 2:e818c80e6d5c 35 for (i = 0; i < NRAMS; i++){
JuanManuelAmador 2:e818c80e6d5c 36 delete sram[0];
JuanManuelAmador 2:e818c80e6d5c 37 }
JuanManuelAmador 2:e818c80e6d5c 38 }