GR-SAKURA
GR-KURUMI
GR-COTTON
GR-CITRUS
GR-PEACH
GR-KAEDE
GR-ADZUKI
GR-LYCHEE
GR-ROSE
GR-MANGO(*)
SNShield
Web Compiler
IDE for GR
TOPPERS関連
女子美コラボ
その他
※プロデューサミーティング中
作り方使い方資料
イベント関連
作品記事
体験記事
ライブラリ
ツール
その他・過去ファイル
すっかり報告を忘れていましたが、SPI.transfer16()が使えなかったので実装しました。(SPIMemoryライブラリで使われていました)
0.91ベースです。
https://gist.github.com/YuuichiAkagawa/30c9863f47a7b7190c0f00fc9efdd176
$ diff -up SPI.h.orig SPI.h --- SPI.h.orig 2019-02-26 13:17:06.000000000 +0900 +++ SPI.h 2019-04-13 10:19:15.795784900 +0900 @@ -311,10 +311,11 @@ public: return (byte)RSPI1.SPDR.LONG; #endif //__RX600__ } -#ifndef __RX600__ + inline static uint16_t transfer16(uint16_t data) { union { uint16_t val; struct { uint8_t lsb; uint8_t msb; }; } in, out; in.val = data; +#ifndef __RX600__ if (!(SPCR & _BV(DORD))) { SPDR = in.msb; asm volatile("nop"); // See transfer(uint8_t) function @@ -334,8 +335,22 @@ public: while (!(SPSR & _BV(SPIF))) ; out.msb = SPDR; } +#else + //Add 2019.4.13 Yuuichi AKagawa + //MSB first? + if(RSPI1.SPCMD0.BIT.LSBF == 0) { + //MSB first transfer + out.msb = transfer(in.msb); + out.lsb = transfer(in.lsb); + }else{ + //LSB first transfer + out.lsb = transfer(in.lsb); + out.msb = transfer(in.msb); + } +#endif //__RX600__ return out.val; } +#ifndef __RX600__ inline static void transfer(void *buf, size_t count) { if (count == 0) return; uint8_t *p = (uint8_t *)buf;