Example #1
0
void writeCommand(int* dramAddress, int busNumber, int chipNumber, int pageNumber, int offset, int operationCode, int length, int tag)
{
	writeToRegister(WRITE_ADDR_OFFSET_CMD_0, (int)dramAddress);
	writeToRegister(WRITE_ADDR_OFFSET_CMD_1, (int)(((busNumber & 0xF) << 28) | ((chipNumber & 0xF) << 24) | (pageNumber & 0xFFFFFF)));
	writeToRegister(WRITE_ADDR_OFFSET_CMD_2, (int)(((offset & 0xFFFF) << 16) | ((operationCode & CMD_OP_CODE_MASK) << CMD_OP_CODE_LEFT_SHIFT) | (length & CMD_LENGTH_MASK)));
	writeToRegister(WRITE_ADDR_OFFSET_CMD_3, (int)((tag & 0x3F) << 26));
}
Example #2
0
void setForceMode(){
	uchar command[2];
	
	// MEAS_RATE set to force mode
	command[0] = 0x00;
	command[1] = 0x00;
	writeToRegister(MEAS_RATE0, command, 2);
	readFromRegister(MEAS_RATE0, command, 2);
	
	/********* I2C regs: Set interrupt enable *********/
	// interrupt output pin enable 
	command[0] = 0x01;
	writeToRegister(INT_CFG, command, 1);
	readFromRegister(INT_CFG, command, 1);
	// interrupt enable 
	command[0] = 0x01;
	writeToRegister(IRQ_ENABLE, command, 1);
	readFromRegister(IRQ_ENABLE, command, 1);
	
	// Reset the Interrupt
	//readFromRegister(IRQ_STATUS, command, 1);
	//writeToRegister(IRQ_STATUS, command, 1);
	
	// Send ALS_FORCE command for each measurement
}
Example #3
0
void MCP23018::begin(void)
{
  Serial.print("\nBeginning\n");
  // Set all pins to outputs
  writeToRegister(IODIRA,B11111111);
  writeToRegister(IODIRB,B00000000);
  SetPullups(B11111111, B00000000);
}
Example #4
0
boolean MFRC522::digitalSelfTestPass() {
  int i;
  byte n;

  byte selfTestResultV1[] = {0x00, 0xC6, 0x37, 0xD5, 0x32, 0xB7, 0x57, 0x5C,
                          0xC2, 0xD8, 0x7C, 0x4D, 0xD9, 0x70, 0xC7, 0x73,
                          0x10, 0xE6, 0xD2, 0xAA, 0x5E, 0xA1, 0x3E, 0x5A,
                          0x14, 0xAF, 0x30, 0x61, 0xC9, 0x70, 0xDB, 0x2E,
                          0x64, 0x22, 0x72, 0xB5, 0xBD, 0x65, 0xF4, 0xEC,
                          0x22, 0xBC, 0xD3, 0x72, 0x35, 0xCD, 0xAA, 0x41,
                          0x1F, 0xA7, 0xF3, 0x53, 0x14, 0xDE, 0x7E, 0x02,
                          0xD9, 0x0F, 0xB5, 0x5E, 0x25, 0x1D, 0x29, 0x79};
  byte selfTestResultV2[] = {0x00, 0xEB, 0x66, 0xBA, 0x57, 0xBF, 0x23, 0x95,
                          0xD0, 0xE3, 0x0D, 0x3D, 0x27, 0x89, 0x5C, 0xDE,
                          0x9D, 0x3B, 0xA7, 0x00, 0x21, 0x5B, 0x89, 0x82,
                          0x51, 0x3A, 0xEB, 0x02, 0x0C, 0xA5, 0x00, 0x49,
                          0x7C, 0x84, 0x4D, 0xB3, 0xCC, 0xD2, 0x1B, 0x81,
                          0x5D, 0x48, 0x76, 0xD5, 0x71, 0x61, 0x21, 0xA9,
                          0x86, 0x96, 0x83, 0x38, 0xCF, 0x9D, 0x5B, 0x6D,
                          0xDC, 0x15, 0xBA, 0x3E, 0x7D, 0x95, 0x3B, 0x2F};
  byte *selfTestResult;
  switch(getFirmwareVersion()) {
    case 0x91 :
      selfTestResult = selfTestResultV1;
      break;
    case 0x92 :
      selfTestResult = selfTestResultV2;
      break;
    default:
      return false;
  }

  reset();
  writeToRegister(FIFODataReg, 0x00);
  writeToRegister(CommandReg, MFRC522_MEM);
  writeToRegister(AutoTestReg, 0x09);
  writeToRegister(FIFODataReg, 0x00);
  writeToRegister(CommandReg, MFRC522_CALCCRC);

  // Wait for the self test to complete.
  i = 0xFF;
  do {
    n = readFromRegister(DivIrqReg);
    i--;
  } while ((i != 0) && !(n & 0x04));

  for (i=0; i < 64; i++) {
    if (readFromRegister(FIFODataReg) != selfTestResult[i]) {
      Serial.println(i);
      return false;
    }
  }
  return true;
}
Example #5
0
void uvReset(){
	uchar command[2];
	
	// send software reset command
	command[0] = SOFTWARE_RESET;
	writeToRegister(COMMAND, command, 1);
	readFromRegister(COMMAND, command, 1);
}
Example #6
0
int disableADCRecording(int bus)
{
	int oldParams = readFromRegister(READ_ADDR_OFFSET_ADC_SETTINGS);
	int clearMask = 0xFFFFFFFF ^ (0x1 << bus);
	int clearedOldParams = oldParams & clearMask;
	writeToRegister(WRITE_ADDR_OFFSET_ADC_SETTINGS, clearedOldParams);
	return 0;
}
Example #7
0
int setADCGain(int gain)
{
	int oldParams = readFromRegister(READ_ADDR_OFFSET_ADC_SETTINGS);
	int clearedOldParams = oldParams & 0xFFFFFF0F;
	int newParams = clearedOldParams | ((gain & 0xF) << 4);
	writeToRegister(WRITE_ADDR_OFFSET_ADC_SETTINGS, newParams);
	return 0;
}
Example #8
0
void startForceMeas(){
	uchar command[2];
	
	// Send ALS_FORCE Command (Need to be at standby-mode)
	command[0] = ALS_FORCE;
	writeToRegister(COMMAND, command,1);
	readFromRegister(COMMAND, command, 1);
}
Example #9
0
int setCCParams(int bus, int startParam, int endParam)
{
	int oldParams = readFromRegister(READ_ADDR_OFFSET_CC_PARAMS);
	int clearMask = 0xFFFFFFFF ^ (0xFF << (bus * 8));
	int clearedOldParams = oldParams & clearMask;
	int newParams = clearedOldParams | ((startParam & 0xF) << ((bus*8)+4)) | ((endParam & 0xF) << (bus*8));
	xil_printf("Setting CC Params: 0x%08X\n", newParams);
	writeToRegister(WRITE_ADDR_OFFSET_CC_PARAMS, newParams);
	return 0;
}
Example #10
0
int sendADCCommand(int chip, int rnw, int command)
{
	int adcCommand = ((chip & 0x1) << 17) | ((rnw & 0x1) << 16) | (command & 0xFFFF);
	xil_printf("Sending ADC Command: 0x%08X\n", adcCommand);
	writeToRegister(WRITE_ADDR_OFFSET_ADC_CMD, adcCommand);
	if (rnw) {
		return readFromRegister(READ_ADDR_OFFSET_ADC_RESP);
	} else {
		return 0;
	}
}
Example #11
0
void uvPre(){
	uchar command[2];
	
	I2C_rst();
	I2C_initial();
	DelayMS(100);	// wait from init to standby
	
	// prepare UV Meter/Send hardware key
	command[0] = 0x17;
	writeToRegister(HW_KEY, command, 1);
	readFromRegister(HW_KEY, command, 1);
}
Example #12
0
int MFRC522::requestTag(byte mode, byte *data) {
  int status, len;
  writeToRegister(BitFramingReg, 0x07);  // TxLastBists = BitFramingReg[2..0]

  data[0] = mode;
  status = commandTag(MFRC522_TRANSCEIVE, data, 1, data, &len);

  if ((status != MI_OK) || (len != 0x10)) {
    status = MI_ERR;
  }

  return status;
}
Example #13
0
void MCP23018::setBitInRegister(const uint8_t address_bit[], bool bitState)
{
  uint8_t temp;
  uint8_t address = address_bit[0];
  uint8_t bit = address_bit[1];

  // Use bitState to decide which masking to use (to 1 or to 0)
  if(bitState)
    temp = readFromRegister(address) | (1 << bit);
  else
    temp = readFromRegister(address) & ~(1 << bit);
  
  writeToRegister(address, temp);
}
Example #14
0
void MCP23018::setBitGroupInRegister(const uint8_t address, const uint8_t data, const uint8_t mask)
{
#ifdef DEBUG
    Serial.print("()setBitGroupInRegister(");
    Serial.print(address,HEX);
    Serial.print(",");
    Serial.print(data,HEX);
    Serial.print(",");
    Serial.print(mask,HEX);
    Serial.println(")");
#endif
  
  uint8_t temp = readFromRegister(address) & ( mask ^ 0xff) | ( data & mask );  
  writeToRegister(address, temp);
}
Example #15
0
void MFRC522::calculateCRC(byte *data, int len, byte *result) {
  int i;
  byte n;

  clearBitMask(DivIrqReg, 0x04);   // CRCIrq = 0
  setBitMask(FIFOLevelReg, 0x80);  // Clear the FIFO pointer

  //Writing data to the FIFO.
  for (i = 0; i < len; i++) {
    writeToRegister(FIFODataReg, data[i]);
  }
  writeToRegister(CommandReg, MFRC522_CALCCRC);

  // Wait for the CRC calculation to complete.
  i = 0xFF;
  do {
    n = readFromRegister(DivIrqReg);
    i--;
  } while ((i != 0) && !(n & 0x04));  //CRCIrq = 1

  // Read the result from the CRC calculation.
  result[0] = readFromRegister(CRCResultRegL);
  result[1] = readFromRegister(CRCResultRegM);
}
Example #16
0
void MFRC522::begin() {
  digitalWrite(_sad, HIGH);

  reset();

  //Timer: TPrescaler*TreloadVal/6.78MHz = 24ms
  writeToRegister(TModeReg, 0x8D);       // Tauto=1; f(Timer) = 6.78MHz/TPreScaler
  writeToRegister(TPrescalerReg, 0x3E);  // TModeReg[3..0] + TPrescalerReg
  writeToRegister(TReloadRegL, 30);
  writeToRegister(TReloadRegH, 0);

  writeToRegister(TxAutoReg, 0x40);      // 100%ASK
  writeToRegister(ModeReg, 0x3D);        // CRC initial value 0x6363

  setBitMask(TxControlReg, 0x03);        // Turn antenna on.
}
Example #17
0
int MFRC522::antiCollision(byte *serial) {
  int status, i, len;
  byte check = 0x00;

  writeToRegister(BitFramingReg, 0x00);  // TxLastBits = BitFramingReg[2..0]

  serial[0] = MF1_ANTICOLL;
  serial[1] = 0x20;
  status = commandTag(MFRC522_TRANSCEIVE, serial, 2, serial, &len);
  len = len / 8; // len is in bits, and we want each byte.
  if (status == MI_OK) {
    // The checksum of the tag is the ^ of all the values.
    for (i = 0; i < len-1; i++) {
      check ^= serial[i];
    }
    // The checksum should be the same as the one provided from the
    // tag (serial[4]).
    if (check != serial[i]) {
      status = MI_ERR;
    }
  }

  return status;
}
Example #18
0
void MFRC522::setBitMask(byte addr, byte mask) {
  byte current;
  current = readFromRegister(addr);
  writeToRegister(addr, current | mask);
}
Example #19
0
void MCP23018::SetPortB(uint8_t _data)
{
  writeToRegister(GPIOB,_data);
}
Example #20
0
int MFRC522::commandTag(byte cmd, byte *data, int dlen, byte *result, int *rlen) {
  int status = MI_ERR;
  byte irqEn = 0x00;
  byte waitIRq = 0x00;
  byte lastBits, n;
  int i;

  switch (cmd) {
  case MFRC522_AUTHENT:
    irqEn = 0x12;
    waitIRq = 0x10;
    break;
  case MFRC522_TRANSCEIVE:
    irqEn = 0x77;
    waitIRq = 0x30;
    break;
  default:
    break;
  }

  writeToRegister(CommIEnReg, irqEn|0x80);    // interrupt request
  clearBitMask(CommIrqReg, 0x80);             // Clear all interrupt requests bits.
  setBitMask(FIFOLevelReg, 0x80);             // FlushBuffer=1, FIFO initialization.

  writeToRegister(CommandReg, MFRC522_IDLE);  // No action, cancel the current command.

  // Write to FIFO
  for (i=0; i < dlen; i++) {
    writeToRegister(FIFODataReg, data[i]);
  }

  // Execute the command.
  writeToRegister(CommandReg, cmd);
  if (cmd == MFRC522_TRANSCEIVE) {
    setBitMask(BitFramingReg, 0x80);  // StartSend=1, transmission of data starts
  }

  // Waiting for the command to complete so we can receive data.
  i = 25; // Max wait time is 25ms.
  do {
    delay(1);
    // CommIRqReg[7..0]
    // Set1 TxIRq RxIRq IdleIRq HiAlerIRq LoAlertIRq ErrIRq TimerIRq
    n = readFromRegister(CommIrqReg);
    i--;
  } while ((i!=0) && !(n&0x01) && !(n&waitIRq));

  clearBitMask(BitFramingReg, 0x80);  // StartSend=0

  if (i != 0) { // Request did not time out.
    if(!(readFromRegister(ErrorReg) & 0x1D)) {  // BufferOvfl Collerr CRCErr ProtocolErr
      status = MI_OK;
      if (n & irqEn & 0x01) {
        status = MI_NOTAGERR;
      }

      if (cmd == MFRC522_TRANSCEIVE) {
        n = readFromRegister(FIFOLevelReg);
        lastBits = readFromRegister(ControlReg) & 0x07;
        if (lastBits) {
          *rlen = (n-1)*8 + lastBits;
        } else {
          *rlen = n*8;
        }

        if (n == 0) {
          n = 1;
        }

        if (n > MAX_LEN) {
          n = MAX_LEN;
        }

        // Reading the recieved data from FIFO.
        for (i=0; i<n; i++) {
          result[i] = readFromRegister(FIFODataReg);
        }
      }
    } else {
      status = MI_ERR;
    }
  }
  return status;
}
Example #21
0
int resetCCSum(int bus)
{
	writeToRegister(WRITE_ADDR_OFFSET_CC_RESET,(0x1 << bus));
	return 0;
}
Example #22
0
void MFRC522::reset() {
  writeToRegister(CommandReg, MFRC522_SOFTRESET);
}
Example #23
0
void MFRC522::clearBitMask(byte addr, byte mask) {
  byte current;
  current = readFromRegister(addr);
  writeToRegister(addr, current & (~mask));
}
Example #24
0
void issueCommand()
{
	writeToRegister(WRITE_ADDR_OFFSET_ISSUE_CMD, 0x1);
}
Example #25
0
void reset()
{
	xil_printf("Reseting the Flash Controller\n");
	writeToRegister(WRITE_ADDR_OFFSET_RESET, 0xA);
}