i need help explainning this code. can anyone please help me to explan this code
ID: 672517 • Letter: I
Question
i need help explainning this code. can anyone please help me to explan this code in a lab report form?
#include <msp430.h>
uint8_t ThresholdExceeded = 0;
char x[] = " test ";
uint16_t slower = 0;
void setup()
{
// put your setup code here, to run once:
/*
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
*/
ADC12CTL0 = ADC12SHT02 + ADC12ON; // Sampling time, ADC12 on
ADC12CTL1 = ADC12SHP; // Use sampling timer
ADC12IE = 0x01; // Enable interrupt
ADC12CTL0 |= ADC12ENC;
P6SEL |= 0x01; // P6.0 ADC option select
P4DIR |= 0x80; // P1.0 output
Serial.begin(9600);
}
void loop()
{
// put your main code here, to run repeatedly:
ADC12CTL0 |= ADC12SC; // Start sampling/conversion
__bis_SR_register(LPM0_bits + GIE); // LPM0, ADC12_ISR will force exit
__no_operation(); // For debugger
if(slower >= 50)
{
Serial.print(ThresholdExceeded);
Serial.println(x);
slower = 0;
}
else
{
slower = slower+1;
}
//ThresholdExceeded
}
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
#pragma vector = ADC12_VECTOR
__interrupt void ADC12_ISR(void)
#elif defined(__GNUC__)
void __attribute__ ((interrupt(ADC12_VECTOR))) ADC12_ISR (void)
#else
#error Compiler not supported!
#endif
{
switch(/*__even_in_range(ADC12IV,34)*/ADC12IV)
{
case 0: break; // Vector 0: No interrupt
case 2: break; // Vector 2: ADC overflow
case 4: break; // Vector 4: ADC timing overflow
case 6: // Vector 6: ADC12IFG0
if (ADC12MEM0 >= 0x7ff) // ADC12MEM = A0 > 0.5AVcc?
P4OUT |= BIT7; // P1.0 = 1
else
P4OUT &= ~BIT7; // P1.0 = 0
__bic_SR_register_on_exit(LPM0_bits); // Exit active CPU
case 8: break; // Vector 8: ADC12IFG1
case 10: break; // Vector 10: ADC12IFG2
case 12: break; // Vector 12: ADC12IFG3
case 14: break; // Vector 14: ADC12IFG4
case 16: break; // Vector 16: ADC12IFG5
case 18: break; // Vector 18: ADC12IFG6
case 20: break; // Vector 20: ADC12IFG7
case 22: break; // Vector 22: ADC12IFG8
case 24: break; // Vector 24: ADC12IFG9
case 26: break; // Vector 26: ADC12IFG10
case 28: break; // Vector 28: ADC12IFG11
case 30: break; // Vector 30: ADC12IFG12
case 32: break; // Vector 32: ADC12IFG13
case 34: break; // Vector 34: ADC12IFG14
default: break;
}
ThresholdExceeded = ADC12MEM0;
}
Explanation / Answer
start with the first header file use which is supports assembler and c development for msp430 microcontroller
uint8_t ThresholdExceeded
in this 8-bit thresold exceeded counter
char x print
unit16 for the define value
setup code
first the intialize the control register
when the loop is start conversation
the first enter low power mode
there is no operation
if slower than 50
then print thresoldexceed
slower 0 or +1
after that switch case
1.no interrupt no error
2.ADC overflow
in this case error mesage show that the NMR signal
that is maximum value represnted by the ADC
analog to digital convertor it is occured sometime if the value more than set than real value
case 4
ADC overflow timing in thais case the time is overflow by the set by themain time
case 6
ADC12IFG0
in this case there is 0 interrpat flag
hten if
ragister is =1 or 0
swicth on the register interrept flag
case 1 ADC12 memory 1 to 14
or break
the conversation memory 0
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.