WS2811 and WS2812 One-Wire Communication Assembly Help


Closed Thread
Results 1 to 25 of 25

Hybrid View

  1. #1
    Join Date
    May 2013
    Location
    australia
    Posts
    2,392


    Did you find this post helpful? Yes | No

    Default Re: WS2811 and WS2812 One-Wire Communication Assembly Help

    I don't have a 12mhz crystal so I am having problems configuring 4550 for 48mhz internal osc. My test board has a 10mhz resonator. The usb pre-scale stuff is throwing me off. If you could help me with the configurations for internal osc 48mhz or 40mhz using the pll and the 10mhz resonator.

    the pll input needs to be 4MHz if you are going to use it . a 10MHz resonator
    cant be divided down to 4MHz using plldiv to keep pll input within specs .

    the xtal/res needs to be a multiple of 4 for correct use, my board has a 20MHz xtal

    out of spec operation may be possible but may lack stability required for this use

    Also as posted the code makes one pass and stops
    yep that's all that code did , you should see a white "R" , a loop serves no
    purpose here, the other examples are more elaborate




    if you want text scroll

    Code:
    aloop: 
    
     for  p_offset=0 to 1536 step 24
         p_pc=nows    ;set number of leds to load 
         @ Flash2Ram  _pixels,_rw1' Get a String from flash memory
         p_pc=nows     ;set number of leds to show
         call showpix
         pause 200
      next   
         
     goto aloop     
         stop
    end
    rw1:
      @ DW  0,0,0, 0,0,0,    0,0,0,    0,0,0,    0,0,0,    0,0,0, 0,0,0, 0,0,0
      @ DW  0,0,0, 0,0,0,    0,0,0,    0,0,0,    0,0,0,    0,0,0, 0,0,0, 0,0,0
      @ DW  0,0,0, 0,0,0,    0,0,0,    0,0,0,    0,0,0,    0,0,0, 0,0,0, 0,0,0
      @ DW  0,0,0, 0,0,0,    0,0,0,    0,0,0,    0,0,0,    0,0,0, 0,0,0, 0,0,0
      @ DW  0,0,0, 0,0,0,    0,0,0,    0,0,0,    0,0,0,    0,0,0, 0,0,0, 0,0,0
      @ DW  0,0,0, 0,0,0,    0,0,0,    0,0,0,    0,0,0,    0,0,0, 0,0,0, 0,0,0
      @ DW  0,0,0, 0,0,0,    0,0,0,    0,0,0,    0,0,0,    0,0,0, 0,0,0, 0,0,0
      @ DW  0,0,0, 0,0,0,    0,0,0,    0,0,0,    0,0,0,    0,0,0, 0,0,0, 0,0,0
      ;192
      @ DW  0,0,0, 50,50,50, 50,50,50, 50,50,50, 0,0,0,    0,0,0, 0,0,0, 0,0,0 ;23
      @ DW  0,0,0, 50,50,50, 0,0,0,    0,0,0,    50,50,50, 0,0,0, 0,0,0, 0,0,0 ;47
      @ DW  0,0,0, 50,50,50, 0,0,0,    0,0,0,    50,50,50, 0,0,0, 0,0,0, 0,0,0 ;71
      @ DW  0,0,0, 50,50,50, 50,50,    50,50,50, 50,0,0,0, 0,0,0, 0,0,0, 0,0,0 ;95
      @ DW  0,0,0, 50,50,50, 0,0,0,    0,0,0,    50,50,50, 0,0,0, 0,0,0, 0,0,0 ;119
      @ DW  0,0,0, 50,50,50, 0,0,0,    0,0,0,    50,50,50, 0,0,0, 0,0,0, 0,0,0 ;143
      @ DW  0,0,0, 50,50,50, 0,0,0,    0,0,0,    50,50,50, 0,0,0, 0,0,0, 0,0,0 ;167
      @ DW  0,0,0, 0,0,0,    0,0,0,    0,0,0,    0,0,0,    0,0,0, 0,0,0, 0,0,0 ;191
      ;384
      @ DW  0,0,0, 0,0,0,    50,50,50, 50,50,50, 50,50,50, 0,0,0, 0,0,0, 0,0,0
      @ DW  0,0,0, 0,0,0,    0,0,0,    50,50,50, 0,0,0,    0,0,0, 0,0,0, 0,0,0
      @ DW  0,0,0, 0,0,0,    0,0,0,    50,50,50, 0,0,0,    0,0,0, 0,0,0, 0,0,0
      @ DW  0,0,0, 0,0,0,    0,0,0,    50,50,50, 0,0,0,    0,0,0, 0,0,0, 0,0,0
      @ DW  0,0,0, 0,0,0,    0,0,0,    50,50,50, 0,0,0,    0,0,0, 0,0,0, 0,0,0
      @ DW  0,0,0, 0,0,0,    0,0,0,    50,50,50, 0,0,0,    0,0,0, 0,0,0, 0,0,0
      @ DW  0,0,0, 0,0,0,    50,50,50, 50,50,50, 50,50,50, 0,0,0, 0,0,0, 0,0,0
      @ DW  0,0,0, 0,0,0,    0,0,0,    0,0,0,    0,0,0,    0,0,0, 0,0,0, 0,0,0 
      ;576                                                  
      @ DW  0,0,0, 0,0,0,    50,50,50, 50,50,50, 50,50,50, 0,0,0, 0,0,0, 0,0,0 
      @ DW  0,0,0, 50,50,50, 0,0,0,    0,0,0,    0,0,0,    0,0,0, 0,0,0, 0,0,0 
      @ DW  0,0,0, 50,50,50, 0,0,0,    0,0,0,    0,0,0,    0,0,0, 0,0,0, 0,0,0 
      @ DW  0,0,0, 50,50,50, 0,0,0,    0,0,0,    0,0,0,    0,0,0, 0,0,0, 0,0,0 
      @ DW  0,0,0, 50,50,50, 0,0,0,    0,0,0,    0,0,0,    0,0,0, 0,0,0, 0,0,0 
      @ DW  0,0,0, 50,50,50, 0,0,0,    0,0,0,    0,0,0,    0,0,0, 0,0,0, 0,0,0 
      @ DW  0,0,0, 0,0,0,    50,50,50, 50,50,50, 50,50,50, 0,0,0, 0,0,0, 0,0,0 
      @ DW  0,0,0, 0,0,0,    0,0,0,    0,0,0,    0,0,0,    0,0,0, 0,0,0, 0,0,0
      ;768
      @ DW  0,0,0 ,50,50,50, 0,0,0,    0,0,0,    50,50,50, 0,0,0, 0,0,0, 0,0,0
      @ DW  0,0,0, 50,50,50, 0,0,0,    0,0,0,    50,50,50, 0,0,0, 0,0,0, 0,0,0
      @ DW  0,0,0, 50,50,50, 0,0,0,    0,0,0,    50,50,50, 0,0,0, 0,0,0, 0,0,0
      @ DW  0,0,0, 50,50,50, 50,50,50, 50,50,50, 50,50,50, 0,0,0, 0,0,0, 0,0,0
      @ DW  0,0,0, 50,50,50, 0,0,0,    0,0,0,    50,50,50, 0,0,0, 0,0,0, 0,0,0
      @ DW  0,0,0, 50,50,50, 0,0,0,    0,0,0,    50,50,50, 0,0,0, 0,0,0, 0,0,0
      @ DW  0,0,0, 50,50,50, 0,0,0,    0,0,0,    50,50,50, 0,0,0, 0,0,0, 0,0,0 
      @ DW  0,0,0, 0,0,0,    0,0,0,    0,0,0,    0,0,0,    0,0,0, 0,0,0, 0,0,0
      ;960
      @ DW  0,0,0, 0,0,0,    50,50,50, 50,50,50, 0,0,0,    0,0,0, 0,0,0, 0,0,0
      @ DW  0,0,0, 50,50,50, 0,0,0,    0,0,0,    50,50,50, 0,0,0, 0,0,0, 0,0,0
      @ DW  0,0,0, 50,50,50, 0,0,0,    0,0,0,    50,50,50, 0,0,0, 0,0,0, 0,0,0
      @ DW  0,0,0, 50,50,50, 50,50,50, 50,50,50, 50,50,50, 0,0,0, 0,0,0, 0,0,0
      @ DW  0,0,0, 50,50,50, 0,0,0,    0,0,0,    50,50,50, 0,0,0, 0,0,0, 0,0,0
      @ DW  0,0,0, 50,50,50, 0,0,0,    0,0,0,    50,50,50, 0,0,0, 0,0,0, 0,0,0
      @ DW  0,0,0, 50,50,50, 0,0,0,    0,0,0,    50,50,50, 0,0,0, 0,0,0, 0,0,0 
      @ DW  0,0,0, 0,0,0,    0,0,0,    0,0,0,    0,0,0,    0,0,0, 0,0,0, 0,0,0
      ;1152
      @ DW  0,0,0, 50,50,50, 50,50,50, 50,50,50, 0,0,0,    0,0,0, 0,0,0, 0,0,0
      @ DW  0,0,0, 50,50,50, 0,0,0,    0,0,0,    50,50,50, 0,0,0, 0,0,0, 0,0,0
      @ DW  0,0,0, 50,50,50, 0,0,0,    0,0,0,    50,50,50, 0,0,0, 0,0,0, 0,0,0
      @ DW  0,0,0, 50,50,50, 50,50,50, 50,50,50, 0,0,0,    0,0,0, 0,0,0, 0,0,0
      @ DW  0,0,0, 50,50,50, 0,0,0,    0,0,0,    50,50,50, 0,0,0, 0,0,0, 0,0,0
      @ DW  0,0,0, 50,50,50, 0,0,0,    0,0,0,    50,50,50, 0,0,0, 0,0,0, 0,0,0
      @ DW  0,0,0, 50,50,50, 0,0,0,    0,0,0,    50,50,50, 0,0,0, 0,0,0, 0,0,0 
      @ DW  0,0,0, 0,0,0,    0,0,0,    0,0,0,    0,0,0,    0,0,0, 0,0,0, 0,0,0
      ;1344
      @ DW  0,0,0 ,50,50,50, 50,50,50, 50,50,50, 0,0,0,    0,0,0, 0,0,0, 0,0,0
      @ DW  0,0,0, 50,50,50, 0,0,0,    0,0,0,    50,50,50, 0,0,0, 0,0,0, 0,0,0
      @ DW  0,0,0, 50,50,50, 0,0,0,    0,0,0,    50,50,50, 0,0,0, 0,0,0, 0,0,0
      @ DW  0,0,0, 50,50,50, 0,0,0,    0,0,0,    50,50,50, 0,0,0, 0,0,0, 0,0,0
      @ DW  0,0,0, 50,50,50, 0,0,0,    0,0,0,    50,50,50, 0,0,0, 0,0,0, 0,0,0
      @ DW  0,0,0, 50,50,50, 0,0,0,    0,0,0,    50,50,50, 0,0,0, 0,0,0, 0,0,0
      @ DW  0,0,0 ,50,50,50, 50,50,50, 50,50,50, 0,0,0,    0,0,0, 0,0,0, 0,0,0
      @ DW  0,0,0, 0,0,0,    0,0,0,    0,0,0,    0,0,0,    0,0,0, 0,0,0, 0,0,0
      ;1536
      @ DW  0,0,0, 0,0,0,    0,0,0,    0,0,0,    0,0,0,    0,0,0, 0,0,0, 0,0,0
      @ DW  0,0,0, 0,0,0,    0,0,0,    0,0,0,    0,0,0,    0,0,0, 0,0,0, 0,0,0
      @ DW  0,0,0, 0,0,0,    0,0,0,    0,0,0,    0,0,0,    0,0,0, 0,0,0, 0,0,0
      @ DW  0,0,0, 0,0,0,    0,0,0,    0,0,0,    0,0,0,    0,0,0, 0,0,0, 0,0,0
      @ DW  0,0,0, 0,0,0,    0,0,0,    0,0,0,    0,0,0,    0,0,0, 0,0,0, 0,0,0
      @ DW  0,0,0, 0,0,0,    0,0,0,    0,0,0,    0,0,0,    0,0,0, 0,0,0, 0,0,0
      @ DW  0,0,0, 0,0,0,    0,0,0,    0,0,0,    0,0,0,    0,0,0, 0,0,0, 0,0,0
      @ DW  0,0,0, 0,0,0,    0,0,0,    0,0,0,    0,0,0,    0,0,0, 0,0,0, 0,0,0
      @ DW  0,0,0, 0,0,0,    0,0,0,    0,0,0,    0,0,0,    0,0,0, 0,0,0, 0,0,0
    Warning I'm not a teacher

  2. #2


    Did you find this post helpful? Yes | No

    Default Re: WS2811 and WS2812 One-Wire Communication Assembly Help

    Richard

    I changed the crystal to 20mhz and added the scroll code above. It's now working, so thanks for your efforts.

    I'll study the other code and see what I can do.

    Mark

  3. #3
    Join Date
    Nov 2003
    Location
    Greece
    Posts
    3,821


    Did you find this post helpful? Yes | No

    Default Re: WS2811 and WS2812 One-Wire Communication Assembly Help

    Similar to WS2811/2812 is the APA102C led chip, produced as a strip too.

    The Datasheet is unclear of the timing specs.

    I tried many hours to make it work but in vein. No led so far is under my control. Any ideas, welcome.

    An example code is this:
    Code:
    arraywrite leds,[0,0,0,0,$f0,128,128,128,255,255,255,255]
    
    shiftout led_data,led_clock,1,[leds[0],leds[1],leds[2],leds[3],leds[4],leds[5],leds[6],leds[7],leds[8],leds[9],leds[10],leds[11]]
    
    Lcdout  $fe,$1,"Stoped"
    stop
    Any help?
    Ioannis
    Attached Images Attached Images

  4. #4
    Join Date
    May 2013
    Location
    australia
    Posts
    2,392


    Did you find this post helpful? Yes | No

    Default Re: WS2811 and WS2812 One-Wire Communication Assembly Help

    this may help
    Warning I'm not a teacher

  5. #5
    Join Date
    Nov 2003
    Location
    Greece
    Posts
    3,821


    Did you find this post helpful? Yes | No

    Default Re: WS2811 and WS2812 One-Wire Communication Assembly Help

    Hi Richard.

    Thanks for the link. The real help was ... the color of the cables. On my strip the ground is Blue and +5V is Black. Really! They made +5V Black!

    Of course I used Black as ground and that was the problem.

    Be careful if color is not red then,

    Black is +5, NOT ground.
    Blue is Ground.

    Chinese people might have a different color preferences...

    I had it working now. Almost got crazy, since logic analyzer was showing all was OK!

    This type of LED's is more easy to control since they do not need strict timings. Just spit out at whatever pace you like or can and LED's follow. Very easy for any MCU.

    People have reported driving SPI up to 60MHz on these strips.

    Ioannis

  6. #6
    Join Date
    Nov 2003
    Location
    Greece
    Posts
    3,821


    Did you find this post helpful? Yes | No

    Default Re: WS2811 and WS2812 One-Wire Communication Assembly Help

    The following is a simple test program to demonstrate how to use of APA-102 leds.

    It lights the Blue led and shifts it ten places in 100ms interval.

    To successfully manage this, tens of hours were spent... Datasheet sucks.

    But in general is much easier to control as the timings are those of an SPI interface and can be really fast driven if you have the resources.

    Code:
    arraywrite red_a,[0,0,0,0,0,0,0,0,0,0,0]
    arraywrite green_a,[0,0,0,0,0,0,0,0,0,0,0]
    arraywrite blue_a,[255,0,0,0,0,0,0,0,0,0,0]
    
    gosub display_led
    
    stop
    
    display_led:
        for k=0 to led_num
            for i=0 to led_num
                shiftout led_data,led_clock,1,[lum,blue_a[i],green_a[i],red_a[i]]
            next i
        gosub shift_sub
        next k
        pause 1000 'delay from one color to another
    return
    
    shift_sub:
        shiftout led_data,led_clock,1,[%11100011,0,0,0,0,0] 'END of Frame
        pause 100'led move step delay
        temp=red_a[k]:RED_A[k]=RED_A[k+1]:RED_A[k+1]=temp
        temp=green_a[k]:green_a[k]=green_a[k+1]:green_a[k+1]=temp
        temp=blue_a[k]:blue_a[k]=blue_a[k+1]:blue_a[k+1]=temp
    return
    Ioannis

  7. #7
    Join Date
    May 2013
    Location
    australia
    Posts
    2,392


    Did you find this post helpful? Yes | No

    Smile Re: WS2811 and WS2812 One-Wire Communication Assembly Help

    But in general is much easier to control as the timings are those of an SPI interface and can be really fast driven if you have the resources.
    I had 3 in the parts bin , so I had a go using mssp module . @64mhz with the fastest spi clk its no problem at all .
    a complete 3 led frame is less than 80uS . heaps easier than ws2812
    Attached Files Attached Files
    Warning I'm not a teacher

Similar Threads

  1. PIC to WS2812B / WS2811 IC
    By comwarrior in forum mel PIC BASIC Pro
    Replies: 6
    Last Post: - 19th January 2018, 19:37
  2. ws2812 - pic12f1822
    By richard in forum Code Examples
    Replies: 0
    Last Post: - 12th January 2016, 09:52
  3. Assembly
    By Normnet in forum mel PIC BASIC Pro
    Replies: 0
    Last Post: - 19th March 2007, 03:44
  4. How do you do this in Assembly
    By ice in forum mel PIC BASIC Pro
    Replies: 3
    Last Post: - 10th May 2005, 06:47
  5. Assembly?
    By Dwayne in forum General
    Replies: 11
    Last Post: - 4th January 2004, 18:18

Members who have read this thread : 1

You do not have permission to view the list of names.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts