<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[forum.rcl-radio.ru &mdash; DAC CS8416 + AD1852 — 24bit 192kHz (Arduino)]]></title>
		<link>http://forum.rcl-radio.ru/viewtopic.php?id=218</link>
		<atom:link href="http://forum.rcl-radio.ru/extern.php?action=feed&amp;tid=218&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «DAC CS8416 + AD1852 — 24bit 192kHz (Arduino)».]]></description>
		<lastBuildDate>Wed, 04 Nov 2020 09:49:01 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[DAC CS8416 + AD1852 — 24bit 192kHz (Arduino)]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?pid=2393#p2393</link>
			<description><![CDATA[<p>Основная статья - <a href="http://rcl-radio.ru/?p=86998">http://rcl-radio.ru/?p=86998</a></p><p><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2020/11/87c2c2771fd18671e386b8a02f145102.png" alt="http://forum.rcl-radio.ru/uploads/images/2020/11/87c2c2771fd18671e386b8a02f145102.png" /></span> <br /><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2020/11/f409f8e8a4aef35ee1d78239b71f9725.png" alt="http://forum.rcl-radio.ru/uploads/images/2020/11/f409f8e8a4aef35ee1d78239b71f9725.png" /></span> <br /><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2020/11/bac0cda84f4864b4e0f8f5b05d3dd029.png" alt="http://forum.rcl-radio.ru/uploads/images/2020/11/bac0cda84f4864b4e0f8f5b05d3dd029.png" /></span> <br /><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2020/11/48ab5ac8b0a98dfcc854931b84edf481.png" alt="http://forum.rcl-radio.ru/uploads/images/2020/11/48ab5ac8b0a98dfcc854931b84edf481.png" /></span> <br /><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2020/11/9e1e354249df91d739c7f9248b4228ed.png" alt="http://forum.rcl-radio.ru/uploads/images/2020/11/9e1e354249df91d739c7f9248b4228ed.png" /></span></p><div class="codebox"><pre><code>#include &lt;SPI.h&gt;
#include &lt;EEPROM.h&gt;
#include &lt;MsTimer2.h&gt;                    // http://rcl-radio.ru/wp-content/uploads/2018/11/MsTimer2.zip
#include &lt;Encoder.h&gt;                     // http://rcl-radio.ru/wp-content/uploads/2019/05/Encoder.zip
#include &lt;STM32_TM1637.h&gt;                // http://rcl-radio.ru/wp-content/uploads/2020/02/STM32_TM1637_V1_3.zip
 Encoder myEnc(8, 9);//CLK, DT
 STM32_TM1637 tm(3,2);// CLK, DIO

//  AD1852 SPI
// SS    10 // CLATCH
// MOSI  11 // CDATA
// SCK   13 // CCLK

unsigned long times,oldPosition  = -999,newPosition;
int w,vol,mute,code_mute,in;

void setup(){
 Serial.begin(9600);tm.brig(7); // ЯРКОСТЬ 0...7
 MsTimer2::set(1, to_Timer);MsTimer2::start();
 pinMode(A0,OUTPUT);  // RSEL1 CS8416
 pinMode(A1,OUTPUT);  // RSEL0 CS8416
 pinMode(7,INPUT); // кнопка SW энкодера
 pinMode(6,INPUT_PULLUP); // кнопка IN
 vol = EEPROM.read(0);in = EEPROM.read(1);
 switch(in){
 case 0: digitalWrite(A0, LOW);digitalWrite(A1, LOW);tm.print_float(1,0 ,0b00000100,0b01010100,0,0);break;// px0 
 case 1: digitalWrite(A0, LOW);digitalWrite(A1, HIGH);tm.print_float(2,0 ,0b00000100,0b01010100,0,0);break;// px1
 case 2: digitalWrite(A0, HIGH);digitalWrite(A1, LOW);tm.print_float(3,0 ,0b00000100,0b01010100,0,0);break;// px2
 }
 }// setup

void loop(){
   if(digitalRead(7)==LOW&amp;&amp;mute==0){mute=1;code_mute = 0b1000000;tm.print_float(vol,0 ,0b01000000,0b01000000,0b01000000,0b01000000);delay(200);}
   if(digitalRead(7)==LOW&amp;&amp;mute==1){mute=0;code_mute = 0;tm.print_float(vol,0 ,0,0,0,0);delay(200);}

   if(digitalRead(6)==LOW){in++;if(in&gt;2){in=0;}times=millis();w=1;
 switch(in){
 case 0: digitalWrite(A0, LOW);digitalWrite(A1, LOW);tm.print_float(1,0 ,0b00000100,0b01010100,0,0);break;// px0 
 case 1: digitalWrite(A0, LOW);digitalWrite(A1, HIGH);tm.print_float(2,0 ,0b00000100,0b01010100,0,0);break;// px1
 case 2: digitalWrite(A0, HIGH);digitalWrite(A1, LOW);tm.print_float(3,0 ,0b00000100,0b01010100,0,0);break;// px2
 }
 delay(2000);tm.print_float(vol,0 ,0,0,0,0);}

   if (newPosition != oldPosition){oldPosition = newPosition;
     vol=vol+newPosition;myEnc.write(0);newPosition=0;w=1;times=millis();
     if(vol&gt;127){vol=127;}if(vol&lt;0){vol=0;}
     Serial.println(vol);
     if(mute==0){tm.print_float(vol,0 ,0,0,0,0);}
     mute=0;code_mute = 0;
     }
  
   SPI.begin();
   WriteAD1852(0b100010010001+code_mute);  // register control 
   WriteAD1852(0b00+(vol&lt;&lt;9)); // register volume left
   WriteAD1852(0b10+(vol&lt;&lt;9)); // register volume right 
   delay(10);

   if(millis()-times&gt;5000 &amp;&amp; w==1){w=0;EEPROM.write(0,vol);EEPROM.write(1,in);}
  }// loop

 void WriteAD1852(uint16_t Data){
  SPI.beginTransaction(SPISettings(SPI_CLOCK_DIV2, MSBFIRST, SPI_MODE3));
  digitalWrite(SS, HIGH);
  delayMicroseconds(1);
  SPI.transfer16(Data);
  digitalWrite(SS, LOW);
  SPI.endTransaction();
}  

void to_Timer(){newPosition = myEnc.read()/4;}   </code></pre></div><p>SPI</p><p><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2020/11/36adbd29bf714919bab98cef258233fe.png" alt="http://forum.rcl-radio.ru/uploads/images/2020/11/36adbd29bf714919bab98cef258233fe.png" /></span> </p><p>REGISTER ADDRESSES<br />The lowest two bits of the 16-bit serial control data word are<br />decoded as the address of the register into which the upper<br />14 bits are written. </p><p><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2020/11/4b6d0e080887a5c6ed31f973a2b9ede2.png" alt="http://forum.rcl-radio.ru/uploads/images/2020/11/4b6d0e080887a5c6ed31f973a2b9ede2.png" /></span> </p><p>VOLUME LEFT AND VOLUME RIGHT REGISTERS<br />A write operation to the left or right volume registers activates<br />the autoramp, clickless volume control feature of the AD1852.<br />The upper 10 bits of the volume control word increment or<br />decrement by 1 at a rate equal to the input sample rate. </p><p> int vol = 0...127 <br /> DATA VOLUME REGISTR 16 bit = 0b00+(vol&lt;&lt;9) = 0b1111111000000010 = 0 дБ <br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0b0000000000000001 - min. volume</p><p> DATA CONTROL REGISTER = 0b100010010001<br /> 25 bit / I2S / Reset /&nbsp; no filter <br /><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2020/11/87e16793fd03176c14d37cb307e5397e.png" alt="http://forum.rcl-radio.ru/uploads/images/2020/11/87e16793fd03176c14d37cb307e5397e.png" /></span></p><br /><p><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2020/11/30082a58ce05e39aa0f45b55a0fb8fc7.png" alt="http://forum.rcl-radio.ru/uploads/images/2020/11/30082a58ce05e39aa0f45b55a0fb8fc7.png" /></span> </p><p><span class="attention-yellow"></span> <br /><span class="attention-yellow"></span> <br /><span class="attention-yellow"></span></p>]]></description>
			<author><![CDATA[null@example.com (liman324)]]></author>
			<pubDate>Wed, 04 Nov 2020 09:49:01 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?pid=2393#p2393</guid>
		</item>
	</channel>
</rss>
