/*
* Julien VILLEMEJANE - LEnsE - IOGS /Modifié par Laurence VUGTH, Kassandra GROUX, Romain MEUNIER et Lauren GUILLEMOT
*
* Bibliotheque de fonctions pour la SRAM MCP 23LCV1024 - SPI - 1Mbits
* Testée sur PIC16F1509
* version 1.1 - 2016-05-15
*
* A inclure dans les projets
* #include "sram_MCP.h"
* Nécessite la bibliothèque spi.h / spi.c
*/
/* Liaison SPI pour MCP 23LCV1024 */
#define CS_RAM PORTCbits.RC3
/* Commandes */
#define WRMR_RAM 0x01 // Write register
#define READ_RAM 0x03 // Read data
#define WRITE_RAM 0x02 // Write data
#define RSTIO 0xFF // Reset DUal IO
#define RDMR_RAM 0x05 // Read register
#define EDIO 0x3B // Enter dual I/O access
/* Mode de fonctionnement */
#define PAGE_MODE 0x80
#define BYTE_MODE 0x00
#define SEQ_MODE 0x40
/* Fonctions */
/*
* Initialisation de la RAM
* En mode BYTE
*/
void initRAM(void);
/*
* Changement de mode de fonctionnement
* entree : mode pouvant valoir : PAGE_MODE, BYTE_MODE ou SEQ_MODE
*/
void changeModeRAM(char mode);
/*
* Ecriture d'un octet à l'adresse passee en argument
* entrees :
* val : valeur à stocker
* adH : poids forts de l'adresse (sur 1 bit)
* adC : poids centraux de l'adresse (sur 1 octet)
* adL : poids faibles de l'adresse (sur 1 octet)
*
* adresse sur 17 bits : 128 kio
*/
void writeRAM(char val, char adH, char adC, char adL);
/*
* Lecture d'un octet à l'adresse passee en argument
* entrees :
* adH : poids forts de l'adresse (sur 1 bit)
* adC : poids centraux de l'adresse (sur 1 octet)
* adL : poids faibles de l'adresse (sur 1 octet)
* sortie :
* octet recupere
*
* adresse sur 17 bits : 128 kio
*/
char readRAM(char adH, char adC, char adL);
/*
* Ecriture d'un tableau de taille octets dont la première case est à l'adresse passée en argument
* Entrées:
* *tab : tableau à stocker
* taille: taille du tableau à stocker
* adH: poids forts de l'adresse de la première case (sur 1 bit)
* adC: poids centraux de l'adresse de la première case (sur 1 octet)
* adL: poids faibles de l'adresse de la première case (sur un octet)
* Sortie: long int i: en cas de problème pour savoir où s'est arrêtée l'incrémentation
*/
long write_tab_RAM(char *tab, long unsigned taille, unsigned char adH,unsigned char adC,unsigned char adL);
/*
* Lecture d'un tableau dont on passe l'adresse de la première case en argument:
* Entrées:
* *tab: tableau de char dans lequel on stocke le tableau à lire
* taille: taille du tableau
* adH : poids forts de l'adresse (sur 1 bit)
* adC : poids centraux de l'adresse (sur 1 octet)
* adL : poids faibles de l'adresse (sur 1 octet)
* sortie :
* long int i: sert à savoir jusqu'où a été l'incrémentation
*/
long read_tab_RAM(char * tab, long taille, char adH, char adC, char adL);