Hallo
ich versuche über 2 shunts der stromverbrauch zu messen, dazu verwende
ich den s.g SD16_A Modul, MSP430F47166.
im Debug modus funktioniert alles wunderbar, im freilaufenden mode
bekommen ich immer null, sprich beim auslesen der SD16MEM0 und SD16MEM1
wird irgendwie nicht richtig ausgeführt, ist unten in Blau markiert.
das folgende Quellcode bietet einen überblick über meine kodierung.
ich bin für jeden Hinweis dankbar.
LG
unsigned int ChA0Value , ChA1Value
void main()
{
SD16CTL = SD16REFON+SD16SSEL_0; // 1.2V ref, ACLK
// CH A0.0+
SD16INCTL0|=SD16INCH_0+SD16INTDLY0; //Interrupt on 4th sample
SD16CCTL0 |= SD16UNI; // Enable interrupt
// SD16CCTL0 |= SD16UNI + SD16SC +SD16SNGL+SD16IE;
// CH A1.0+
SD16INCTL1|=SD16INCH_1+SD16INTDLY0; //Interrupt on 4th sample
SD16CCTL1 |= SD16UNI; // Enable interrupt
//SD16CCTL1 |= SD16UNI + SD16SC +SD16SNGL+SD16IE;
for (int i = 0; i < 0x3600; i++); // Delay for 1.2V ref startup
currentMeasurement();
while(1)
{
_NOP();
}
}
void currentMeasurement()
{
/*
//spgdiff = ((A0-A1)*0,6)/65535 ==> in V
//stromdiff = spgdiff / 10ohm ==> in A
//stromdiff = stromdiff * 10000000 ==> in uA
*/
A0_HIGH();
A1_HIGH();
SD16CCTL1|=SD16SC;
SD16CCTL0|=SD16SC;
usCurrentConsumeuA=0;
ChA0Value=0;
ChA1Value=0;
>>ChA0Value = SD16MEM0; // save A0 value
>>ChA1Value = SD16MEM1; // save A1 value
usCurrentConsumeuA = (unsigned long)(ChA0Value - ChA1Value)*6;
usCurrentConsumeuA *= 10000;
usCurrentConsumeuA /= 0xFFFF;
A0_LOW(); // disable A0
A1_LOW(); // disable A1
}