{"action":"created","issue":{"url":"https://api.github.com/repos/FastLED/FastLED/issues/119","labels_url":"https://api.github.com/repos/FastLED/FastLED/issues/119/labels{/name}","comments_url":"https://api.github.com/repos/FastLED/FastLED/issues/119/comments","events_url":"https://api.github.com/repos/FastLED/FastLED/issues/119/events","html_url":"https://github.com/FastLED/FastLED/issues/119","id":54207582,"number":119,"title":"Support ESP8266 / Xtensa LX3","user":{"login":"kriegsman","id":1334634,"avatar_url":"https://avatars.githubusercontent.com/u/1334634?v=3","gravatar_id":"","url":"https://api.github.com/users/kriegsman","html_url":"https://github.com/kriegsman","followers_url":"https://api.github.com/users/kriegsman/followers","following_url":"https://api.github.com/users/kriegsman/following{/other_user}","gists_url":"https://api.github.com/users/kriegsman/gists{/gist_id}","starred_url":"https://api.github.com/users/kriegsman/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kriegsman/subscriptions","organizations_url":"https://api.github.com/users/kriegsman/orgs","repos_url":"https://api.github.com/users/kriegsman/repos","events_url":"https://api.github.com/users/kriegsman/events{/privacy}","received_events_url":"https://api.github.com/users/kriegsman/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/FastLED/FastLED/labels/enhancement","name":"enhancement","color":"84b6eb"},{"url":"https://api.github.com/repos/FastLED/FastLED/labels/MCUs","name":"MCUs","color":"0052cc"}],"state":"open","locked":false,"assignee":null,"milestone":{"url":"https://api.github.com/repos/FastLED/FastLED/milestones/4","html_url":"https://github.com/FastLED/FastLED/milestones/Future%20backlog","labels_url":"https://api.github.com/repos/FastLED/FastLED/milestones/4/labels","id":573328,"number":4,"title":"Future backlog","description":null,"creator":{"login":"focalintent","id":4370457,"avatar_url":"https://avatars.githubusercontent.com/u/4370457?v=3","gravatar_id":"","url":"https://api.github.com/users/focalintent","html_url":"https://github.com/focalintent","followers_url":"https://api.github.com/users/focalintent/followers","following_url":"https://api.github.com/users/focalintent/following{/other_user}","gists_url":"https://api.github.com/users/focalintent/gists{/gist_id}","starred_url":"https://api.github.com/users/focalintent/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/focalintent/subscriptions","organizations_url":"https://api.github.com/users/focalintent/orgs","repos_url":"https://api.github.com/users/focalintent/repos","events_url":"https://api.github.com/users/focalintent/events{/privacy}","received_events_url":"https://api.github.com/users/focalintent/received_events","type":"User","site_admin":false},"open_issues":8,"closed_issues":13,"state":"open","created_at":"2014-02-18T18:59:26Z","updated_at":"2015-12-08T19:19:19Z","due_on":null,"closed_at":null},"comments":42,"created_at":"2015-01-13T15:36:38Z","updated_at":"2016-01-23T18:59:11Z","closed_at":null,"body":"The ESP8266 is a very inexpensive ($5) wifi-enabled SOC with an Xtensa LX3 CPU core (read: it's NOT ARM, and it's NOT AVR).  It's typically provided pre-flashed with code that makes it act like a Serial-to-Wifi bridge with an AT command set for Arduinos to talk to, but people are starting to realize that they can reflash it with their own code and run applications directly on it.\r\n\r\nhttps://github.com/esp8266/esp8266-wiki/wiki\r\n\r\nhttp://esp8266.net/\r\nhttp://hackaday.com/tag/esp8266/\r\n\r\n\"Peter Scargill\" has been doing a bunch of work on it \r\n  https://plus.google.com/+PeterScargill/posts \r\n  http://scargill.wordpress.com/category/esp8266/\r\nand he's (now) a FastLED user, too:\r\n  http://scargill.wordpress.com/2015/01/13/esp8266-temporary-rgb-solution/\r\n\r\nAnyway, low priority, might be \"fun.\"  I like the zero-overhead LOOP option that the LX3 has. Woo.  (UPDATE: the ESP8266 LX 106Micro core does NOT appear to have been configured with the zero-overhead loop option.  Boo.)\r\n\r\nArchitecture whitepaper: http://users.ece.utexas.edu/~mcdermot/soc/lectures/xtensa.pdf\r\n\r\nXtensa instruction set architecture: http://0x04.net/~mwk/doc/xtensa.pdf\r\n\r\nFull docs for Xtensa LX architecture http://ip.cadence.com/uploads/pdf/xtensalx_overview_handbook.pdf\r\n\r\nBrief specs for the 106Micro core in particular: http://ip.cadence.com/uploads/pdf/106Micro.pdf  (\"The Diamond 106Micro has an iterative, multi-cycle (non-pipelined) 32x32 multiplier\"... meaning that multiplies take more than one cycle?  Note the MULL, MULUH, and MULSH instructions... interesting with regard to scale8?  Though it looks like ESP8266 has only MULL perhaps.  Though it also also MUL16, MUL16U, and MUL16S.)\r\n\r\nHere's the .h file from Espressif that seems to document which options the LX 106Micro core on the ESP8266 was configured with: https://github.com/espressif/esp_iot_rtos_sdk/blob/master/extra_include/xtensa/config/core-isa.h\r\nOf note:\r\n- YES, it has support for the cycle count register CCOUNT\r\n- NO, it has no support for the zero-overhead loop instructions (boo)\r\n- YES it has MUL16 and 'MUL32' (MULL); but no MULUH, no MULSH, no div32 instructions\r\n- YES it has ABS; but no MINMAX or CLAMPS instructions\r\n- NO floating point or vector hardware\r\n\r\nLink to ESP8266 GPIO implementation of digitalWrite (etc) in C from esp8266-Arduino: https://github.com/esp8266/Arduino/blob/esp8266/hardware/esp8266com/esp8266/cores/esp8266/core_esp8266_wiring_digital.c \r\nPeripheral register definitions https://github.com/esp8266/Arduino/blob/esp8266/hardware/esp8266com/esp8266/cores/esp8266/esp8266_peri.h\r\nTiming and delay functions, which appear to call deeper Esplora library functions? https://github.com/esp8266/Arduino/blob/esp8266/hardware/esp8266com/esp8266/cores/esp8266/core_esp8266_wiring.c\r\n\r\nESP01 variation pins file (url could be better?) https://github.com/esp8266/Arduino/blob/fbb207cf7a01ac6905cbb6205b7bde4dc650677f/hardware/esp8266com/esp8266/variants/esp01/pins_arduino.h\r\n\r\nNotes and code on bitbanging GPIO SPI https://github.com/esp8266/Arduino/issues/33\r\nEarlier notes on faster GPIO for bitbanging http://nerdralph.blogspot.com/2015/04/a-4mbps-shiftout-for-esp8266arduino.html\r\n\r\nMore detailed explanation of ESP8266 GPIO options http://www.esp8266.com/wiki/doku.php?id=esp8266_gpio_registers\r\n\r\nNote about cycle counting register and interrupt disable-ing (references \"Neopixels\") https://github.com/esp8266/Arduino/issues/182"},"comment":{"url":"https://api.github.com/repos/FastLED/FastLED/issues/comments/174212483","html_url":"https://github.com/FastLED/FastLED/issues/119#issuecomment-174212483","issue_url":"https://api.github.com/repos/FastLED/FastLED/issues/119","id":174212483,"user":{"login":"cyberreefguru","id":949005,"avatar_url":"https://avatars.githubusercontent.com/u/949005?v=3","gravatar_id":"","url":"https://api.github.com/users/cyberreefguru","html_url":"https://github.com/cyberreefguru","followers_url":"https://api.github.com/users/cyberreefguru/followers","following_url":"https://api.github.com/users/cyberreefguru/following{/other_user}","gists_url":"https://api.github.com/users/cyberreefguru/gists{/gist_id}","starred_url":"https://api.github.com/users/cyberreefguru/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cyberreefguru/subscriptions","organizations_url":"https://api.github.com/users/cyberreefguru/orgs","repos_url":"https://api.github.com/users/cyberreefguru/repos","events_url":"https://api.github.com/users/cyberreefguru/events{/privacy}","received_events_url":"https://api.github.com/users/cyberreefguru/received_events","type":"User","site_admin":false},"created_at":"2016-01-23T18:59:11Z","updated_at":"2016-01-23T18:59:11Z","body":"@m0bygit what controller did you use to initialize FastLED with?  NEOPIXEL and WS2812 are not working for me.  In the interest of full disclosure, I'm compiling in Eclipse using the native sdk not Sming.\r\n\r\n-Tom"}}