void init_MMA7660FC(void)
{
  int x, y, z;
  unsigned char val = 0;
  bt_accelInitFlag = 1;
  if(!eei2cLockFlag)
  {
    leds(0b111111);
    eei2cLock = locknew();
    lockclr(eei2cLock);
    eei2cLockFlag = 1;
  }
  if(!st_eeInitFlag) ee_init();
  while(lockset(eei2cLock));  
  i2c_out(st_eeprom, MMA7660_I2C, 
          MODE, 1, &val, 1);
  i2c_out(st_eeprom, MMA7660_I2C, 
          INTSU, 1, &val, 1);
  i2c_out(st_eeprom, MMA7660_I2C, 
          SR, 1, &val, 1);
  val = 0xC1;
  i2c_out(st_eeprom, MMA7660_I2C, 
          MODE, 1, &val, 1);
  i2c_stop(st_eeprom);        
  lockclr(eei2cLock);
  accels(&x, &y, &z);        
}
void ee_putByte(char value, int addr)
{
  if(!eeInitFlag) ee_init();
  unsigned char addrArray[] = {(char)(addr >> 8), (char)(addr&0xFF)};
  int n = i2c_out(eeprom, 0xA0, addrArray, 2, &value, 1);
  while(i2c_poll(eeprom, 0xA0)); 
}
Beispiel #3
0
//__attribute__((constructor))
int32_t badge_setup(void)
{
printf("Start\n");
  touch_start(TPCount, TPPins, TPDischarge);
  if(!eei2cLockFlag)
  {
printf("1\n");
    eei2cLock = locknew();
    lockclr(eei2cLock);
    eei2cLockFlag = 1;
printf("1\n");
  }
  init_MMA7660FC();
printf("1\n");
  if(!st_eeInitFlag) ee_init();
printf("1\n");
  cpcog = light_start();
printf("1\n");
  cogIRcom = ircom_start(IR_IN, IR_OUT, 2400, 38500);
printf("1\n");
  screen_init(OLED_CS, OLED_DC, OLED_DAT, OLED_CLK, OLED_RST, SSD1306_SWITCHCAPVCC, TYPE_128X64);
printf("1\n");
  screen_auto(ON);
printf("1\n");
  clear();
printf("1\n");
  text_size(LARGE);
    printf("Return\n");  
return 0;
}
unsigned char* ee_get_str(unsigned char *s, int n, int addr)
{
  if(!st_eeInitFlag) ee_init();
  // const unsigned char addrArray[] = {(char)(addr >> 8), (char)(addr&0xFF)};
  // i2c_in(st_eeprom, 0xA0, addrArray, 2, s, n);
  i2c_in(st_eeprom, 0x50, addr, 2, s, n);
  return s;
}
int ee_getInt(int addr)
{
  if(!st_eeInitFlag) ee_init();
  //unsigned char val[4] = {0, 0, 0, 0};
  int value;
  // const unsigned char addrArray[] = {(char)(addr >> 8), (char)(addr&0xFF)};
  // i2c_in(st_eeprom, 0xA0, addrArray, 2, val, 4);
  i2c_in(st_eeprom, 0x50, addr, 2, (unsigned char*) &value, 4);
  // int value = (int)((int)(val[0]) | (int)(val[1] << 8) | (int)(val[2] << 16) | (int)(val[3] << 24));
  return value;
}
float ee_get_float32(int addr)
{
  if(!eeInitFlag) ee_init();
  //int value = 0;
  unsigned char value[4] = {0, 0, 0, 0};
  unsigned char addrArray[] = {(char)(addr >> 8), (char)(addr & 0xFF)};
  i2c_in(eeprom, 0xA0, addrArray, 2, value, 4);
  float fpVal;
  memcpy(&fpVal, &value, sizeof value);
  return fpVal;
}
int accel(int axis)
{
  if(!st_eeInitFlag) ee_init();
  unsigned char val = 0;
  while(lockset(eei2cLock));
  i2c_in (st_eeprom, MMA7660_I2C, 
          axis, 1, &val, 1);
  i2c_stop(st_eeprom);        
  lockclr(eei2cLock);
  int g100 = raw2g100(val);
  if(axis == AY) g100 = -g100;
  return g100;
}