diff options
author | Daniel Garcia <dgarcia@dgarcia.net> | 2019-08-12 20:36:36 +0300 |
---|---|---|
committer | Daniel Garcia <dgarcia@dgarcia.net> | 2019-08-12 20:36:36 +0300 |
commit | 5e4ca223a5ad16b2e8c647abd3c09cd7d1deaaea (patch) | |
tree | ffce57d2e9184fed94ed1ef5ab6e498df26375f7 | |
parent | d55fea29265f5915e194ff65e6ece1dde5ebbff9 (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.h | 21 | ||||
-rw-r--r-- | platforms/arm/mxrt1062/clockless_arm_mxrt1062.h | 4 |
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]; |