Version of Robotron arcade game using LPC1768, a Gameduino shield, a serial EEPROM (for high scores), two microswitch joysticks and two buttons plus a box to put it in. 20 levels of mayhem.

Dependencies:   25LCxxx_SPI CommonTypes Gameduino mbed

Committer:
RichardE
Date:
Tue Jun 04 20:16:33 2013 +0000
Revision:
0:5fa232ee5fdf
Started conversion from Maple version of game. So far Gameduino seems to have been initialised OK and just displays a sign on message. Lots of commented out code.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
RichardE 0:5fa232ee5fdf 1 /*
RichardE 0:5fa232ee5fdf 2 * SOURCE FILE : I2CEEPROM.h
RichardE 0:5fa232ee5fdf 3 *
RichardE 0:5fa232ee5fdf 4 * Definition of class I2CEEPROM.
RichardE 0:5fa232ee5fdf 5 * Rountines for communicating with a serial EEPROM over an I2C link.
RichardE 0:5fa232ee5fdf 6 * EEPROM in question is a Microchip 24AA512.
RichardE 0:5fa232ee5fdf 7 * Remember you need pullup resistors on the SCL, SDA and WP lines.
RichardE 0:5fa232ee5fdf 8 *
RichardE 0:5fa232ee5fdf 9 */
RichardE 0:5fa232ee5fdf 10
RichardE 0:5fa232ee5fdf 11 #ifndef I2CEEPROMDefined
RichardE 0:5fa232ee5fdf 12
RichardE 0:5fa232ee5fdf 13 #define I2CEEPROMDefined
RichardE 0:5fa232ee5fdf 14
RichardE 0:5fa232ee5fdf 15 #include "Types.h"
RichardE 0:5fa232ee5fdf 16 // #include "CDFWire.h" // tweaked version of Wire library
RichardE 0:5fa232ee5fdf 17
RichardE 0:5fa232ee5fdf 18 class I2CEEPROM {
RichardE 0:5fa232ee5fdf 19
RichardE 0:5fa232ee5fdf 20 public :
RichardE 0:5fa232ee5fdf 21
RichardE 0:5fa232ee5fdf 22 /***************/
RichardE 0:5fa232ee5fdf 23 /* CONSTRUCTOR */
RichardE 0:5fa232ee5fdf 24 /***************/
RichardE 0:5fa232ee5fdf 25 I2CEEPROM();
RichardE 0:5fa232ee5fdf 26
RichardE 0:5fa232ee5fdf 27 /**************/
RichardE 0:5fa232ee5fdf 28 /* DESTRUCTOR */
RichardE 0:5fa232ee5fdf 29 /**************/
RichardE 0:5fa232ee5fdf 30 virtual ~I2CEEPROM();
RichardE 0:5fa232ee5fdf 31
RichardE 0:5fa232ee5fdf 32 /**************************************/
RichardE 0:5fa232ee5fdf 33 /* PREPARE TO COMMUNICATE WITH EEPROM */
RichardE 0:5fa232ee5fdf 34 /**************************************/
RichardE 0:5fa232ee5fdf 35 // Pass pointer to TwoWire object to use for I2C communications.
RichardE 0:5fa232ee5fdf 36 // Pass 3 bit address of EEPROM (as set by A0, A1 and A2 pins) in ea.
RichardE 0:5fa232ee5fdf 37 // Pass pin number to use for write protect in wp.
RichardE 0:5fa232ee5fdf 38 // void Open( TwoWire *wire, UInt8 ea, UInt8 wp );
RichardE 0:5fa232ee5fdf 39
RichardE 0:5fa232ee5fdf 40 /*********************************************/
RichardE 0:5fa232ee5fdf 41 /* SHUT DOWN COMMUNICATIONS LINK WITH EEPROM */
RichardE 0:5fa232ee5fdf 42 /*********************************************/
RichardE 0:5fa232ee5fdf 43 void Close( void );
RichardE 0:5fa232ee5fdf 44
RichardE 0:5fa232ee5fdf 45 /*****************************************/
RichardE 0:5fa232ee5fdf 46 /* DETERMINE IF LINK WITH EEPROM IS OPEN */
RichardE 0:5fa232ee5fdf 47 /*****************************************/
RichardE 0:5fa232ee5fdf 48 // Returns true if link is open.
RichardE 0:5fa232ee5fdf 49 bool IsOpen( void ) {
RichardE 0:5fa232ee5fdf 50 return isOpen;
RichardE 0:5fa232ee5fdf 51 }
RichardE 0:5fa232ee5fdf 52
RichardE 0:5fa232ee5fdf 53 /*************************************/
RichardE 0:5fa232ee5fdf 54 /* ATTEMPT TO READ A NUMBER OF BYTES */
RichardE 0:5fa232ee5fdf 55 /*************************************/
RichardE 0:5fa232ee5fdf 56 // Pass address within EEPROM in address.
RichardE 0:5fa232ee5fdf 57 // Pass pointer to buffer for bytes read in buffer.
RichardE 0:5fa232ee5fdf 58 // Pass number of bytes to read in count.
RichardE 0:5fa232ee5fdf 59 // Returns true if successful, false if not.
RichardE 0:5fa232ee5fdf 60 bool ReadBytes( UInt16 address, UInt8 *buffer, UInt16 count );
RichardE 0:5fa232ee5fdf 61
RichardE 0:5fa232ee5fdf 62 /**************************************/
RichardE 0:5fa232ee5fdf 63 /* ATTEMPT TO WRITE A NUMBER OF BYTES */
RichardE 0:5fa232ee5fdf 64 /**************************************/
RichardE 0:5fa232ee5fdf 65 // Pass address within EEPROM in address.
RichardE 0:5fa232ee5fdf 66 // Pass pointer to buffer of bytes to write in buffer.
RichardE 0:5fa232ee5fdf 67 // Pass number of bytes to write in count.
RichardE 0:5fa232ee5fdf 68 // Returns true if successful, false if not.
RichardE 0:5fa232ee5fdf 69 bool WriteBytes( UInt16 address, const UInt8 *buffer, UInt16 count );
RichardE 0:5fa232ee5fdf 70
RichardE 0:5fa232ee5fdf 71 private :
RichardE 0:5fa232ee5fdf 72
RichardE 0:5fa232ee5fdf 73 // Indicates connection with EEPROM is open.
RichardE 0:5fa232ee5fdf 74 bool isOpen;
RichardE 0:5fa232ee5fdf 75
RichardE 0:5fa232ee5fdf 76 // Pointer to object that does I2C communications.
RichardE 0:5fa232ee5fdf 77 // TwoWire *wire;
RichardE 0:5fa232ee5fdf 78
RichardE 0:5fa232ee5fdf 79 // Slave address consisting of three bits that identify the
RichardE 0:5fa232ee5fdf 80 // particular EEPROM on the I2C bus, plus bits 3 to 7 are
RichardE 0:5fa232ee5fdf 81 // set to 01010 binary (see 24AA512 dtasheet).
RichardE 0:5fa232ee5fdf 82 UInt8 slaveAddress;
RichardE 0:5fa232ee5fdf 83
RichardE 0:5fa232ee5fdf 84 // Pin number for write protect pin.
RichardE 0:5fa232ee5fdf 85 UInt8 wp;
RichardE 0:5fa232ee5fdf 86
RichardE 0:5fa232ee5fdf 87 /************************************/
RichardE 0:5fa232ee5fdf 88 /* ATTEMPT TO READ A CHUNK OF BYTES */
RichardE 0:5fa232ee5fdf 89 /************************************/
RichardE 0:5fa232ee5fdf 90 // Pass address within EEPROM in address.
RichardE 0:5fa232ee5fdf 91 // Pass pointer to buffer for bytes read in buffer.
RichardE 0:5fa232ee5fdf 92 // Returns false if a failure occurred whilst reading EEPROM.
RichardE 0:5fa232ee5fdf 93 // Pass number of bytes to read in count.
RichardE 0:5fa232ee5fdf 94 // Returns true if successful, false if not.
RichardE 0:5fa232ee5fdf 95 // The number of bytes read must not exceed CHUNK_SIZE.
RichardE 0:5fa232ee5fdf 96 bool ReadChunk( UInt16 address, UInt8 *buffer, UInt8 count );
RichardE 0:5fa232ee5fdf 97
RichardE 0:5fa232ee5fdf 98 /**************************************/
RichardE 0:5fa232ee5fdf 99 /* ATTEMPT TO WRITE A CHUNK TO EEPROM */
RichardE 0:5fa232ee5fdf 100 /**************************************/
RichardE 0:5fa232ee5fdf 101 // Pass address within EEPROM in address.
RichardE 0:5fa232ee5fdf 102 // Pass pointer to buffer of bytes to write in buffer.
RichardE 0:5fa232ee5fdf 103 // Pass number of bytes to write in count.
RichardE 0:5fa232ee5fdf 104 // Returns true if successful, false if not.
RichardE 0:5fa232ee5fdf 105 // The number of bytes written must not exceed WIRE_BUFSIZ - 2.
RichardE 0:5fa232ee5fdf 106 bool WriteChunk( UInt16 address, const UInt8 *buffer, UInt8 count );
RichardE 0:5fa232ee5fdf 107
RichardE 0:5fa232ee5fdf 108 };
RichardE 0:5fa232ee5fdf 109
RichardE 0:5fa232ee5fdf 110 #endif
RichardE 0:5fa232ee5fdf 111
RichardE 0:5fa232ee5fdf 112 /* END of I2CEEPROM.h */
RichardE 0:5fa232ee5fdf 113