Ram.c

Go to the documentation of this file.
00001 #include "Ram.h"
00002 
00004 void Ram::writeBytes(uint16_t _addr, unsigned char *_data, unsigned char _length) {
00005 
00006      unsigned char *bytes;
00007      register unsigned char i;
00008      unsigned char slave = 0xA0;
00009      
00010      // send start-condition 
00011      i2c.sendStart();
00012      
00013      // FM24C512 specific addressing
00014      i2c.writeByte( slave ); 
00015      
00016      bytes = (unsigned char*)&_addr;
00017      i2c.writeByte(bytes[0]);
00018      i2c.writeByte(bytes[1]);
00019      
00020      // send data
00021      for (i=0; i<_length; i++) {
00022           i2c.writeByte(_data[i]);
00023      }
00024      
00025      // send stop condition
00026      i2c.sendStop();
00027 }
00028 
00030 void Ram::readBytes(uint16_t _addr, unsigned char *_data, unsigned char _length) {
00031 
00032 
00033      unsigned char *bytes;
00034      register unsigned char i=0;
00035      unsigned char slave = 0xA0;
00036 
00037      // send start-condition 
00038      i2c.sendStart();
00039      
00040      // FM24C512 specific addressing
00041      i2c.writeByte( slave ); 
00042           
00043      // send address
00044      bytes = (unsigned char*)&_addr;
00045      i2c.writeByte(bytes[0]);
00046      i2c.writeByte(bytes[1]);
00047      i2c.sendStart();
00048      i2c.writeByte(0xA1);
00049      
00050      // send data
00051      for (i=0; i<(_length-1); i++) {
00052           _data[i] = i2c.readByte();
00053      }
00054      _data[i] = i2c.readByteWithoutAck();
00055      
00056      
00057      // send stop condition
00058      i2c.sendStop();
00059 }
00060 
00061 
00063 void Ram::init() {
00064 
00065      //initialize SPI bus
00066      i2c.init();
00067      
00068 }
00069 
00075 void Ram::enableRAMChip() {
00076 
00077      // Chip-Select auf Low
00078 //   PORTA &= ~((1<<PA6));
00079 //   PORTA |= (1<<PA1) | (1<<PA0);
00080 }
00081 
00087 void Ram::disableRAMChip() {
00088 
00089      // Chip-Select auf High
00090 //   PORTA |= ((1<<PA6));
00091 //   PORTA |= (1<<PA1) | (1<<PA0);
00092 }
00093 
00094 
00096 unsigned char Ram::getRamStatusRegister() {
00097 /*
00098      unsigned char _sr = 0x00;
00099 
00100      // SPI Schnittstelle aktivieren
00101      spi.enableSPI();    
00102 
00103      // RAM Chip aktivieren 
00104      this->enableRAMChip();
00105 
00106      // Kommando schicken
00107      spi.writeData(RAM_RDSR);
00108      
00109      // Antwort auslesen
00110      _sr = spi.readData();
00111      
00112      // RAM Chip wieder deaktivieren
00113      this->disableRAMChip();
00114 
00115      // SPI wieder disabeln 
00116      spi.disableSPI();
00117 
00118      return _sr;*/
00119 }
00120 
00122 void Ram::setRamStatusRegister(unsigned char _sr) {
00123 
00124 //   // SPI Schnittstelle aktivieren
00125 //   spi.enableSPI();
00126 // 
00127 //   // Write-Enable Kommando schicken
00128 //   this->enableRAMChip();
00129 //   spi.writeData(RAM_WREN);
00130 //   this->disableRAMChip();
00131 // 
00132 //   // Write-Status-Register Kommando schicken
00133 //   this->enableRAMChip();
00134 //   spi.writeData(RAM_WRSR);
00135 //   spi.writeData(_sr);
00136 //   this->disableRAMChip();
00137 // 
00138 //   // SPI wieder disabeln 
00139 //   spi.disableSPI();
00140 }

Generated on Wed Mar 25 12:58:40 2009 for Crawling Robot Microcontroller Software by  doxygen 1.5.5