This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
Part Number: MSP430FR5949
I am using MSP430FR5949/47 in my project. My application is to read analog data and send them to external medium upon request from other side through serial port.
I have timerA3 ISR for every 50uS (Timer clock is SMCLK initialized for 8 MHz) and SCI receive ISR.
Initialized ADC to convert single channel at a time. In Timer interrupt, polling for ADC Conv Flag and reading results.
After receiving data request from other end , I am transmitting data on serial port.
In some cards, the other end device is receiving freezed data after some time.
Here my doubt is:
1. Is ADC is stopped converting after some time? So, ADC Flag will not set and data is not getting loaded into my internal variable
2. As TimerA3 has least priority compared to Serial ISR, Timer ISR is not getting triggered due to repeated serial ISRs
You can run in debug mode to locate the execution of the program when the problem (end device is receiving freezed data) occurs, and observe the related register, which is convenient for analysis.
Search E2E! Your questions may already be answered!
If my reply answers your question please click on the green button "This resolved my issue".
Useful pages: TI Cloud Tools MSP Product Page
We are glad that we were able to resolve this issue, and will now proceed to close this thread.
If you have further questions related to this thread, you may click "Ask a related question" below. The newly created question will be automatically linked to this question.
In reply to Johnson He:
Thanks for reply
The problem observed only in some cards in the field.
Unable to use debugger in field.
From device errata, ADC42:
In manual trigger mode, it is required to ensure each ADC conversion by first checking adc12busy bit before starting in new conversion
Here I'm using single channel at a time, after checking ADC12_B_IFG0 only loading results into my local variable and starting conversion of next channel without checking for ADC12BUSY flag. In datasheet given ADC12BUSY will be set when a sequence, sample or conversion is active. I'm giving trigger to next channel after reading previous result.
1. Is there any chance of ADC12BUSY bit remains set even after ADC12_B_IFG0 is set
2. Is it necessary to ensure ADC12BUSY bit is clear before starting next sampling and conversion in single channel manual triggering mode
In reply to Sai Kiran Reddy Patlolla:
As the description of ADC42 in Errata,
"ADC stops converting when successive ADC is triggered before the previous conversion ends"
This affected ADC modes : sequence-of-channels, repeat-single-channel and repeat-sequence-of-channels.
If you setting ADC12CONSEQx register to 00(Single-channel, single-conversion), this is not affected by this errata.
For your first question :
ADC12BUSY is set in active sample or conversion operation, and the ADC12_B_IFG0 will set in complete this conversion, so this The situation you describe does not occur.
For your second question :
You need to check the ADCBUSY bit is low, then start next sampling and conversion. Use this way to ensure the correctness and accuracy of the ADC conversion.
I haven’t heard from you for seven days, so I’m assuming you were able to resolve your issue. If this isn’t the case, please click the "This did NOT resolve my issue" button and reply to this thread with more information. If this thread locks, please click the "Ask a related question" button and in the new thread describe the current status of your issue and any additional details you may have to assist us in helping to solve your issues.
Earlier there are two interrupts in my software. One is timer isr and other one is sci receive isr. After some time timer isr is not getting triggered . From device data sheet , sci isr has highest priority compared to timer a3 isr. So, there might be chance of timer isr not getting serviced due to repeated sci receive isr. Then later removed sci receive isr and used timer a3 isr. In my application there are 8 adc channels to be read and need to send the data based on request from master. Software flow is as follows, in timer isr, triggering single adc channel, based on adcifg, reading the result and giving trigger to next channel. This continues till 8 channel, after reading 8 channel result giving trigger to first channel. Upon request from master I.e., scirxflag is polled in timer isr, when flag is set sending data to master. In some cards upon request from master sending freezed data. My doubt is why adcifg is not getting set. If adcifg flag is set, then converted value will be loaded to internal buffer and freezed data will not be sent to master.
Do you means that the ADCIFG not setting when enable ADC sample in TIMER interrupt?
Could you provide some details about this issue?
Such as : code related to TIMER/ADC interrupt and configuration.
How about your issue?
All content and materials on this site are provided "as is". TI and its respective suppliers and providers of content make no representations about the suitability of these materials for any purpose and disclaim all warranties and conditions with regard to these materials, including but not limited to all implied warranties and conditions of merchantability, fitness for a particular purpose, title and non-infringement of any third party intellectual property right. No license, either express or implied, by estoppel or otherwise, is granted by TI. Use of the information on this site may require a license from a third party, or a license from TI.
TI is a global semiconductor design and manufacturing company. Innovate with 100,000+ analog ICs andembedded processors, along with software, tools and the industry’s largest sales/support staff.