LaunchPad Texas Instruments

Projekt 7 - Analogově-digitální převodník

12.03.2011 11:59

Pokud pracujeme pouze s procesorem, diodou a spínačem tak nám logické hodnoty 1/0 bohatě stačí. Časem se ale každý dostane do bodu, kdy je potřeba zjistit hodnotu, která není rovna log.1 ani log.0 a právě v této chvíli je potřeba použít analogově-digitální převodník (dále ADC).

Projekt nám ukazuje, jak nejjednodušeji použít A/D převod. Na portu P1 využijeme kanál A1 (tedy P1.1), na která připojíme výstup z potenciometru/trimru.

Zapojení proveďte dle schématu:
Schema zapojeni

Zde je odkaz na soubor se zdrojovým kódem

#include "msp430g2231.h"

#define LED1 BIT0
#define LED2 BIT6

void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;
/*
Nastavení ADC:
ADC10ON – zapnutí ADC
ADC10IE – povolení použití přerušení
ADC10SHT_2 – nastavení násobiče ADC hodin (16x)
- možné další hodnoty násobiče:
[ADC10SHT_0 (4x); ADC10SHT_1 (8x); ADC10SHT_2 (16x); ADC10SHT_3 (64x);]
*/

  ADC10CTL0 = ADC10SHT_2 + ADC10ON + ADC10IE;
/*
Nyní následuje nastavení kanálu pro převod, využijeme kanál A.1
*/

  ADC10CTL1 = INCH_1;    // Vstup na P1.1/A.1
/*
Nastavení bitu ADC konverze na P1.1/A.1
*/

  ADC10AE0 |= 0x02;      // PA.1
  P1DIR |= LED1 + LED2;
  P1OUT &= ~(LED1 + LED2);

  for (;;)
  {
/*
Nyní začne vzorkování a konverze vstupního signálu
*/

    ADC10CTL0 |= ENC + ADC10SC;
/*
Následuje čekání, dokud neproběhne konverze a uložení výsledku
*/

    while (ADC10CTL1 & ADC10BUSY);
/*
Konverze již doběhla a výsledek se uložil do ADC10MEM, budeme tedy zkoumat, zda je ADC10MEM menší než 0x1AA
*/

    if (ADC10MEM < 0x1AA)
    {
      P1OUT &= ~LED2;
      P1OUT |= LED1;
    }
    else
    {
      P1OUT &= ~LED1;
      P1OUT |= LED2;
    }
  }
}

Zpět

Vyhledávání

© 2011 Všechna práva vyhrazena.