Página 1 de 1
exemplo codigo AD

Enviado:
06 Mar 2009 17:28
por denis neves
tudo bem galera,
eu estou começando a programar o msp430 e ainda não adquiri o livro do fabio pereira.Eu estou fazendo um projeto onde eu tenho que ler um LM35 e de acordo com a temperatura e fazer uma barra de leds acenderem. A parte dos leds ta tranquilo, mas eu não estou conseguindo fazer a parte da conversão.
Eu estou usando a entrada A0 e tenção de referencia interna !!!
sera que alguem poderia de passar (se não or muito encomodo) um programinha exemplo para eu fazer a leitura da tenção do LM35.
Muito obrigado.
Denis

Enviado:
11 Mar 2009 10:00
por alessandro
Qual o modelo do MSP430 que esta usando? Você esta usando linguagem C?
Alessandro

Enviado:
11 Mar 2009 13:10
por denis neves
Olá Alessandro,
eu estou usando o msp430F149, estou usando o IAR e programando em C !!!
Valeuuuu...
Denis.

Enviado:
11 Mar 2009 15:27
por alessandro
Veja se ajuda, a aplicação foi feita para MSP430F1232, mas você consegue usar no seu.
//******************************************************************************
// MSP-FET430P120 Demo - ADC10, Sample A0, AVcc Ref, Set P1.0 if > 0.5*AVcc
//
// Description: A single sample is made on A0 with reference to AVcc.
// Software sets ADC10SC to start sample and conversion - ADC10SC
// automatically cleared at EOC. ADC10 internal oscillator times sample (16x)
// and conversion. In Mainloop MSP430 waits in LPM0 to save power until ADC10
// conversion complete, ADC10_ISR will force exit from LPM0 in Mainloop on
// reti. If A0 > 0.5*AVcc, P1.0 set, else reset.
// //* MSP430F1232 or MSP430F1132 Device Required *//
//
// MSP430F1232
// -----------------
// /|\| XIN|-
// | | |
// --|RST XOUT|-
// | |
// >---|A0 P1.0|-->LED
//
// M. Buccini
// Texas Instruments Inc.
// Feb 2005
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.21A
//******************************************************************************
#include <msp430x14x.h>
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
ADC10CTL0 = ADC10SHT_2 + ADC10ON + ADC10IE; // ADC10ON, interrupt enabled
ADC10AE |= 0x01; // P2.0 ADC option select
P1DIR |= 0x01; // Set P1.0 to output direction
for ( ; ; )
{
ADC10CTL0 |= ENC + ADC10SC; // Sampling and conversion start
_BIS_SR(CPUOFF + GIE); // LPM0, ADC10_ISR will force exit
if (ADC10MEM < 0x1FF)
P1OUT &= ~0x01; // Clear P1.0 LED off
else
P1OUT |= 0x01; // Set P1.0 LED on
}
}
// ADC10 interrupt service routine
#pragma vector=ADC10_VECTOR
__interrupt void ADC10_ISR (void)
{
_BIC_SR_IRQ(CPUOFF); // Clear CPUOFF bit from 0(SR)
}
Alessandro

Enviado:
11 Mar 2009 15:50
por denis neves
Beleza Alessandro,
vou tentar adaptar o codigo para o msp que estou usando, se eu tiver alguma duvida ou resultado eu posto aqui !!!
Muito obrigado,
Denis.

Enviado:
11 Mar 2009 16:21
por alessandro
Note que já alterei o arquivo do modelo do MSP no início para o que esta usando, desta forma, cole no compilador IAR, compile e debug.
Alessandro

Enviado:
16 Mar 2009 15:28
por denis neves
Fala Alessandro,
eu mudei o programinha para o msp que estou usando (AD 12bits) mas ainda não consegui fazer funcionar.
Me tira uma duvida, quando eu uso referência interna eu ainda tenho que fazer algum tipo de hardware externo ???
Eu estou usando um lm35 na entrada A1 (Pin P6.1) e setando o conversor como referencia interna de 2.5V, ai se o valor do sensor for 1/4 do valor de referencia eu acendo um LED no pino P2.1. Com o multimetro eu vejo o valor na entrada do ad mas o led não acende !!!
vc tem alguma ideia do que seja ???
desculpe a ignorancia,
Obrigado.
Denis.