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.

LAUNCHXL - F28027, launchpad driving the DDS AD9851 chip

Other Parts Discussed in Thread: TMS320F28027, CONTROLSUITE, LAUNCHXL-F28027

To whom it may concern,

I am using launchpad Picollo C2000 Launchpad Evaluation Kit - Launchxl F28027.

I want to drive the Direct Digital Synthesizer wit this MCU.

The following code is for the ARDUINO, and it works: 

#define W_CLK 8 // Pin 8 - connect to AD9851 module word load clock pin (CLK)
#define FQ_UD 9 // Pin 9 - connect to freq update pin (FQ)
#define DATA 10 // Pin 10 - connect to serial data load pin (DATA)
#define RESET 11 // Pin 11 - connect to reset pin (RST).

#define pulseHigh(pin) {digitalWrite(pin, HIGH); digitalWrite(pin, LOW); }

// transfers a byte, a bit at a time, LSB first to the 9851 via serial DATA line
void tfr_byte(byte data)
{
for (int i=0; i<8; i++, data>>=1) {
digitalWrite(DATA, data & 0x01);
pulseHigh(W_CLK); //after each bit sent, CLK is pulsed high
}
}

// frequency calc from datasheet page 8 = <sys clock> * <frequency tuning word>/2^32
void sendFrequency(double frequency) {
int32_t freq = (frequency * 4294967296.0)/(180.0e6 * 0.1626); // note 180 MHz clock on 9851
for (int b=0; b<4; b++, freq>>=8) {
tfr_byte(freq & 0xFF);
}
tfr_byte(0x000); // Final control byte, all 0 for 9851 chip
pulseHigh(FQ_UD); // Done! Should see output
}

void setup() {
// configure arduino data pins for output
pinMode(FQ_UD, OUTPUT);
pinMode(W_CLK, OUTPUT);
pinMode(DATA, OUTPUT);
pinMode(RESET, OUTPUT);

pulseHigh(RESET);
pulseHigh(W_CLK);
pulseHigh(FQ_UD); // this pulse enables serial mode - Datasheet page 12 figure 10
}

void loop() {
sendFrequency(100.0e3); // freq
while(1);
}

I need the same code but for the CCS. Also, could you help me with pinning, please.
I tried a lot of ways; they dont work. I do not know what to do.

Thank you very-very much!!!

  • Hi,

    Which controller are you talking about here? Secondly, please share your code written in CCS so that corrections can be suggested.

    Regards,

    Gautam

  • Hi Gautam,

    I am grateful for you help!

    I am using TMS320F28027 which should drive (toggle, invoke) the DDS AD9851 chip. 

    I am attaching the code I have composed below which does not work.

    Moreover, I could not find a XRS pin out (reset pin out).

    //#############################################################################
    //
    // File: f2802x_examples_ccsv4/timed_led_blink/Example_F2802xLedBlink.c
    //
    // Title: F2802x LED Blink Getting Started Program.
    //
    // Group: C2000
    // Target Device: TMS320F2802x
    //
    //! \addtogroup example_list
    //! <h1>LED Blink</h1>
    //!
    //! This example configures CPU Timer0 for a 500 msec period, and toggles
    //! the GPIO0-4 LEDs once per interrupt. For testing purposes, this example
    //! also increments a counter each time the timer asserts an interrupt.
    //!
    //! Watch Variables
    //! - interruptCount
    //!
    //! Monitor the GPIO0-4 LEDs blink on (for 500 msec) and off (for 500 msec)
    //! on the 2802x0 control card.
    //
    // (C) Copyright 2012, Texas Instruments, Inc.
    //#############################################################################
    // $TI Release: f2802x Support Library v200 $
    // $Release Date: Tue Jul 24 10:01:39 CDT 2012 $
    //#############################################################################

    #include "DSP28x_Project.h" // Device Headerfile and Examples Include File

    #include "f2802x_common/include/adc.h"
    #include "f2802x_common/include/clk.h"
    #include "f2802x_common/include/flash.h"
    #include "f2802x_common/include/gpio.h"
    #include "f2802x_common/include/pie.h"
    #include "f2802x_common/include/pll.h"
    #include "f2802x_common/include/timer.h"
    #include "f2802x_common/include/wdog.h"

    // Prototype statements for functions found within this file.
    interrupt void cpu_timer0_isr(void);

    uint16_t interruptCount = 0;

    ADC_Handle myAdc;
    CLK_Handle myClk;
    FLASH_Handle myFlash;
    GPIO_Handle myGpio;
    PIE_Handle myPie;
    TIMER_Handle myTimer;

    void main(void)
    {

    CPU_Handle myCpu;
    PLL_Handle myPll;
    WDOG_Handle myWDog;

    // Initialize all the handles needed for this application
    myAdc = ADC_init((void *)ADC_BASE_ADDR, sizeof(ADC_Obj));
    myClk = CLK_init((void *)CLK_BASE_ADDR, sizeof(CLK_Obj));
    myCpu = CPU_init((void *)NULL, sizeof(CPU_Obj));
    myFlash = FLASH_init((void *)FLASH_BASE_ADDR, sizeof(FLASH_Obj));
    myGpio = GPIO_init((void *)GPIO_BASE_ADDR, sizeof(GPIO_Obj));
    myPie = PIE_init((void *)PIE_BASE_ADDR, sizeof(PIE_Obj));
    myPll = PLL_init((void *)PLL_BASE_ADDR, sizeof(PLL_Obj));
    myTimer = TIMER_init((void *)TIMER0_BASE_ADDR, sizeof(TIMER_Obj));
    myWDog = WDOG_init((void *)WDOG_BASE_ADDR, sizeof(WDOG_Obj));

    // Perform basic system initialization
    WDOG_disable(myWDog);
    CLK_enableAdcClock(myClk);
    (*Device_cal)();

    //Select the internal oscillator 1 as the clock source
    CLK_setOscSrc(myClk, CLK_OscSrc_Internal);

    // Setup the PLL for x10 /2 which will yield 50Mhz = 10Mhz * 10 / 2
    PLL_setup(myPll, PLL_Multiplier_10, PLL_DivideSelect_ClkIn_by_2);

    // Disable the PIE and all interrupts
    PIE_disable(myPie);
    PIE_disableAllInts(myPie);
    CPU_disableGlobalInts(myCpu);
    CPU_clearIntFlags(myCpu);

    // If running from flash copy RAM only functions to RAM
    #ifdef _FLASH
    memcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (size_t)&RamfuncsLoadSize);
    #endif

    // Setup a debug vector table and enable the PIE
    PIE_setDebugIntVectorTable(myPie);
    PIE_enable(myPie);

    // Register interrupt handlers in the PIE vector table
    PIE_registerPieIntHandler(myPie, PIE_GroupNumber_1, PIE_SubGroupNumber_7, (intVec_t)&cpu_timer0_isr);

    // Configure CPU-Timer 0 to interrupt every 500 milliseconds:
    // 60MHz CPU Freq, 50 millisecond Period (in uSeconds)
    // ConfigCpuTimer(&CpuTimer0, 60, 500000);
    TIMER_stop(myTimer);
    TIMER_setPeriod(myTimer, 50 * 500000);
    TIMER_setPreScaler(myTimer, 0);
    TIMER_reload(myTimer);
    TIMER_setEmulationMode(myTimer, TIMER_EmulationMode_StopAfterNextDecrement);
    TIMER_enableInt(myTimer);

    TIMER_start(myTimer);

    //Aidyn
    GPIO_setPullUp(myGpio, GPIO_Number_4, GPIO_PullUp_Enable); ///////freq update
    GPIO_setPullUp(myGpio, GPIO_Number_5, GPIO_PullUp_Enable); ///////reset
    GPIO_setPullUp(myGpio, GPIO_Number_6, GPIO_PullUp_Enable); ///////data
    GPIO_setPullUp(myGpio, GPIO_Number_18, GPIO_PullUp_Enable); ///////wclk


    // Configure GPIO 0-3 as outputs
    GPIO_setMode(myGpio, GPIO_Number_0, GPIO_0_Mode_GeneralPurpose);
    GPIO_setMode(myGpio, GPIO_Number_1, GPIO_0_Mode_GeneralPurpose);
    GPIO_setMode(myGpio, GPIO_Number_2, GPIO_0_Mode_GeneralPurpose);
    GPIO_setMode(myGpio, GPIO_Number_3, GPIO_0_Mode_GeneralPurpose);
    //Aidyn
    GPIO_setMode(myGpio, GPIO_Number_18, GPIO_18_Mode_XCLKOUT); ///////////////wclk
    GPIO_setMode(myGpio, GPIO_Number_4, GPIO_0_Mode_GeneralPurpose); ///////freq update
    GPIO_setMode(myGpio, GPIO_Number_5, GPIO_0_Mode_GeneralPurpose); ///////reset
    GPIO_setMode(myGpio, GPIO_Number_6, GPIO_0_Mode_GeneralPurpose); ///////data

    GPIO_setDirection(myGpio, GPIO_Number_0, GPIO_Direction_Output);
    GPIO_setDirection(myGpio, GPIO_Number_1, GPIO_Direction_Output);
    GPIO_setDirection(myGpio, GPIO_Number_2, GPIO_Direction_Output);
    GPIO_setDirection(myGpio, GPIO_Number_3, GPIO_Direction_Output);
    //Aidyn
    GPIO_setDirection(myGpio, GPIO_Number_18, GPIO_18_Mode_XCLKOUT); ///////////wclk
    GPIO_setDirection(myGpio, GPIO_Number_4, GPIO_Direction_Output); /////freq update
    GPIO_setDirection(myGpio, GPIO_Number_5, GPIO_Direction_Output); /////reset
    GPIO_setDirection(myGpio, GPIO_Number_6, GPIO_Direction_Output); ////data output

    GPIO_setLow(myGpio, GPIO_Number_0);
    GPIO_setHigh(myGpio, GPIO_Number_1);
    GPIO_setLow(myGpio, GPIO_Number_2);
    GPIO_setHigh(myGpio, GPIO_Number_3);
    //Aidyn
    GPIO_setHigh(myGpio, GPIO_Number_18); ///////////wclk
    GPIO_setHigh(myGpio, GPIO_Number_4); /////freq update
    GPIO_setHigh(myGpio, GPIO_Number_5); ////reset

    // Enable CPU INT1 which is connected to CPU-Timer 0:
    CPU_enableInt(myCpu, CPU_IntNumber_1);

    // Enable TINT0 in the PIE: Group 1 interrupt 7
    PIE_enableTimer0Int(myPie);

    // Enable global Interrupts and higher priority real-time debug events
    CPU_enableGlobalInts(myCpu);
    CPU_enableDebugInt(myCpu);


    for(;;){
    asm(" NOP");
    }

    }
    ///////////////////////////////////MY TRY TO CODE//////////////////////////
    // Example of the BitConverter.GetBytes( int ) method.
    using System;

    class GetBytesInt32Demo
    {
    const string formatter = "{0,16}{1,20}";

    // Convert an int argument to a byte array and display it.
    public static void GetBytesInt32( int argument )
    {
    byte[ ] byteArray = BitConverter.GetBytes( argument );
    Console.WriteLine( formatter, argument,
    BitConverter.ToString( byteArray ) );
    }
    }


    void tfr_byte (GetBytesInt32(data)) {
    int i=0;
    for (i=0; i<8; i++, data >=1) {
    digitalWrite (GPIO_Number_6, data & 0x01);
    pulseHigh (GPIO_Number_18);
    }
    }

    void sendFreq(double frequency) {
    int b=0;
    int32_t freq = (frequency *4294967296.0)/(180.0e6);
    for ( b = 0; b<4; b++, freq >>=8) {
    tfr_byte(freq & 0xFF);
    }
    tfr_byte(0x000); // Final control byte, all 0 for 9851 chip
    pulseHigh(GPIO_Number_4); // Done! Should see output
    }
    void loop() {
    sendFrequency(100.0e3); // freq input
    while(1);
    }
    ////////////////////////////////////////////////////////////
    interrupt void cpu_timer0_isr(void)
    {
    interruptCount++;

    // Toggle GPIOs
    GPIO_toggle(myGpio, GPIO_Number_0);
    GPIO_toggle(myGpio, GPIO_Number_1);
    GPIO_toggle(myGpio, GPIO_Number_2);
    GPIO_toggle(myGpio, GPIO_Number_3);
    //Aidyn
    GPIO_toggle(myGpio, GPIO_Number_18);
    GPIO_toggle(myGpio, GPIO_Number_4);
    GPIO_toggle(myGpio, GPIO_Number_5);
    GPIO_toggle(myGpio, GPIO_Number_6);


    // Acknowledge this interrupt to receive more interrupts from group 1
    PIE_clearInt(myPie, PIE_GroupNumber_1);
    }


    //===========================================================================
    // No more.
    //===========================================================================

  • Hi,

    I know you've a launchpad, by which controller I meant which controller in Arduino board. Anyways, I just checked the AD9851 datasheet; so you're trying the Parallel load D0-D7. For parallel loading, timing plays a very important role. Please go through page number 14 onwards of AD9851 datasheet and try implementing accordingly. Secondly, do try out the serial load through D7; this should be easier to implement.

    Regards,

    Gautam

  • Hi Gautam,

    I am very confused right now.

    Could you write a sample code, please?

    Also, which pin should I assign as a RESET? Should I just pick a pin or is there a designated pin (I could not find)?

    Moreover, I am writing a function that changes 32bit into a byte, also, not working. Probably, we do not need if using your method (serial load).

    Could you help me please?

    THANK YOU VERY MUCH!

    Aidyn 

  • Hi,

    Could you write a sample code, please?


    Sorry mate, I'm a bit busy with my work.

    As, I've personally not worked on this IC, I would like you to refer the datasheet and work on the SPI signal patterns. Also, I'll forward your query to one of my TI buddies.

    Regards,

    Gautam

  • Thank you very much Gautam,

  • This is my current code:

    I have problems with pinning, I think. When I pin, the code stops working.

    I pinned the following:

           Picollo              DDS chip

    J2:       pin# 5          RESET

                 pin# 1 GND

                 pin# 8         DATA

    J1:       pin# 1  +3.3V

                 pin# 5         RESET

                 pin# 7         WCLK  

     

    Please, help me.

    //#############################################################################
    //
    // File: f2802x_examples_ccsv4/timed_led_blink/Example_F2802xLedBlink.c
    //
    // Title: F2802x LED Blink Getting Started Program.
    //
    // Group: C2000
    // Target Device: TMS320F2802x
    //
    //! \addtogroup example_list
    //! <h1>LED Blink</h1>
    //!
    //! This example configures CPU Timer0 for a 500 msec period, and toggles
    //! the GPIO0-4 LEDs once per interrupt. For testing purposes, this example
    //! also increments a counter each time the timer asserts an interrupt.
    //!
    //! Watch Variables
    //! - interruptCount
    //!
    //! Monitor the GPIO0-4 LEDs blink on (for 500 msec) and off (for 500 msec)
    //! on the 2802x0 control card.
    //
    // (C) Copyright 2012, Texas Instruments, Inc.
    //#############################################################################
    // $TI Release: f2802x Support Library v200 $
    // $Release Date: Tue Jul 24 10:01:39 CDT 2012 $
    //#############################################################################

    #include "DSP28x_Project.h" // Device Headerfile and Examples Include File

    #include "f2802x_common/include/adc.h"
    #include "f2802x_common/include/clk.h"
    #include "f2802x_common/include/flash.h"
    #include "f2802x_common/include/gpio.h"
    #include "f2802x_common/include/pie.h"
    #include "f2802x_common/include/pll.h"
    #include "f2802x_common/include/timer.h"
    #include "f2802x_common/include/wdog.h"


    // Prototype statements for functions found within this file.
    interrupt void cpu_timer0_isr(void);
    void tobyte (int j, char* c);
    void tfr_byte ( int data );
    void sendFrequency(double frequency);

    uint16_t interruptCount = 0;

    ADC_Handle myAdc;
    CLK_Handle myClk;
    FLASH_Handle myFlash;
    GPIO_Handle myGpio;
    PIE_Handle myPie;
    TIMER_Handle myTimer;

    void main(void)
    {

    CPU_Handle myCpu;
    PLL_Handle myPll;
    WDOG_Handle myWDog;

    // Initialize all the handles needed for this application
    myAdc = ADC_init((void *)ADC_BASE_ADDR, sizeof(ADC_Obj));
    myClk = CLK_init((void *)CLK_BASE_ADDR, sizeof(CLK_Obj));
    myCpu = CPU_init((void *)NULL, sizeof(CPU_Obj));
    myFlash = FLASH_init((void *)FLASH_BASE_ADDR, sizeof(FLASH_Obj));
    myGpio = GPIO_init((void *)GPIO_BASE_ADDR, sizeof(GPIO_Obj));
    myPie = PIE_init((void *)PIE_BASE_ADDR, sizeof(PIE_Obj));
    myPll = PLL_init((void *)PLL_BASE_ADDR, sizeof(PLL_Obj));
    myTimer = TIMER_init((void *)TIMER0_BASE_ADDR, sizeof(TIMER_Obj));
    myWDog = WDOG_init((void *)WDOG_BASE_ADDR, sizeof(WDOG_Obj));

    // Perform basic system initialization
    WDOG_disable(myWDog);
    CLK_enableAdcClock(myClk);
    (*Device_cal)();

    //Select the internal oscillator 1 as the clock source
    CLK_setOscSrc(myClk, CLK_OscSrc_Internal);

    // Setup the PLL for x10 /2 which will yield 50Mhz = 10Mhz * 10 / 2
    PLL_setup(myPll, PLL_Multiplier_10, PLL_DivideSelect_ClkIn_by_2);

    // Disable the PIE and all interrupts
    PIE_disable(myPie);
    PIE_disableAllInts(myPie);
    CPU_disableGlobalInts(myCpu);
    CPU_clearIntFlags(myCpu);

    // If running from flash copy RAM only functions to RAM
    #ifdef _FLASH
    memcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (size_t)&RamfuncsLoadSize);
    #endif

    // Setup a debug vector table and enable the PIE
    PIE_setDebugIntVectorTable(myPie);
    PIE_enable(myPie);

    // Register interrupt handlers in the PIE vector table
    PIE_registerPieIntHandler(myPie, PIE_GroupNumber_1, PIE_SubGroupNumber_7, (intVec_t)&cpu_timer0_isr);

    // Configure CPU-Timer 0 to interrupt every 500 milliseconds:
    // 60MHz CPU Freq, 50 millisecond Period (in uSeconds)
    // ConfigCpuTimer(&CpuTimer0, 60, 500000);
    TIMER_stop(myTimer);
    TIMER_setPeriod(myTimer, 50 * 500000);
    TIMER_setPreScaler(myTimer, 0);
    TIMER_reload(myTimer);
    TIMER_setEmulationMode(myTimer, TIMER_EmulationMode_StopAfterNextDecrement);
    TIMER_enableInt(myTimer);

    TIMER_start(myTimer);

    //Aidyn
    GPIO_setPullUp(myGpio, GPIO_Number_4, GPIO_PullUp_Enable); ///////freq update
    GPIO_setPullUp(myGpio, GPIO_Number_5, GPIO_PullUp_Enable); ///////reset
    GPIO_setPullUp(myGpio, GPIO_Number_6, GPIO_PullUp_Enable); ///////data
    GPIO_setPullUp(myGpio, GPIO_Number_18, GPIO_PullUp_Enable); ///////wclk


    // Configure GPIO 0-3 as outputs
    GPIO_setMode(myGpio, GPIO_Number_0, GPIO_0_Mode_GeneralPurpose);
    GPIO_setMode(myGpio, GPIO_Number_1, GPIO_0_Mode_GeneralPurpose);
    GPIO_setMode(myGpio, GPIO_Number_2, GPIO_0_Mode_GeneralPurpose);
    GPIO_setMode(myGpio, GPIO_Number_3, GPIO_0_Mode_GeneralPurpose);
    //Aidyn
    GPIO_setMode(myGpio, GPIO_Number_18, GPIO_18_Mode_XCLKOUT); ///////////////wclk
    GPIO_setMode(myGpio, GPIO_Number_4, GPIO_0_Mode_GeneralPurpose); ///////freq update
    GPIO_setMode(myGpio, GPIO_Number_5, GPIO_0_Mode_GeneralPurpose); ///////reset
    GPIO_setMode(myGpio, GPIO_Number_6, GPIO_0_Mode_GeneralPurpose); ///////data

    GPIO_setDirection(myGpio, GPIO_Number_0, GPIO_Direction_Output);
    GPIO_setDirection(myGpio, GPIO_Number_1, GPIO_Direction_Output);
    GPIO_setDirection(myGpio, GPIO_Number_2, GPIO_Direction_Output);
    GPIO_setDirection(myGpio, GPIO_Number_3, GPIO_Direction_Output);
    //Aidyn
    GPIO_setDirection(myGpio, GPIO_Number_18, GPIO_18_Mode_XCLKOUT); ///////////wclk
    GPIO_setDirection(myGpio, GPIO_Number_4, GPIO_Direction_Output); /////freq update
    GPIO_setDirection(myGpio, GPIO_Number_5, GPIO_Direction_Output); /////reset
    GPIO_setDirection(myGpio, GPIO_Number_6, GPIO_Direction_Output); ////data output

    GPIO_setLow(myGpio, GPIO_Number_0);
    GPIO_setHigh(myGpio, GPIO_Number_1);
    GPIO_setLow(myGpio, GPIO_Number_2);
    GPIO_setHigh(myGpio, GPIO_Number_3);
    //Aidyn
    GPIO_setHigh(myGpio, GPIO_Number_18); ///////////wclk
    GPIO_setHigh(myGpio, GPIO_Number_4); /////freq update
    GPIO_setHigh(myGpio, GPIO_Number_5); ////reset

    // Enable CPU INT1 which is connected to CPU-Timer 0:
    CPU_enableInt(myCpu, CPU_IntNumber_1);

    // Enable TINT0 in the PIE: Group 1 interrupt 7
    PIE_enableTimer0Int(myPie);

    // Enable global Interrupts and higher priority real-time debug events
    CPU_enableGlobalInts(myCpu);
    CPU_enableDebugInt(myCpu);


    for(;;){
    asm(" NOP");
    }

    }
    ///////////////////////////////////MY TRY TO CODE//////////////////////////

    void tobyte (int j, char* c) {

    c=(char*)(((int)'0')+j);

    }


    ////////////////////////////////////////////////////////////////////////////
    void tfr_byte ( data ) {
    int i;
    char byte;
    tobyte (data, &byte);
    for (i=0; i<8; i++, data >=1) {

    if ((data & 0x01) == 1) {
    GPIO_setHigh (myGpio, GPIO_Number_6);
    }
    if ((data & 0x01) == 0) {
    GPIO_setLow (myGpio, GPIO_Number_6);
    }
    GPIO_setHigh (myGpio, GPIO_Number_18);
    }
    }

    void sendFrequency(double frequency) {
    int b=0;
    int32_t freq = (frequency *4294967296.0)/(180.0e6);
    for ( b = 0; b<4; b++, freq >>=8) {
    tfr_byte(freq & 0xFF);
    }
    tfr_byte(0x000); // Final control byte, all 0 for 9851 chip
    GPIO_setHigh(myGpio, GPIO_Number_4); // Done! Should see output
    }
    void loop() {
    sendFrequency(100.0e3); // freq input
    while(1);
    }


    ////////////////////////////////////////////////////////////
    interrupt void cpu_timer0_isr(void)
    {
    interruptCount++;

    // Toggle GPIOs
    GPIO_toggle(myGpio, GPIO_Number_0);
    GPIO_toggle(myGpio, GPIO_Number_1);
    GPIO_toggle(myGpio, GPIO_Number_2);
    GPIO_toggle(myGpio, GPIO_Number_3);
    //Aidyn; think about this
    GPIO_toggle(myGpio, GPIO_Number_18);
    GPIO_toggle(myGpio, GPIO_Number_4);
    GPIO_toggle(myGpio, GPIO_Number_5);
    GPIO_toggle(myGpio, GPIO_Number_6);


    // Acknowledge this interrupt to receive more interrupts from group 1
    PIE_clearInt(myPie, PIE_GroupNumber_1);
    }


    //===========================================================================
    // No more.
    //===========================================================================

  • Aidyn,

    Try to control each of the LEDs first (GPIO0 to GPIO3) and understand the associated code.

    Once you can control them in a predictable manner, pick the pins you want to use to interface to your external chip (see the LAUNCHXL-F28027-PinOut.xlsx spreadsheet). Make sure that you can control every one of these pins (by connecting to a multimeter or oscilloscope).  

    Only after those steps should you actually connect your external device and try to control it.  

  • Devin,

    I am able to control each diodes separately.

    The problem is pinning itself.

    I do not know which pin goes where. As I assigned in the code, it does not work.

    Thanks though! 

  • Aidyn,

    In ControlSUITE, please check out "LAUNCHXL-F28027-PinOut.xlsx" which is in

    ..\TI\controlSUITE\development_kits\C2000_LaunchPad\LAUNCHXL-F28027\HwDevPkg