Versión de Firmware con funciones de RAM incorporadas.
Dependencies: mbed
Fork of VmRecorderV1dot1 by
RAM/MultipleRAM.cpp@2:e818c80e6d5c, 2015-07-14 (annotated)
- 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?
User | Revision | Line number | New 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 | } |