Part Number: TMS320F280049 Hello, My system is the following: 1. PWM SOCA interrupt trigger ADC conversion // Disable SOCA EPWM_disableADCTrigger(EPWM1_BASE, EPWM_SOC_A); // Configure the SOC to occur on the first period event EPWM_setADCTriggerSource(EPWM1_BASE, EPWM_SOC_A, EPWM_SOC_TBCTR_ZERO); // Set prescale to trigger ADC each 20us (2 periods of PWM) EPWM_setADCTriggerEventPrescale(EPWM1_BASE, EPWM_SOC_A, 2); // Start ePWM1, enabling SOCA EPWM_enableADCTrigger(EPWM1_BASE, EPWM_SOC_A); // Measure TLoad, pin A1 ADC_setupSOC(ADCA_BASE, ADC_SOC_NUMBER0,ADC_TRIGGER_EPWM1_SOCA, ADC_CH_ADCIN1, 140); // Measure IBus, pin A2 ADC_setupSOC(ADCA_BASE, ADC_SOC_NUMBER1,ADC_TRIGGER_EPWM1_SOCA, ADC_CH_ADCIN2, 140); // Measure UBus, pin A3 ADC_setupSOC(ADCA_BASE, ADC_SOC_NUMBER2,ADC_TRIGGER_EPWM1_SOCA, ADC_CH_ADCIN3, 140); // Measure VLoad is connected to PGA5_IN pin internally connected to A14 ADC_setupSOC(ADCA_BASE, ADC_SOC_NUMBER3, ADC_TRIGGER_EPWM1_SOCA, ADC_CH_ADCIN14, 140); // Set SOC3 to set the interrupt 1 flag of ADC A. Enable the interrupt and make // sure its flag is cleared. ADC_setInterruptSource(ADCA_BASE, ADC_INT_NUMBER1, ADC_SOC_NUMBER3); ADC_enableInterrupt(ADCA_BASE, ADC_INT_NUMBER1); ADC_clearInterruptOverflowStatus(ADCA_BASE, ADC_INT_NUMBER1); ADC_clearInterruptStatus(ADCA_BASE, ADC_INT_NUMBER1); // Enable ADC A interrupt 1 Interrupt_enable(INT_ADCA1); 2. At is turn, interrupt 1 of ADC trigger DMA transfer DMA_initController(); DMA_setEmulationMode(DMA_EMULATION_STOP); DMA_configAddresses(DMA_CH1_BASE, (void*)(&adcaRawMeasureSamples[0]), (void*)(&AdcaResultRegs.ADCRESULT0)); DMA_configBurst(DMA_CH1_BASE, sizeof(ADCA_MEASURE_t), DMA_SRC_BURST_STEP, DMA_DEST_BURST_STEP); DMA_configTransfer(DMA_CH1_BASE, NUM_MEASURE_SAMPLE, DMA_CH1_SRC_TRANSFER_STEP, DMA_DEST_TRANSFER_STEP); DMA_configMode(DMA_CH1_BASE, DMA_TRIGGER_ADCA1, DMA_CFG_ONESHOT_DISABLE | DMA_CFG_CONTINUOUS_ENABLE | DMA_CFG_SIZE_16BIT); DMA_enableTrigger(DMA_CH1_BASE); DMA_setInterruptMode(DMA_CH1_BASE, DMA_INT_AT_END); DMA_enableInterrupt(DMA_CH1_BASE); DMA_disableOverrunInterrupt(DMA_CH1_BASE); DMA_clearTriggerFlag(DMA_CH1_BASE); Interrupt_enable(INT_DMA_CH1); DMA_startChannel(DMA_CH1_BASE); 3. At the end of DMA transfer ADC result is treated inside DMA channel 1 interrupt My problem is that my system doesn't works if I don't declare and interrupt function for ADC as following: Interrupt_register(INT_ADCA1, &adcA1ISR); static __interrupt void adcA1ISR(void) { // Clear the interrupt flag and issue ACK ADC_clearInterruptStatus(ADCA_BASE, ADC_INT_NUMBER1); // // Check if overflow has occurred // if(true == ADC_getInterruptOverflowStatus(ADCA_BASE, ADC_INT_NUMBER1)) { ADC_clearInterruptOverflowStatus(ADCA_BASE, ADC_INT_NUMBER1); ADC_clearInterruptStatus(ADCA_BASE, ADC_INT_NUMBER1); } else { // Nothing to do } Interrupt_clearACKGroup(INTERRUPT_ACK_GROUP1); } So I need help to disable ADC interrupt because for me DMA component is in charge to clear ADC interrupt flag and this interrupt is not needed normaly. Thanks in advance. Best regards, Martial
↧
Forum Post: TMS320F280049: How to disable ADC interrupt when DMA are used
↧
Forum Post: RE: TM4C123GH6PGE: Example usb_dev_serial
Hi Jame, I think the green bar is always full is correct. When it is fully green it means it is empty. If there is some transfer, a portion of the green bar will be filled with red. When it is first initialized in the main(), the DrawBufferMeter() is called. If you look at the source code of DrawBufferMeter it has the below code that says the meter is filled with green to indicate empty. // // Fill the meter with green to indicate empty // GrContextForegroundSet(psContext, ClrGreen); GrRectFill(psContext, &sRect); // // Put a white box around the meter. // GrContextForegroundSet(psContext, ClrWhite); GrRectDraw(psContext, &sRect); Please also look at the UpdateBufferMeter() API where the portion or all of the green bar is filled with red depending on the transfer status. // // Fill the full section with red (if there is anything to draw) // if(ui32FullPercent) { GrContextForegroundSet(psContext, ClrRed); GrRectFill(psContext, &sRect); } // // Fill the empty section with green. // sRect.i16XMin = i32XBreak; sRect.i16XMax = i32X + BUFFER_METER_WIDTH - 2; if(sRect.i16XMax > sRect.i16XMin) { GrContextForegroundSet(psContext, ClrGreen); GrRectFill(psContext, &sRect); }
↧
↧
Forum Post: RE: LAUNCHXL-F280049C: LAUNCHXL-F280049C
Hi Coke Kou, To confirm you're running the 'cla_ex1_bankground_task' C2000ware example? Located here: C:\ti\c2000\C2000Ware_2_00_00_03\device_support\f28004x\examples\cla Can you double check that you're probing the correct pin on the LaunchPad? Should be GPIO6 which is pin 78 (on silkscreen). Best, Kevin
↧
Forum Post: MSP432E401Y: MSP432E401Y CAN1 (CAN0) Init fails after power-up reset or external reset ?
Part Number: MSP432E401Y Dear support, I have an application using the CANIP, the Ethernet and some I2C and UART serial ports. As long as the code is being executed from the CCS using the debugger attached (XDS110), everything works as expected. Once I remove the debugger or press and external push-button, the system starts up as before with one exception. The signal on the CANIP is completely messed up. All the other interfaces do work as expected except the CANIP. Without knowing I guess it might have to do something with the clocking network on the chip. The application is using "simplelink_msp432e4_sdk_3_20_00_10" and "FreeRTOSv10.2.1" in TI-CCS 9.1.... using the TI-Compiler. The init sequence for the canip peripheral is shown below: unsigned char bbcInitMSP432CANIP(int iCANIP) { UNSIGNED8 ret = 0; if( 1 == iCANIP) { // CAN controller CAN1 /* Enable the clock to the GPIO Port B and wait for it to be ready */ MAP_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB); while(!(MAP_SysCtlPeripheralReady(SYSCTL_PERIPH_GPIOB))) {/* wait for peripheral ready */ } /* Enable CAN1 */ MAP_SysCtlPeripheralEnable(SYSCTL_PERIPH_CAN1); while(!(MAP_SysCtlPeripheralReady(SYSCTL_PERIPH_CAN1))) {/* wait for peripheral ready */ } /* Configure GPIO Pins for CAN mode */ MAP_GPIOPinConfigure(GPIO_PB0_CAN1RX); MAP_GPIOPinConfigure(GPIO_PB1_CAN1TX); MAP_GPIOPinTypeCAN(GPIO_PORTB_BASE, GPIO_PIN_0 | GPIO_PIN_1); .... As mentioned it always works using the debugger. It never works without it. Is there a way to check if the system clock has been stabilized before proceeding? br Markus
↧
Forum Post: RE: CCS/TMS320F28069: CCS 7 code debugging problem
Hi Yash shah, Can you provide more information on the issues you're facing in CCS7? Are you able to successfully erase the flash in CCS7? i.e. no errors How are you performing the erase? Using on-chip flash programmer tool in CCS? Are you able to successfully program an example? Does a RAM project program successfully? Does a Flash project program successfully? Do either RAM or Flash projects run OK? Best, Kevin
↧
↧
Forum Post: RE: MSP430FR2676: CapTIvate device using more power than expected in LPM3/4
Hi Jason, Yes, the MCU should be powered by 3.3V METERED in order to see all the EnergyTrace measurements. If the MCU is powered by 3.3V LDO instead, then only the voltage will be shown. Thanks for your collaboration on this, and please let me know the EnergyTrace results when you run the LPM3 example code on the FR2676 EVM. Best regards, Angelo
↧
Forum Post: RE: CCS/TMS320F28377D: Using IDDK development kit on a custom board
There should be a linker file in the project already called IDDK_Servo_2837x_RAM_lnk_cpu1.cmd. You shouldn't need 2837x_RAM_lnk_cpu1.cmd. Delete it an see if the "memory range has already been specified" errors go away for the RAM build. Whitney
↧
Forum Post: UNIFLASH: Programming error on Tiva TM4C123GH6PM part
Part Number: UNIFLASH When programming the Tiva TM4C123GH6PM part using Uniflash 5.1.0 GUI, there is an error message trying to read RAM 0x20008000., which is reserved memory. If I create a standalone command-line, it programs fine. It should be the same result... I want to be able to use the GUI. Why do I get two different results when the programming *should* be identical?
↧
Forum Post: RM57L843: what happens when trying to write over WDKEY before enabling DWWD counter?
Part Number: RM57L843 Hello, An example code for RTI DWWD usage works perfectly. I was wondering what happens if I try to write the WDKEY key values without enabling the counter? Tried doing that and my system goes into a complete hang state: "Trouble Halting Target CPU: (Error -1060 @ 0x0) Device is not responding to the request. Reset the device, and retry the operation. If error persists, confirm configuration, power-cycle the board, and/or try more reliable JTAG settings *e.g. lower TCLK). (Emulation package 5.0.747.0)" I am confident that the issue is with accessing the WDKEY before enabling the counter and couldn't find any information relating to it in the ref manuals. Any information on the system state when this happens would be helpful. Thank you!
↧
↧
Forum Post: RE: UNIFLASH: Programming error on Tiva TM4C123GH6PM part
↧
Forum Post: RE: MSP430F5659: SPI over DMA sometimes misses one RX interrupt
I think you have miscounted the cycles required. Because MSP430 peripherals are memory mapped, each transfer requires 2 cycles. So moving 8 bytes requires 16 MCLKs. It would be even longer if you used burst-block mode as that lets the CPU run for two MCLKs every four transfers. More than long enough to cause the SPI receiver to be overrun. Depending on when that transfer started it could require as few as 8 MCLKs of delay to do that. And priority doesn't matter. The SPI DMA requests are periodic so other DMA channels can and will be granted the bus in between SPI requests. Once a DMA channel is granted the bus, no other DMA channel can get it until it finishes its transfer. Even if it is a very long burst.
↧
Forum Post: TMS570LS1227: How to set Chip Select Hold for a TMS570 configured as slave MibSPI when data to receive is > 16 bits
Part Number: TMS570LS1227 Hello I'm working with a TMS570 LS1227, configured as MibSPI slave, in a 4-wire comunication. The SPI master (an IMX6) sends out a frame of 60 bytes every 10 milliseconds. I would like to use the MibSPI1 on the slave side. I have configured the MibSPI1 as slave in Halcogen, setting Charlen = 16 in MibSPI Data Format 0 and Length = 30 for transfer Group 0. Everything is fully working, on the slave side I can see the 60 bytes frame correctly received in 30 words of 16 bits. For each of the 30 word, the SPI master pulls down the Chip Select, transmits the 16bit data and then pulls up the Chip Select. I would like to improve the performance of this communication (I want to shorten the time to trasmission/reception) , by setting the SPI master to keep the Chip Select low/enabled for all the 60 bytes frame (I mean Chip select driven low for all the 30 words and then driven high). On MibSPI slave side, which setting I have to do in Halcogen in order to cope with this communication pattern? What I have to do to manage the previously described communication pattern for MibSPI slave? Just select the "Chip Select Hold" in MIBSPI1 Transfer Group 0 to prepare the SPI slave? Best regards
↧
Forum Post: RE: TMS320F28027: Production programmer
Hi Alessandro, See the below page for a better / updated list: http://www.ti.com/microcontrollers/c2000-real-time-control-mcus/design-development.html#other-tools Best, Kevin
↧
↧
Forum Post: RE: TMS320F28335: XRS pin configuration
Brandon, Wanted to reach out to see if you still have questions or concerns on this post. I'm going to mark as TI thinks resolved, but feel free to reply and I'll get an alert. Best, Matthew
↧
Forum Post: RE: CCS/TMS320F28335: Flash gets erased after turning off the supply to board
Hi Namita, It looks like you may not have seen the documentation available here: https://training.ti.com/c2000-f2833x-microcontroller-workshop I believe it will answer all your questions. In general, if you already have an application that you are loading to flash using CCS and running from flash, then you can simply configure the boot mode pins in the "Jump to Flash" configuration. With the boot mode pins configured for booting from flash, you should be able to disconnect CCS and power cycle the target and your application should run. This addresses the original question you had when you initiated this thread. Please let us know if you have any further questions. Cheers! Krishna
↧
Forum Post: RE: MSP430F5659: SPI over DMA sometimes misses one RX interrupt
You're right, I miscounted. That makes it even worse. I'm glad we figured it out, thank you, Fred
↧
Forum Post: RE: CCS/TMS320F280049: connect a CMPSS7 to a GPIO using OUTPUTxBAR peripheral
Okay, that also looks fine. What board are you using? If you're using a controlCARD, be aware that GPIO24 is connected to two different pins with a switch to select between them. Please check both pins and the switch setting on your board. If that doesn't help, try importing the cmpss_ex2_digital_filter example from the F28004x driverlib examples. See if it works as is and then see if it works after you change XBAR_OUTPUT3 -> XBAR_OUTPUT1 and GPIO_14_OUTPUTXBAR3 -> GPIO_24_OUTPUTXBAR1. If it does work, look at the configuration in the related registers and see how it matches with that of your own application. Whitney
↧
↧
Forum Post: RE: CCS/TMS320F28069M: TMS320F28069 eCan bus comunication examples and code
Silvano, Please download my app.note SPRA876. It has lot of tested examples that are commented well. CAN_TXLOOP is the example that sends messsages on the CAN bus.
↧
Forum Post: RE: TMS320F28379D: RTC DS1339 I2C Issue
Hi Kevin, I replaced IC DS1399 on the PCB, but it didn't help. I am writing with Maxim Technical Support Team. I have not received an answer that would help. I'll let you know where the problem was, when I solve it. Regards Joseph
↧
Forum Post: RE: CCS/MSP430FR6989: RTC for Timestamp
Hello Vijay, I recommend to follow msp430fr69xx_rtc_02.c example project in TI Resource Explorer. Link: http://dev.ti.com/tirex/explore/node?node=AHrEUMIycvYtJqOTx3x90Q__IOGqZri__LATEST&search=MSP430FR6989 And for using interrupt to send data, this depends on what communication protocol you plan to use. There are examples of using I2C, UART and SPI to send data in TI Resource Explorer. Thanks, Yiding
↧