Page 1 of 1

How to drive LED array on XK-AUDIO-216-MC-AB?

Posted: Sun Apr 08, 2018 8:19 am
by cjf1699
Dear Everyone,
I'm working on the xCORE-200 Multichannel Audio Platform, which has a 4*4 LED-array on it. The LED array is driven by eight signals each controlling one of 4 rows and 4 columns. Rows are controlled by a 4-bit port XS1_PORT_4C, and columns are controlled by a 4-bit port XS1_PORT_4D.According to the XMOS progamming guide, I declared 2 out ports as global variables like this:

Code: Select all

on tile[0]: out port led_row = XS1_PORT_4C;
on tile[0]: out port led_col = XS1_PORT_4D;
And I called them like this in the i2s_loopback function of example AN00162:

Code: Select all

 case i2s.receive(size_t index, int32_t sample):
      samples[index] = sample;
      if(sample == 0){
          led_row <: 0x0E;
          led_col <: 0x0E;
      }                                      // want to active the led of row0 ,col0
     // xscope_int(0, sample);
      break;

    case i2s.send(size_t index) -> int32_t sample:
      sample = samples[index];
   //   xscope_int(1, sample);
      if(sample != 0){
                led_row <: 0x07;
                led_col <: 0x07;                // want to active the led of row3 ,col3
            }
      break;
However, nothing happened to the leds, they weren't actived. What's wrong in it?
Thank you very much!
cjf

Re: How to drive LED array on XK-AUDIO-216-MC-AB?

Posted: Sun Apr 08, 2018 11:32 am
by mon2
You will have to learn how to use the search feature for this user forum. The same question has been asked and replied to many times.

http://www.xcore.com/viewtopic.php?f=3& ... e50#p31562

Re: How to drive LED array on XK-AUDIO-216-MC-AB?

Posted: Sun Apr 08, 2018 4:13 pm
by cjf1699
mon2 wrote:You will have to learn how to use the search feature for this user forum. The same question has been asked and replied to many times.

http://www.xcore.com/viewtopic.php?f=3& ... e50#p31562
Thank you for your answer. But I still encoutered some problems...
According to the hardware manual map, both rows and columns are actived low. So I added codes like this:

Code: Select all

case i2s.receive(size_t index, int32_t sample):
      samples[index] = sample;

      if(sample != 0){              //turn on D25
                  led_row <: 0x7;
        
          led_col <: 0x7;
      }

     // xscope_int(0, sample);
      break;

    case i2s.send(size_t index) -> int32_t sample:
      sample = samples[index];
   //   xscope_int(1, sample);

      if(sample != 0){              //turn on D10
               
               led_row <: 0xE;
             
               led_col <: 0xE;
            

      break;
However ,weird things happened. When I run the project, it appeared like this:
D11~D13, D22~D24 were on, while D10 and D25 were "half on"..
I don't know why. Perhaps I didn't active the right pins?
Thanks a lot!
Image

Re: How to drive LED array on XK-AUDIO-216-MC-AB?

Posted: Sun Apr 08, 2018 4:40 pm
by mon2
Modify the code to view the results of the D25 LED as follows and post your results:

Code: Select all

case i2s.receive(size_t index, int32_t sample):
      samples[index] = sample;

      if(sample != 0){              //turn on D25
                  led_row <: 0x7;
                  led_col <: 0x7;
                  while(1); // wait forever to view the results
      }

     // xscope_int(0, sample);
      break;

Re: How to drive LED array on XK-AUDIO-216-MC-AB?

Posted: Mon Apr 09, 2018 3:24 am
by cjf1699
Well ,every led except D25 was on.

Image

Moreover, the music can't be looped back with a "while(1)" exsiting.

Re: How to drive LED array on XK-AUDIO-216-MC-AB?

Posted: Mon Apr 09, 2018 3:30 am
by mon2
Smelling a documentation error...try this and post your results:

Code: Select all

case i2s.receive(size_t index, int32_t sample):
      samples[index] = sample;

      if(sample != 0){              //turn on D25
                  led_row <: 0x7;
                  led_col <: 0x8;
                  while(1); // wait forever to view the results
      }

     // xscope_int(0, sample);
      break;
Yes, the music will not play due to the permanent loop (stop condition). This is only to assist in debugging the LED status.

Re: How to drive LED array on XK-AUDIO-216-MC-AB?

Posted: Mon Apr 09, 2018 4:12 am
by cjf1699
When I wrote the codes this way:

Code: Select all

case i2s.receive(size_t index, int32_t sample):
      samples[index] = sample;

      if(sample != 0){              //turn on D25
                  led_row <: 0x7;
        
          led_col <: 0x8;
      }

     // xscope_int(0, sample);
      break;

    case i2s.send(size_t index) -> int32_t sample:
      sample = samples[index];
   //   xscope_int(1, sample);

      if(sample != 0){              //turn on D10
               
               led_row <: 0xE;
             
               led_col <: 0x1;
            

      break;
Shows like this:

Image
This time, both D25 and D10 are on.
The fact turns out that the row is actived low but the column is actived high.....