top of page

/*
 * 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);
 

bottom of page