Microchip Harmony : Demo ADC

De Wiki_du_Réseau_des_Electroniciens_du_CNRS
Sauter à la navigation Sauter à la recherche

Demo ADC

Liens

Projet :

Harmony Framework Configuration Drivers ADC

 --> puis cochez la case à côté de "Use ADC Driver?"
  • Développez le sous-menu "Mode Options" et cochez la case "Interrupt Mode".
  • Développez le sous-menu "Clock Options" et modifiez "TAD Clock (Tad)" sur 10000000.

. TAD est la période d'horloge du module ADC

. 10 000 000 Hz horloge = 100 ns période

  • Développez le sous-menu des options d'échantillonnage "Sampling Options" et cochez la case afin d'activer l'échantillonnage automatique "Enable Auto Sample?".
  • Modifiez le champ "Auto Sample Time (nTAD)" à 4.

Le nombre 4 indique le nombre de périodes TAD (l'horloge du module ADC) requises pour échantillonner avec précision la tension analogique (en supposant une période TAD minimum). Avec un TAD = 100 ns, le temps d'échantillonnage de l'ADC est de 4 x TAD = 4 x 100 ns = 400 ns

  • Cochez la case "Stop Conversion on the First ADC Interrupt?" pour arrêter la conversion sur la première interruption du module ADC.

Cela désactive l'échantillonnage automatique lorsque la condition d'interruption se produit (par exemple après avoir obtenu le 16ème résultat de convertion). Lorsque cette case est cochée, l'auto-échantillonnage doit être réactivé à chaque interruption du module ADC.

  • Développez le sous-menu "ADC Analog Channel Instance 0" et modifiez le champ "Select Dedicated Analog Channel" sur "ADC_INPUT_POSITIVE_AN13" afin de sélectionner l'entrée analogique AN13 (broche RB13 raccordée au potentiomètre).

=> Générer maintenant le code

  • Modifiez comme cela est expliqué dans le tutoriel de Microchip les fichiers :

. app.h /!\ attention lors de l'tape 6, l'ajout des variables dans la structure APP_DATA ne se fait pas dans le fichier "system_config.h", mais dans app.h Vous pouvez avoir défini cela dans le fichier d'en-tête de l'application "app.h", mais en le définissant dans le fichier d'en-tête de la configuration du système (system_config.h), cette macro peut-être modifiée si vous prévoyez d'utiliser différentes plates-formes matérielles dans votre projet. En effet MPLAB X IDE permet à un projet de prendre en charge plusieurs plates-formes matérielles grâce à la possibilité d'inclure ou d'exclure des fichiers source du projet en fonction de la configuration du projet. . De nouveau faite attention lors de l'étape "7" et "8" car il y a une inversion dans le tutoriel, ce n'est pas le fichier "system_interrupt.c" où il faut ajouter "#define ADC_NUM_SAMPLE_PER_AVERAGE 16" mais dans le fichier "..\src\system_config\chipkit_wf32\system_config.h" . Pour l'étape "8" ce n'est pas dans "app.c" mais dans "..\src\system_config\chipkit_wf32\system_interrupt.c" . Pas de soucis pour l'étape "9", ajouter le code dans "app.c" au niveau de la section des fonctions locales, voir : // Section: Application Local Functions . Etape "9" et "10", ajouter les 2 fonctions dans "app.c" l'une au dessous de l'autre : void APP_ADC_Average( void ) void APP_ADC_AverageOnLEDs( void ) --> dans cette fonction, vous devez remplacer les indices des LEDs (changement de contexte depuis la version Beta2 d'Harmony) : BSP_LED_3, BSP_LED_4, BSP_LED_5 et BSP_LED_6 par BSP_LED_1, BSP_LED_2, BSP_LED_3 et BSP_LED_4 . Etape "11", ajouter à la fin de la fonction void APP_Initialize( void ) : appData.dataReady = false; et ne pas oublier de N'oubliez pas de commenter les références à l'état APP_STATE_SERVICE_TASKS existant, comme indiqué ci-dessous.


Pour info, si l'on ouvre la solution on peut retrouver les définitions des valeurs des horloges configurés depuis Harmony dans le fichier :

..\adc_wf32\firmware\src\system_config\default\system_config.h

voir : /* Clock System Service Configuration Options

  • /
  1. define SYS_CLK_FREQ 80000000ul
  2. define SYS_CLK_BUS_PERIPHERAL_1 80000000ul
  3. define SYS_CLK_UPLL_BEFORE_DIV2_FREQ 48000000ul
  4. define SYS_CLK_CONFIG_PRIMARY_XTAL 8000000ul
  5. define SYS_CLK_CONFIG_SECONDARY_XTAL 0ul