Processor MSP430F2274 IAR compiler
Följande kod:
Kod: Markera allt
/* Display voltage (1 bit<=> 10mV, "12,92Vlt" */
void display_volt(char channel)
{
unsigned char volt[]=" , Vlt"; // Eight blanks
unsigned char *pekare;
unsigned int AD_temp16;
char temp1,temp2,pos,AD_temp8;
AD_temp16=0;
ADC10CTL1 &=0x0FFF;
/*switch (channel)
{
case 0:
ADC10CTL1 |= INCH_0;
break;
case 1:
ADC10CTL1 |= INCH_1;
break;
}*/
ADC10CTL1 |= INCH_1; // test för att endast läsa kanal 1
for (AD_temp8=10;AD_temp8>0;AD_temp8--)
{
ADC10CTL0 |= ENC + ADC10SC; // Sampling and conversion start
__bis_SR_register(CPUOFF + GIE); // LPM0, ADC10_ISR will force exit
AD_temp16 +=ADC10MEM;
}
Rutinen kallas upp i från menyrutinen med en char channel, satt till 0 eller 1 för att välja vilken av kanalerna som skall mätas.
Kanalen sätts i registret ADC10CTL1 Bit 15-12 styr kanalerna, jag anväder 0 och 1. Debuggern säger att char channel kommer både som 0 eller 1 i från menyrutinen,
när jag nu debuggar så ändras inte registret ADC10CTL1 men väl körs rutinencaserutinen, för att kolla att jag har allt rätt inställa kollade jag genopm att ta bort casesatsen och lägger till att alltid läsa kanal1 då fungerar det pch visar således inspnningen från kanal 1 hela tiden. Varför kan jag inte styra kanalregistret från casesatsen?
Jag blir nipprig på sånt här.
Edit:Tack för tipset om taggarna