Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/FastLED/FastLED.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Garcia <dgarcia@dgarcia.net>2019-08-12 20:36:36 +0300
committerDaniel Garcia <dgarcia@dgarcia.net>2019-08-12 20:36:36 +0300
commit5e4ca223a5ad16b2e8c647abd3c09cd7d1deaaea (patch)
treeffce57d2e9184fed94ed1ef5ab6e498df26375f7
parentd55fea29265f5915e194ff65e6ece1dde5ebbff9 (diff)
Tweak and fix parallel output - still need to hook it up to the default addLeds setup
-rw-r--r--platforms/arm/mxrt1062/block_clockless_arm_mxrt1062.h21
-rw-r--r--platforms/arm/mxrt1062/clockless_arm_mxrt1062.h4
2 files changed, 9 insertions, 16 deletions
diff --git a/platforms/arm/mxrt1062/block_clockless_arm_mxrt1062.h b/platforms/arm/mxrt1062/block_clockless_arm_mxrt1062.h
index de09087c..3ff8dd2d 100644
--- a/platforms/arm/mxrt1062/block_clockless_arm_mxrt1062.h
+++ b/platforms/arm/mxrt1062/block_clockless_arm_mxrt1062.h
@@ -88,11 +88,8 @@ public:
if(m_bitOffsets[i] > m_nHighBit) { m_nHighBit = m_bitOffsets[i]; }
}
- m_nOutBlocks = (m_nHighBit - m_nLowBit + 8)/8;
+ m_nOutBlocks = (m_nHighBit + 8)/8;
- for(int i = 0; i < m_nActualLanes; i++) {
- m_bitOffsets[i] -= m_nLowBit;
- }
}
@@ -120,12 +117,10 @@ public:
template<int BITS,int PX> __attribute__ ((always_inline)) inline void writeBits(register uint32_t & next_mark, register _outlines & b, PixelController<RGB_ORDER, LANES, __FL_T4_MASK> &pixels) {
_outlines b2;
- switch(m_nOutBlocks) {
- case 3: transpose8x1_noinline(b.bg[3], b2.bg[3]);
- case 2: transpose8x1_noinline(b.bg[2], b2.bg[2]);
- case 1: transpose8x1_noinline(b.bg[1], b2.bg[1]);
- case 0: transpose8x1_noinline(b.bg[0], b2.bg[0]);
- }
+ transpose8x1(b.bg[3], b2.bg[3]);
+ transpose8x1(b.bg[2], b2.bg[2]);
+ transpose8x1(b.bg[1], b2.bg[1]);
+ transpose8x1(b.bg[0], b2.bg[0]);
register uint8_t d = pixels.template getd<PX>(pixels);
register uint8_t scale = pixels.template getscale<PX>(pixels);
@@ -139,8 +134,6 @@ public:
uint32_t out = (b2.bg[3][i] << 24) | (b2.bg[2][i] << 16) | (b2.bg[1][i] << 8) | b2.bg[0][i];
- out <<= m_nLowBit;
-
while((next_mark - ARM_DWT_CYCCNT) > m_offsets[1]);
*FastPin<FIRST_PIN>::cport() = ((~out) & m_nWriteMask);
@@ -170,8 +163,8 @@ public:
cli();
m_offsets[0] = _FASTLED_NS_TO_DWT(T1+T2+T3);
- m_offsets[1] = _FASTLED_NS_TO_DWT(T3);
- m_offsets[2] = _FASTLED_NS_TO_DWT(T2+T3);
+ m_offsets[1] = _FASTLED_NS_TO_DWT(T2+T3);
+ m_offsets[2] = _FASTLED_NS_TO_DWT(T3);
uint32_t wait_off = _FASTLED_NS_TO_DWT((WAIT_TIME-INTERRUPT_THRESHOLD));
uint32_t next_mark = ARM_DWT_CYCCNT + m_offsets[0];
diff --git a/platforms/arm/mxrt1062/clockless_arm_mxrt1062.h b/platforms/arm/mxrt1062/clockless_arm_mxrt1062.h
index d9175f85..468c15dd 100644
--- a/platforms/arm/mxrt1062/clockless_arm_mxrt1062.h
+++ b/platforms/arm/mxrt1062/clockless_arm_mxrt1062.h
@@ -86,8 +86,8 @@ protected:
cli();
off[0] = _FASTLED_NS_TO_DWT(T1+T2+T3);
- off[1] = _FASTLED_NS_TO_DWT(T3);
- off[2] = _FASTLED_NS_TO_DWT(T2+T3);
+ off[1] = _FASTLED_NS_TO_DWT(T2+T3);
+ off[2] = _FASTLED_NS_TO_DWT(T3);
uint32_t wait_off = _FASTLED_NS_TO_DWT((WAIT_TIME-INTERRUPT_THRESHOLD));
uint32_t next_mark = ARM_DWT_CYCCNT + off[0];