Bom dia!

alguem ai ja usou o sensor TMP121 da Texas Instruments e poderia me ajudar?

nao estou conseguindo ler os valores de temperatura deste sensor via comunicacao

SPI com o msp430g2231 do kit launchpad.

desde já obrigado!

P

abaixo segue o codigo que estou tentando ler os valores do sensor.....

// MSP430F20x2/3
// -----------------
// /|\| XIN|-
// TMP121 | | |
// ------------- --|RST XOUT|-
// | P5 CS|<---|P1.1 |
// | P6 DATAOUT|--->|P1.7/SOMI P1.0|-->LED
// | P4 CLK|<---|P1.5/SCLK |
//
//******************************************************************************

#include <msp430x20x3.h>
#include <intrinsics.h>
#include <stdint.h>

void main(void)
{
int i;

WDTCTL = WDTPW + WDTHOLD; // Stop WDT

DCOCTL = CALDCO_1MHZ;
BCSCTL1 = CALBC1_1MHZ;

P1OUT = 0;
P1DIR |= 0x03;
P1OUT |= 0x02;
USICTL0 |= USIPE7 + USIPE5 + USIMST + USIOE; // Port, SPI master
USICTL1 |= USICKPH + USIIE; // Counter interrupt, flag remains set
USICKCTL = USIDIV_2 + USISSEL_2; // /4 SMCLK
USICTL0 &= ~USISWRST; // USI released for operation
USICNT = USI16BIT + 0x010; // init-load counter
_BIS_SR(LPM0_bits + GIE); // Enter LPM0 w/ interrupt
}

// USI interrupt service routine
#pragma vector=USI_VECTOR
__interrupt void universal_serial_interface(void)
{
int aux, i;
float tmp = 0;

aux = (USISR >> 3);
if (aux & 0x1000) // se valor for negativo
{
aux ^= 0x1FFF;
aux += 0x0001;
}
tmp = aux/16;

if (tmp > 30) // se a temperatura for maior que 30celcius acende o led red
P1OUT |= 0x01;
else
P1OUT &= ~0x01;

P1OUT |= 0x02;
for(i=0x100;i>1000;i--); // delay para a transferencia da temperatura
P1OUT &= ~0x02; // reset o slave
USICNT |= 0x010; // re-load counter
}

Exibições: 286

Responder esta

Respostas a este tópico

Bom, esse sensor nunca utilizei, mas ja tive problemas com esse famigerado modulo USI dos MSP430, que vc tem que fazer tudo na mao...

 

Uma sugestao que deixo e pra vc testar a comunicacao, como, faca um programinha para escrever dado em qualquer lugar do sensor, em seguida faca a leitura desse mesmo endereco e compare com o dado que vc gravou e acenda um led por exemplo em caso de nao haver erro, com isso da para fazer um diagnostico do que esta acontecendo.

 

Mais duvidas estou a disposicao.

 

Abs.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço