<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Alexey Bolshakov</title>
    <description>The latest articles on DEV Community by Alexey Bolshakov (@ua3mqj).</description>
    <link>https://dev.to/ua3mqj</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3831248%2F7b0c6671-cae6-45c2-97a8-0fa75341b7a2.jpg</url>
      <title>DEV Community: Alexey Bolshakov</title>
      <link>https://dev.to/ua3mqj</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ua3mqj"/>
    <language>en</language>
    <item>
      <title>AD9833 DDS Generator Board</title>
      <dc:creator>Alexey Bolshakov</dc:creator>
      <pubDate>Thu, 19 Mar 2026 16:52:05 +0000</pubDate>
      <link>https://dev.to/ua3mqj/ad9833-dds-generator-board-10p7</link>
      <guid>https://dev.to/ua3mqj/ad9833-dds-generator-board-10p7</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Felfheihtro5s2nvhj93x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Felfheihtro5s2nvhj93x.png" alt="Image AD9833"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A frequency generator board based on the AD9833 chip. Purchased as a frequency-tunable clock signal source. The board is equipped with a 25 MHz oscillator. It can generate signals from 0 to 12.5 MHz (though waveform quality may not be satisfactory across the entire range). The waveform can be switched between sine, sawtooth, and square wave. All necessary signals are brought out to pin headers. Controlled via SPI interface.&lt;/p&gt;

&lt;p&gt;Architecturally, it contains one 28-bit phase accumulator register, two frequency tuning registers, and two phase offset registers. Only one pair (frequency/phase) can be active at a time. This allows for frequency modulation without phase discontinuity or phase modulation, if needed. However, there is no dedicated hardware input for selecting the register pair – switching is possible only via SPI commands.&lt;/p&gt;

&lt;p&gt;Oscilloscope waveforms follow below.&lt;/p&gt;




&lt;h2&gt;
  
  
  Test setup
&lt;/h2&gt;

&lt;p&gt;To control the DDS, commands must be sent via SPI. I am using an STM8 (STM8S105K4T6) with its hardware SPI. It was crucial to find the correct SPI operating mode. For the STM8 (and likely for STM32 as well), this is Mode 2 (CPOL = 1, CPHA = 0). For more details, refer to the documentation.(&lt;a href="https://www.st.com/resource/en/reference_manual/cd00190271-stm8s-series-and-stm8af-series-8bit-microcontrollers-stmicroelectronics.pdf" rel="noopener noreferrer"&gt;RM0016&lt;/a&gt; - STM8S Series and STM8AF Series 8-bit microcontrollers (20.4 SPI registers)). Oscilloscope: C1-112A, 10 MHz bandwidth; probe: generic Chinese P6100 type, rated for 100 MHz. Multimeter: Aneng M20, used as a frequency counter.&lt;/p&gt;

&lt;p&gt;I did not write firmware for the microcontroller in the conventional sense. Instead, I flashed the STM8 with the &lt;a href="https://github.com/TG9541/stm8ef/wiki/STM8-eForth-Programming" rel="noopener noreferrer"&gt;eForth&lt;/a&gt; system and connected to it via a serial console. From the console, I sent SPI commands directly, after pre-defining the necessary intermediate words. It looked roughly like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;...

: word.hi $0100 / ;
: word.lo $00ff and ;

: spi_wr8 SPI_DR c! TXE? ;
: spi_wr16  dup word.lo swap word.hi spi_wr8 spi_wr8 ;
: spi_wr16n dup word.lo swap word.hi nss.lo spi_wr8 spi_wr8 BSY? nss.hi ;
: spi_wr32n nss.lo spi_wr16 spi_wr16 bsy? nss.hi ;

...

$2100 spi_wr16n         // reset
$5c20 $4a3d spi_wr32n   // freq0
%0111111111111111 %0100000000000000 spi_wr32n   // freq0
%0111111111111111 spi_wr16n %0100000000000000 spi_wr16n
$9c29 $8a3d spi_wr32n   // freq1
$c000 spi_wr16n         // phase0f
$e000 spi_wr16n         // phase1
$2000 spi_wr16n         // sine
$2020 spi_wr16n         // square
$2002 spi_wr16n         // saw      
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It turned out that I used the system interactively, rather than reflashing the firmware each time. This approach reminds me of working with the Erlang virtual machine, where you can debug and modify running code on the fly on production.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhmenxcavudzcsq9l18i1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhmenxcavudzcsq9l18i1.png" alt="Image stage"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Oscilloscope Waveforms
&lt;/h2&gt;

&lt;p&gt;Sine 1 KHz&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgre9dzga7hhnrybkjebz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgre9dzga7hhnrybkjebz.png" alt="Image Sine1 KHz"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;
  10 KHz, 50 KHz, 100 KHz, 500 KHz, 2 MHz, 4 MHz, 8 MHz
  &lt;br&gt;
10 KHz&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5dxg89qfbljtj3vhuzt6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5dxg89qfbljtj3vhuzt6.png" alt="Image 10 KHz"&gt;&lt;/a&gt;

&lt;p&gt;50 KHz&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpi53qz4gy44afwajj3dt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpi53qz4gy44afwajj3dt.png" alt="Image 50 KHz"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;100 KHz&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feh5nv6oq9bxomzjp8gg2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feh5nv6oq9bxomzjp8gg2.png" alt="Image 100 KHz"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;500 KHz&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8ve7ncv6li2zsxvm1ov4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8ve7ncv6li2zsxvm1ov4.png" alt="Image 500 KHz"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2 MHz&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc6gq0go0fuc27iexxcp8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc6gq0go0fuc27iexxcp8.png" alt="Image 2 MHz"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;4 MHz&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmxk39bzz5ln6jzyvlcqb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmxk39bzz5ln6jzyvlcqb.png" alt="Image 4 MHz"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;8 MHz&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjiy4salusx0vv0pp57t6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjiy4salusx0vv0pp57t6.png" alt="Image 8 MHz"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;Saw 1 KHz&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fahqs1lpi4brm6jmor8dc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fahqs1lpi4brm6jmor8dc.png" alt="Image Saw 1 KHz"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;
  10 KHz, 50 KHz, 100 KHz, 500 KHz, 2 MHz, 4 MHz, 8 MHz
  &lt;br&gt;
10 KHz&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnc7dlcl09rcqd9u2qcuy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnc7dlcl09rcqd9u2qcuy.png" alt="Image 10 KHz"&gt;&lt;/a&gt;

&lt;p&gt;50 KHz&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6u9000y6t6jk509jp808.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6u9000y6t6jk509jp808.png" alt="Image 50 KHz"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;100 KHz&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsmjy5uomci3yxtp55ax0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsmjy5uomci3yxtp55ax0.png" alt="Image 100 KHz"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;500 KHz&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgierffe0rmqpqxqed7lg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgierffe0rmqpqxqed7lg.png" alt="Image 500 KHz"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2 MHz&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgqynd0h8twct13rtitx2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgqynd0h8twct13rtitx2.png" alt="Image 2 MHz"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;4 MHz&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsdxyldw8i9zbh3bmn3mn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsdxyldw8i9zbh3bmn3mn.png" alt="Image 4 MHz"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;8 MHz&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F045pv58x0580w4wo25ao.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F045pv58x0580w4wo25ao.png" alt="Image 8 MHz"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;At 2 MHz, floating peaks on the sawtooth waveform are already visible. At 4 MHz, they become very pronounced. And at 8 MHz, we end up with 25/8 = 3.125 samples per period.&lt;/p&gt;

&lt;p&gt;Purely to explore my oscilloscope and probes, I also tried the square wave mode. However, I couldn't be bothered to recalculate the frequency grid. In square wave mode, the period is twice as long, so the resulting frequencies were different.&lt;/p&gt;

&lt;p&gt;5 kHz&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhoeizj2fsnbn97c61vcg.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhoeizj2fsnbn97c61vcg.jpeg" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;
  25 KHz, 250 KHz, 1 MHz, 2 MHz, 4 MHz
  &lt;br&gt;
25 KHz&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsq3p19qbz6of1ut4cio4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsq3p19qbz6of1ut4cio4.png" alt="Image 25 KHz"&gt;&lt;/a&gt;

&lt;p&gt;250 KHz&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxf9hzwuaib7166jmyri8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxf9hzwuaib7166jmyri8.png" alt="Image 250 KHz"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;1 MHz&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz28r0lvfv3po9dkv0bd9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz28r0lvfv3po9dkv0bd9.png" alt="Image 1 MHz"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2 MHz&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft3ieelatpjf4uuey8o2v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft3ieelatpjf4uuey8o2v.png" alt="Image 2 MHz"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;4 MHz&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5q96bjuitxchsjbrhf0p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5q96bjuitxchsjbrhf0p.png" alt="Image 4 MHz"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;4 MHz more wide&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F809p1xc65h4nbwnxhisf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F809p1xc65h4nbwnxhisf.png" alt="Image 4 MHz wide"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;Starting from 1 MHz, jitter is obviously present; at 2 MHz, it becomes visible on the oscilloscope waveform.&lt;/p&gt;

&lt;p&gt;By the way (for those who aren't aware), it's important to note that at high frequencies, to avoid degrading signal edges, you should use the probe in 10:1 attenuation mode. This reduces the probe's loading effect on the circuit (and it's even better to avoid using alligator clips altogether). However, this will require increasing the oscilloscope's input amplifier gain by a factor of 10 to compensate for the attenuation.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm701spnv3sctzfocffhw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm701spnv3sctzfocffhw.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Also, don't forget to adjust the probe compensation for accurate waveform display, using a small dielectric (non-metallic) screwdriver.&lt;/p&gt;

&lt;p&gt;For comparison, here's a photo showing the same signal — a 2 MHz square wave — captured with the probe set to 1X versus 10X attenuation.&lt;/p&gt;

&lt;p&gt;2 MHz - 1х&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Farvg1btsyj3ank7liduy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Farvg1btsyj3ank7liduy.png" alt="Image 2 MHz - 1х"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2 MHz - 10х&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhvems2wak8undlhvq8au.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhvems2wak8undlhvq8au.png" alt="Image 2 MHz - 10х"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;By the way, the original probe that came with the C1-112A is also quite decent.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F98989yjzxeu24nflfpx1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F98989yjzxeu24nflfpx1.png" alt="Image probe С1-112А"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2 MHz - 10х&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc5c12agelm0uzcx9xv3h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc5c12agelm0uzcx9xv3h.png" alt="Image 2 MHz - 10х"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusions
&lt;/h2&gt;

&lt;p&gt;I acquired this board for experiments in the field of hybrid sound synthesis for my synthesizer project. In the future, I plan to use it for a DCO (Digitally Controlled Oscillator) module — but not with a fixed Master Clock frequency; rather, with a frequency that is a multiple of the generated note frequency. This way, the DAC in the DCO can utilize its full scale and DAC resolution without skipping steps. All of this is part of the effort to combat generation accuracy loss and aliasing... But that's a whole different story.&lt;/p&gt;

&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;p&gt;1 The original version of this article&lt;/p&gt;

&lt;p&gt;&lt;a href="https://mysku.club/blog/aliexpress/79168.html" rel="noopener noreferrer"&gt;https://mysku.club/blog/aliexpress/79168.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2 My Telegram channel "Programmer's Tips": &lt;a href="https://t.me/ProProgs" rel="noopener noreferrer"&gt;https://t.me/ProProgs&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;3 eForth - Forth for microcontrollers&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/TG9541/stm8ef/wiki/STM8-eForth-Programming" rel="noopener noreferrer"&gt;https://github.com/TG9541/stm8ef/wiki/STM8-eForth-Programming&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;4 Links about my synth project&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/UA3MQJ/fpga-synth/wiki" rel="noopener noreferrer"&gt;https://github.com/UA3MQJ/fpga-synth/wiki&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/VitaSound/hdl-modules" rel="noopener noreferrer"&gt;https://github.com/VitaSound/hdl-modules&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://soundcloud.com/vitasynth" rel="noopener noreferrer"&gt;https://soundcloud.com/vitasynth&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.youtube.com/channel/UCGi-A9KGhKhKzVT_baVw3HA" rel="noopener noreferrer"&gt;http://www.youtube.com/channel/UCGi-A9KGhKhKzVT_baVw3HA&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://vk.com/vitasound" rel="noopener noreferrer"&gt;https://vk.com/vitasound&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://boosty.to/vitasound" rel="noopener noreferrer"&gt;https://boosty.to/vitasound&lt;/a&gt;&lt;/p&gt;

</description>
      <category>dds</category>
      <category>microchips</category>
      <category>stm8</category>
      <category>microcontroller</category>
    </item>
    <item>
      <title>Плата DDS генератора AD9833</title>
      <dc:creator>Alexey Bolshakov</dc:creator>
      <pubDate>Thu, 19 Mar 2026 16:35:39 +0000</pubDate>
      <link>https://dev.to/ua3mqj/plata-dds-ghienieratora-ad9833-bh7</link>
      <guid>https://dev.to/ua3mqj/plata-dds-ghienieratora-ad9833-bh7</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Felfheihtro5s2nvhj93x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Felfheihtro5s2nvhj93x.png" alt="Image AD9833"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Плата с DDS генератором частоты на базе микросхемы AD9833. Приобретена в качестве источника тактового сигнала, перестраиваемого по частоте. На плате установлен генератор на 25 МГц. Может генерировать сигналы от 0 до 12.5 МГц (но не во всем диапазоне вас устроит форма сигнала). Можно переключать форму сигнала: синус, пила, меандр. Всё, что нужно, выведено на штыревые контакты. Управляется по SPI. Архитектурно содержит один 28-битный регистр аккумулятора, два регистра приращения, два регистра фазы. В один момент времени может быть выбрана только одна из двух пар. Это позволит, если необходимо, сформировать частотную модуляцию сигнала без разрыва фазы или фазовую модуляцию. Однако, отдельного входа выбора пары нет, переключение возможно только командами по SPI.&lt;/p&gt;

&lt;p&gt;Далее осциллограммы&lt;/p&gt;




&lt;h2&gt;
  
  
  Стенд
&lt;/h2&gt;

&lt;p&gt;Для управления DDS нужно подавать команды по SPI. Использую STM8 (STM8S105K4T6) и его аппаратный SPI. Очень важно было найти правильный режим работы SPI. Для STM8 (и наверняка для STM32) это будет mode 2 (CPOL = 1 and CPHA = 0). Подробнее, см. документацию(&lt;a href="https://www.st.com/resource/en/reference_manual/cd00190271-stm8s-series-and-stm8af-series-8bit-microcontrollers-stmicroelectronics.pdf" rel="noopener noreferrer"&gt;RM0016&lt;/a&gt; - STM8S Series and STM8AF Series 8-bit microcontrollers (20.4 SPI registers)). Осциллограф С1-112А полоса 10 МГц, щуп китайский на 100 китайских МГц (P6100). Мультиметр Aneng M20 в качестве частотомера.&lt;/p&gt;

&lt;p&gt;Прошивку для микроконтроллера в привычном для всех виде я не писал. Просто поставил на микроконтроллер STM8 систему &lt;a href="https://github.com/TG9541/stm8ef/wiki/STM8-eForth-Programming" rel="noopener noreferrer"&gt;eForth&lt;/a&gt; и далее подключался к нему через консоль. И уже в консоли отправлял команды через SPI, задав перед этим необходимые промежуточные слова. Выглядело это примерно вот так&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;...

: word.hi $0100 / ;
: word.lo $00ff and ;

: spi_wr8 SPI_DR c! TXE? ;
: spi_wr16  dup word.lo swap word.hi spi_wr8 spi_wr8 ;
: spi_wr16n dup word.lo swap word.hi nss.lo spi_wr8 spi_wr8 BSY? nss.hi ;
: spi_wr32n nss.lo spi_wr16 spi_wr16 bsy? nss.hi ;

...

$2100 spi_wr16n         // reset
$5c20 $4a3d spi_wr32n   // freq0
%0111111111111111 %0100000000000000 spi_wr32n   // freq0
%0111111111111111 spi_wr16n %0100000000000000 spi_wr16n
$9c29 $8a3d spi_wr32n   // freq1
$c000 spi_wr16n         // phase0f
$e000 spi_wr16n         // phase1
$2000 spi_wr16n         // sine
$2020 spi_wr16n         // square
$2002 spi_wr16n         // saw      
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Получилось, что я пользовался системой интерактивно, а не перепрошивая каждый раз. Мне такой подход напоминает работу с Erlang виртуальной машиной, когда можно на ходу отлаживать и менять работающий код.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhmenxcavudzcsq9l18i1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhmenxcavudzcsq9l18i1.png" alt="Image stage"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Осциллограммы
&lt;/h2&gt;

&lt;p&gt;Синус 1 КГц&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgre9dzga7hhnrybkjebz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgre9dzga7hhnrybkjebz.png" alt="Image Синус 1 КГц"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;
  10 КГц, 50 КГц, 100 КГц, 500 КГц, 2 МГц, 4 МГц, 8 МГц
  &lt;br&gt;
10 КГц&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5dxg89qfbljtj3vhuzt6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5dxg89qfbljtj3vhuzt6.png" alt="Image 10 КГц"&gt;&lt;/a&gt;

&lt;p&gt;50 КГц&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpi53qz4gy44afwajj3dt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpi53qz4gy44afwajj3dt.png" alt="Image 50 КГц"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;100 КГц&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feh5nv6oq9bxomzjp8gg2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feh5nv6oq9bxomzjp8gg2.png" alt="Image 100 КГц"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;500 КГц&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8ve7ncv6li2zsxvm1ov4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8ve7ncv6li2zsxvm1ov4.png" alt="Image 500 КГц"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2 МГц&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc6gq0go0fuc27iexxcp8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc6gq0go0fuc27iexxcp8.png" alt="Image 2 МГц"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;4 МГц&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmxk39bzz5ln6jzyvlcqb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmxk39bzz5ln6jzyvlcqb.png" alt="Image 4 МГц"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;8 МГц&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjiy4salusx0vv0pp57t6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjiy4salusx0vv0pp57t6.png" alt="Image 8 МГц"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;Пила 1 КГц&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fahqs1lpi4brm6jmor8dc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fahqs1lpi4brm6jmor8dc.png" alt="Image Пила 1 КГц"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;
  10 КГц, 50 КГц, 100 КГц, 500 КГц, 2 МГц, 4 МГц, 8 МГц
  &lt;br&gt;
10 КГц&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnc7dlcl09rcqd9u2qcuy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnc7dlcl09rcqd9u2qcuy.png" alt="Image 10 КГц"&gt;&lt;/a&gt;

&lt;p&gt;50 КГц&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6u9000y6t6jk509jp808.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6u9000y6t6jk509jp808.png" alt="Image 50 КГц"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;100 КГц&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsmjy5uomci3yxtp55ax0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsmjy5uomci3yxtp55ax0.png" alt="Image 100 КГц"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;500 КГц&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgierffe0rmqpqxqed7lg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgierffe0rmqpqxqed7lg.png" alt="Image 500 КГц"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2 МГц&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgqynd0h8twct13rtitx2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgqynd0h8twct13rtitx2.png" alt="Image 2 МГц"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;4 МГц&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsdxyldw8i9zbh3bmn3mn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsdxyldw8i9zbh3bmn3mn.png" alt="Image 4 МГц"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;8 МГц&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F045pv58x0580w4wo25ao.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F045pv58x0580w4wo25ao.png" alt="Image 8 МГц"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;На 2 МГц уже видно плавающие пики пилы. На 4 МГц видно уже очень отчетливо. Ну и на 8 МГц у нас получается 25/8 = 3,125 отсчета на период.&lt;/p&gt;

&lt;p&gt;Исключительно ради изучения своего осциллографа и щупов, попробовал меандр. Правда сетку частот пересчитывать было лень. В режиме меандра, период в 2 раза длиннее, поэтому частоты получились другие.&lt;/p&gt;

&lt;p&gt;5 КГц&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fge7bqykm1edhv6737e3z.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fge7bqykm1edhv6737e3z.jpeg" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;
  25 КГц, 250 КГц, 1 МГц, 2 МГц, 4 МГц
  &lt;br&gt;
25 КГц&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsq3p19qbz6of1ut4cio4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsq3p19qbz6of1ut4cio4.png" alt="Image 25 КГц"&gt;&lt;/a&gt;

&lt;p&gt;250 КГц&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxf9hzwuaib7166jmyri8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxf9hzwuaib7166jmyri8.png" alt="Image 250 КГц"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;1 МГц&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz28r0lvfv3po9dkv0bd9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz28r0lvfv3po9dkv0bd9.png" alt="Image 1 МГц"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2 МГц&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft3ieelatpjf4uuey8o2v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft3ieelatpjf4uuey8o2v.png" alt="Image 2 МГц"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;4 МГц&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5q96bjuitxchsjbrhf0p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5q96bjuitxchsjbrhf0p.png" alt="Image 4 МГц"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;4 МГц более развернуто&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F809p1xc65h4nbwnxhisf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F809p1xc65h4nbwnxhisf.png" alt="Image 4 МГц wide"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;br&gt;
&lt;br&gt;&lt;br&gt;
Начиная с 1 МГц, ясное дело - джиттер, на 2 МГц его видно на осциллограмме.&lt;/p&gt;

&lt;p&gt;Кстати (для тех, кто не в курсе), важно, что на высоких частотах, чтобы не портить фронты, нужно использовать щуп в режиме 1:10, чтобы он меньше влиял на схему (а еще лучше не использовать крокодил). Но потребуется усилить сигнал в 10 раз уже на входном усилителе осциллографа.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm701spnv3sctzfocffhw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm701spnv3sctzfocffhw.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Так же, не стоит забывать подстраивать делитель для правильного отображения, диэлектрической отверточкой.&lt;/p&gt;

&lt;p&gt;Для сравнения, фото, как выглядит один и тот же сигнал - меандр 2 МГц, но 1Х или 10Х&lt;/p&gt;

&lt;p&gt;2 МГц - 1х&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Farvg1btsyj3ank7liduy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Farvg1btsyj3ank7liduy.png" alt="Image 2 МГц - 1х"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2 МГц - 10х&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhvems2wak8undlhvq8au.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhvems2wak8undlhvq8au.png" alt="Image 2 МГц - 10х"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Кстати, родной щуп от С1-112А тоже неплох&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F98989yjzxeu24nflfpx1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F98989yjzxeu24nflfpx1.png" alt="Image щуп от С1-112А"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2 МГц - 10х&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc5c12agelm0uzcx9xv3h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc5c12agelm0uzcx9xv3h.png" alt="Image 2 МГц - 10х"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Выводы
&lt;/h2&gt;

&lt;p&gt;Эту плату я брал для экспериментов в области создания гибридного синтеза звука своего синтезаторного проекта. В дальнейшем планируется использовать для модуля генератора DCO (Digital VCO) но не с фиксированной частотой Master Clock а с частотой, кратной частоте генерации, для того, чтобы DAC в DCO использовал всю свою шкалу и разрядность, не пропускал шаги. Все это в рамках борьбы с потерей точности генерации, борьбы с алиасингом... Но это уже совсем другая история&lt;/p&gt;

&lt;h2&gt;
  
  
  Ссылки
&lt;/h2&gt;

&lt;p&gt;1 Исходная версия этой статьи&lt;/p&gt;

&lt;p&gt;&lt;a href="https://mysku.club/blog/aliexpress/79168.html" rel="noopener noreferrer"&gt;https://mysku.club/blog/aliexpress/79168.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2 Мой канал в TG "Советы программиста" &lt;a href="https://t.me/ProProgs" rel="noopener noreferrer"&gt;https://t.me/ProProgs&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;3 eForth - язык Forth для микроконтроллеров &lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/TG9541/stm8ef/wiki/STM8-eForth-Programming" rel="noopener noreferrer"&gt;https://github.com/TG9541/stm8ef/wiki/STM8-eForth-Programming&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;4 Ссылки по моему синтезаторному проекту&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/UA3MQJ/fpga-synth/wiki" rel="noopener noreferrer"&gt;https://github.com/UA3MQJ/fpga-synth/wiki&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/VitaSound/hdl-modules" rel="noopener noreferrer"&gt;https://github.com/VitaSound/hdl-modules&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://soundcloud.com/vitasynth" rel="noopener noreferrer"&gt;https://soundcloud.com/vitasynth&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.youtube.com/channel/UCGi-A9KGhKhKzVT_baVw3HA" rel="noopener noreferrer"&gt;http://www.youtube.com/channel/UCGi-A9KGhKhKzVT_baVw3HA&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://vk.com/vitasound" rel="noopener noreferrer"&gt;https://vk.com/vitasound&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://boosty.to/vitasound" rel="noopener noreferrer"&gt;https://boosty.to/vitasound&lt;/a&gt;&lt;/p&gt;

</description>
      <category>dds</category>
      <category>microchips</category>
      <category>stm8</category>
      <category>microcontroller</category>
    </item>
  </channel>
</rss>
