void cs5532init (void) {
  for (int i = 0; i < 30; i++)
  {
    SPIsendadress(0xFF);
  }
  SPIsendadress(0xFE);
  RegistrandComand (0x03, 0x20000000);
  delay (1000);
  RegistrandComand (0x03, 0x00000000);
  delay (100);
  digitalWrite(SS, LOW);
  SPI.transfer(0x0B);
  digitalWrite(SS, HIGH);
  digitalWrite(SS, LOW);
  obmen = SPI.transfer(0x00);
  digitalWrite(SS, HIGH);
  if (obmen != 0x10)
  {
    while (1);
  }
  delay (100);
  RegistrandComand (0x03, 0x2080000);      // 0x02080000
  RegistrandComand (0x05, 0x2A400000);  //0x2A400000 - 32     0x32400000-64  //22480000 - 16
  SPIsendadress(0xC0);
  digitalWrite(SS, LOW);
}


void SPIsendadress (byte adress) {
  digitalWrite(SS, LOW);
  SPI.transfer(adress);
  digitalWrite(SS, HIGH);
}
void bigsend (uint32_t Value24bit)
{
  SPIsendValue (Value24bit >> 24);
  SPIsendValue (Value24bit >> 16);
  SPIsendValue (Value24bit >> 8);
  SPIsendValue (Value24bit);
}

void SPIsendValue (byte Value) {
  digitalWrite(SS, LOW);
  SPI.transfer(Value);
  digitalWrite(SS, HIGH);
}

void SPIread (void) {
  buf[4] = SPI.transfer(0x00);
  buf[3] = SPI.transfer(0x00);
  buf[2] = SPI.transfer(0x00);
  buf[1] = SPI.transfer(0x00);
  buf[0] = SPI.transfer(0x00);
  flags = true;
}

uint32_t diskret (uint32_t data, uint8_t dskrt){
  static uint32_t temp;
  if (dskrt == 1) return (data);  
  temp = (data / dskrt) * dskrt;
  if ((data % dskrt) >= dskrt/2) temp += dskrt;
  return (temp);
}


void RegistrandComand ( byte registr, uint32_t Comand)
{
  SPIsendadress (registr);
  bigsend (Comand);
}