Advertisement
claudiusmarius

EPSP32SINWAVE

Nov 13th, 2022
768
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.77 KB | None | 0 0
  1. //++++++++++++++++++++++++++++++++++++ESP32 le step fréquence est un multiple de 122Hz cad si le step est de 10, la fréquence est égale à 1220Hz ++++++++++++++++++++++++++++++++++++++
  2.   //++++++++++++++++++++++++++++++++++++++++++++++++A UTILISER AVEC LE CODE ESP32SIWAVE00003_AnnexeRampeXIAO POUR l4ESP32++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  3.   //==================================================================claude.dufourmont@laposte.net======================================================================================
  4.   //===========================================================https://www.youtube.com/c/ClaudeDufourmont================================================================================
  5.   //..........Ce petit dispositif est très intéressant en tant que petit générateur BF de labo, personnellement je le garde monté sur breadboard (en incluant ou pas les MCU)............
  6.   //===========================================================================FONCTIONNE================================================================================================
  7.  
  8.   #include "soc/sens_reg.h"
  9.   #include "driver/dac.h"
  10.   #define potFrequence  32                                                  // potentiomètre sur  GPIO 32 pour régler la fréquence.
  11.   int frequence_step;
  12.   int ValF;
  13.  
  14.   void setup()
  15.   {
  16.    
  17.   }
  18.  
  19.   void loop()
  20.   {
  21.   //|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
  22.   //                                           Ci-dessous les 4 fonctions à sélectionner selon la gamme de fréquence souhaitée
  23.   //|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
  24.  
  25.   //sinwave01 ();       //||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
  26.   //sinwave02 ();       //||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
  27.     sinwave03 ();       //||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
  28.   //sinwave04 ();       //||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
  29.   }
  30.   //|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
  31.  
  32.   void sinwave01 ()
  33.   {
  34.  
  35.   ValF = (int)analogRead(potFrequence);                                     // ATTENTION : CE SIGNAL PEUT AUSSI ETRE UNE RAMPE TRES BASSE FREQUENCE EN PROVENANCE DU SEEEDUINO XIAO
  36.  
  37.   frequence_step = (int)(map (ValF, 0, 1023, 100, 1023)/1);                 // La valeur de frequence_step (entière) est multipliée par 122Hz pour avoir la fréquence de la sinusïde
  38.  
  39.   SET_PERI_REG_BITS(SENS_SAR_DAC_CTRL1_REG, 0x0000FFFF ,frequence_step,0);  // Ecriture de la valeur "frequence_step" dans le registre SENS_SW_STEP
  40.  
  41.   SET_PERI_REG_MASK(SENS_SAR_DAC_CTRL1_REG, BIT(16));                       // Mise à 1 du BIT 16  dans le registre SENS_SW_TONE_EN pour sélectionner le CW generateur
  42.  
  43.   SET_PERI_REG_MASK(SENS_SAR_DAC_CTRL2_REG, BIT(24));                       // Mise à 1 du BIT 24 du registre SENS_DAC_CW_EN1 pour envoyer le signal vers le DAC 1
  44.  
  45.   SET_PERI_REG_BITS(SENS_SAR_DAC_CTRL2_REG, 0x00000003 ,2,20);              // Mise à 0 du BIT 20 et et 1 du BIT 21 du registre SENS_DAC_INV1 pour inverser le MSB (BIT de poids Fort) ==> centrage sinusoïde
  46.  
  47.   dac_output_enable (DAC_CHANNEL_1);                                        // Activation du DAC 1
  48.    
  49.   }
  50.  
  51.   void sinwave02 ()
  52.   {
  53.  
  54.   ValF = (int)analogRead(potFrequence);                                     // ATTENTION : CE SIGNAL PEUT AUSSI ETRE UNE RAMPE TRES BASSE FREQUENCE EN PROVENANCE DU SEEEDUINO XIAO
  55.    
  56.   frequence_step = (int)(map (ValF, 0, 1023, 100, 1023)/5);                 // Le talon bas (100) de la conversion du map est là pour avoir toujours un step >=0 (ici 20)
  57.  
  58.   SET_PERI_REG_BITS(SENS_SAR_DAC_CTRL1_REG, 0x0000FFFF ,frequence_step,0);
  59.  
  60.   SET_PERI_REG_MASK(SENS_SAR_DAC_CTRL1_REG, BIT(16));
  61.  
  62.   SET_PERI_REG_MASK(SENS_SAR_DAC_CTRL2_REG, BIT(24));
  63.  
  64.   SET_PERI_REG_BITS(SENS_SAR_DAC_CTRL2_REG, 0x00000003 ,2,20);
  65.  
  66.   dac_output_enable (DAC_CHANNEL_1);    
  67.   }
  68.  
  69.   void sinwave03 ()
  70.   {
  71.  
  72.   ValF = (int)analogRead(potFrequence);                                     // ATTENTION : CE SIGNAL PEUT AUSSI ETRE UNE RAMPE TRES BASSE FREQUENCE EN PROVENANCE DU SEEEDUINO XIAO
  73.  
  74.   frequence_step = (int)(map (ValF, 0, 1023, 20, 1023)/10);                 // Fréquence max : int (1023/10)* 122 cad 12451 Hz
  75.  
  76.   SET_PERI_REG_BITS(SENS_SAR_DAC_CTRL1_REG, 0x0000FFFF ,frequence_step,0);
  77.  
  78.   SET_PERI_REG_MASK(SENS_SAR_DAC_CTRL1_REG, BIT(16));
  79.  
  80.   SET_PERI_REG_MASK(SENS_SAR_DAC_CTRL2_REG, BIT(24));
  81.  
  82.   SET_PERI_REG_BITS(SENS_SAR_DAC_CTRL2_REG, 0x00000003 ,2,20);
  83.  
  84.   dac_output_enable (DAC_CHANNEL_1);    
  85.   }
  86.  
  87.   void sinwave04 ()
  88.   {
  89.  
  90.   ValF = (int)analogRead(potFrequence);                                     // ATTENTION : CE SIGNAL PEUT AUSSI ETRE UNE RAMPE TRES BASSE FREQUENCE EN PROVENANCE DU SEEEDUINO XIAO
  91.    
  92.   frequence_step = (int)(map (ValF, 0, 1023, 200, 1023)/100);               // Fréquence min : int (200/100)* 122 cad 244 Hz
  93.  
  94.   SET_PERI_REG_BITS(SENS_SAR_DAC_CTRL1_REG, 0x0000FFFF ,frequence_step,0);
  95.  
  96.   SET_PERI_REG_MASK(SENS_SAR_DAC_CTRL1_REG, BIT(16));
  97.  
  98.   SET_PERI_REG_MASK(SENS_SAR_DAC_CTRL2_REG, BIT(24));
  99.  
  100.   SET_PERI_REG_BITS(SENS_SAR_DAC_CTRL2_REG, 0x00000003 ,2,20);
  101.  
  102.   dac_output_enable (DAC_CHANNEL_1);    
  103.   }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement