Hello,
I'm currently working on a setup with two MSP432. I will shortly describe the overall setup which is the same for both MCUs:
- ISR with highest priority: running at 5kHz (trigger is ADC), reading ADC values and doing some control stuff (Control C-code is generated out of a Matlab modell)
- ISR with second priority: running at 100Hz (trigger is timer32), some statemachine tasks (statemachine C-code is generated out of a Matlab modell)
- ISR with third priority: DMA completion interrupt (after 4 transferes)
Both devices are communicating over their UART channels to exchange 4 bytes of data. I use the DMA for TX und RX to write the data from the tx-buffer to the TX register and read the values from the RX register and write it to the rx-buffer. During this communication one MSP acts as a Master and the other as a Slave. For testing the master should send "Ping" to the slave. After the slave receives "Ping" it sends back "Pong" as an answer. I trigger the start of the conversation by setting a parameter to 1 in the expression window of the Code Composer Studio (v7.4).
Now to my Problem:
When I comment out the control in the ISR with the highest priority everything is as expected. The slave receives "Ping" and sends back "Pong". I checked the content of the buffer after the conversation finished. However, when I uncomment the control I receive "000g". I used a port to toggle it everytime I enter the completion interrupt of the DMA and what I see is that in the case I get the wrong values the interrupt is called after every byte transfere. I don't see the correlation between multiple completion interrupts and some cpu calculation. Can anybody help me with this problem?
Thanks in advance.
Dominic