まごころせいじつ堂

浜町庄金 研究開発  マイコンで遊んでばっかりで

Adafruit 1.8" TFT ShieldをLeonardoで使う(SoftSPI)

※サンプルスケッチをしばらく実行しているとハングします※
→解決 microSDカードのせい http://blog.livedoor.jp/hardyboy/archives/7270159.html

 TFTシールドの続き。Arduino UNOではそのまま動くがLeonardoでは動かない。シールドの端子がハードウェアSPIに決め打ちになっているせい。これをソフトウェアSPIでやった。

Adafruit 1.8" 18-bit Color TFT Shield w/microSD and Joystick

シールドでの端子は以下の様になっている。
#define sclk 13
#define mosi 11
#define cs   10
#define dc   8
#define rst  0
#define sd_cs 4
ジョイスティックはアナログポートA3。


さて、以下のように書くとエラーになってしまう。TFT.hとTFT.cppはAdafruit_ST7735.hを呼び出しているが、ソフトウェアSPIを呼び出す5引数の部分の記述がないから。
TFT screen = TFT(TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST);
以下に差し替え用のTFT.hとTFT.cpp、画面に線を引くサンプルを作った。

https://gist.github.com/houmei/1ec877f60f20c9d45a6e

 ソフトによるSPIは遅そうなので描画時間を測定した。線1本を引く時間はこのような差があった。

 Arduino UNO / ハードウェアSPI 8.65ms
Arduino Leonardo / ソフトウェアSPI 39.5ms 

2014SPIline 

追記:サンプルのスケッチ、Leonardo用はSerialコンソールを開いてないと先に進みません
ー以下解決ー
追記2:Arduino IDE1.5.6-r2にてMEGA2560互換機(Sinesmart)、Arduino DueはソフトSPIにて動作。
ただし両方共しばらく経つとハングする。(Leonardoも)

 ハングするとこうなる。Arduino Leonardoで4分46秒後に発生。
 Arduino UNO / ハードウェアによるSPIでも約1分で発生し、再起動するような挙動。TFTライブラリ?
2014softTFThang
 

Adafruit 1.8" TFT Shieldを標準のライブラリで使う

 以前トライしたAdafruit 1.8" TFT Shield、Arduino1.0.5や1.5.6-r2では標準のライブラリとしてあらかじめ入っている。

前回の実験はこれ:Adafruit 1.8インチTFTシールド

Adafruit 1.8インチTFTシールド(スイッチサイエンス)
Adafruit 1.8" 18-bit Color TFT Shield w/microSD and Joystick

サンプルスケッチを開くと今後はTFT.hだけをincludeすれば良いらしい。arduino.ccでTFTライブラリの解説を見ると5個の引数もOKなのだが、やってみるとエラーとなった。
TFTLibrary > TFT

これは TFT.h が
#include "utility/Adafruit_GFX.h"
#include "utility/Adafruit_ST7735.h"
とラップしているのだが、その下で
class TFT : public Adafruit_ST7735 {
public:
  TFT(uint8_t CS, uint8_t RS, uint8_t RST);

  void begin();  
}; 
と3引数だけを宣言しているのが原因と思われる。この中に

TFT(uint8_t CS, uint8_t RS, uint8_t SID, uint8_t SCLK, uint8_t RST); 

を追加すればエラーはなくなる。

 さて、標準のライブラリで何か表示させようにもチュートリアルはTFTモジュールのブレイクアウト基板とシールドの説明が一緒になっているのでややわかりにくい。
1.8" TFT Display Breakout and Shield

シールドでの端子は以下の様になっている。
#define sclk 13
#define mosi 11
#define cs   10
#define dc   8
#define rst  0
#define sd_cs 4

ジョイスティックはアナログポートA3。

 サンプルスケッチもシールド用にはそのまま使えないので何かデモはないかと探したら、互換シールドを作っている所にあった。
Arduino Colour TFT Shield
 が、なぜかジョイスティックがアナログポートA0でポジションの設定も全然互換でないので、ちょっといじった。スイッチのポジションは面倒なので正しく合わせてありません。
https://gist.github.com/houmei/621481ad3260b088a7eb

2014TFTshield

Arduino UNO / Crowduino(5V/3.3V)で動作確認。
いきなりArduino Dueや86Duino(これにも互換ライブラリがある)でやろうとしてうまく行かなかったのでArduino UNOで実験。リファレンス用の板大事。

追記:
Arduino Dueではダメだった。ハードSPIがUNOと違う&任意端子で指定しても動かず。arduinoのフォーラムでも動作例なし。
Intel Galileoではどうかとやってみたが、TFT.hが呼び出すAVR固有のヘッダがないのでコンパイルエラー。 

86DuinoのGPIO速度

 Intel GalileoのGPIOスイッチング速度は約200Hzと遅かった。86Duinoはどうか。
GalileoのGPIOは遅い

 pin0〜pin19の出力を10101010..と変化させるスケッチを書き、86Duinoの動作周波数200MHz,300MHz,400MHzで観測した。

2014GPIO86Duino

 このようにおおよそ5μsで変化している。200KHzくらい。 結果は以下のとおり。

pin 200MHz 300MHz 400MHz
#1 6.124us 5.708us 6.758us
#2 5.542us 5.082us 6.082us
#3 6.124us 5.708us 6.758us
#4 5.542us 5.082us 6.082us
#5 6.124us 5.708us 6.758us
#6 6.124us 5.708us 6.758us
#7 5.542us 5.082us 6.082us
#8 5.542us 5.082us 6.082us
#9 6.124us 5.708us 6.758us
#10 6.124us 5.708us 6.758us
#11 6.124us 5.708us 6.758us
#12 5.542us 5.082us 6.082us
#13 6.124us 5.708us 6.758us
#14 6.124us 5.708us 6.758us
#15 6.124us 5.708us 6.758us
#16 6.124us 5.708us 6.758us
#17 6.124us 5.708us 6.758us
#18 6.124us 5.708us 6.758us
#19 6.124us 5.708us 6.758us

 pin2,4,7,8,12が他のピンよりも速い。回路図を確認したら、これらはP4 GPIO40〜47に接続されている。400MHzでの速度が300,200MHzよりも遅いのは不明。

http://www.86duino.com/wp-content/uploads/2013/08/DM222_SCH.pdf 


 86Duinoの400MHz設定は今のところ「裏ワザ」だけど、モジュールSOM-128-EX自体は400MHz動作を保証している。

http://blog.livedoor.jp/hardyboy/archives/7227219.html#comments 

 

mbedとLPC1114のメモ


mbed & LPC1114(DSP空挺団)

110円のARM Cortex-M0(LPC1114)で遊ぶ(たけおか ぼちぼち日記)

mbed LPC1114でLチカしてみた(しなぷすのハード製作記)

トラ技ARMライタをmbedとして使用する

トラ技ARMライタを mbed interface にする(LPC11U35編)

mbed LPC1114FN28でのシリアル出力について

mbed LPC1114FN28(スイッチサイエンス)



 

COSMAC CDP1802メモ


COSMAC(IC Collection)

Rev G 1802 "Membership Card" (prelim)

CHIP8.com

CHIP-8(Wikipedia)




 

86Duino BIOS/Bootloaderのアップデートと動作クロックの切り替え

 作業メモなので以下に書いてある通りのことです。

 SysImageを書き込むmicroSDカードを用意。これはアップデートと動作クロックの切り替えの時だけ使うのでとっとかなくてもいい。書き込みはMacOSXで行った。
86Duino SysImage Installation (Mac OS X) 

今回ダウンロードしたのは86Duino_SysImage_20140409_macosx.zip 。これを展開して86duino.imgを得る。

 取り付けたSDカードを確認。/dev/disk1s1 。
mbp15-2:~ takesita$ df
Filesystem    512-blocks       Used Available Capacity   iused    ifree %iused  Mounted on
/dev/disk0s2  1463469952 1106607296 356350656    76% 138389910 44543832   76%   /
devfs                379        379         0   100%       656        0  100%   /dev
map -hosts             0          0         0   100%         0        0  100%   /net
map auto_home          0          0         0   100%         0        0  100%   /home
/dev/disk1s1    15507456       2880  15504576     1%         0        0  100%   /Volumes/NO NAME

 ディスクユーティリティーでアンマウント。
mbp15-2:~ takesita$ diskutil umount /dev/disk1s1

Volume NO NAME on disk1s1 unmounted

 ddでコピー。sudoが必要。書き込み先を間違うとMacOSXをぶっ壊す。10分くらい待つ。
mbp15-2:~ takesita$ ls Downloads/86duino.img

Downloads/86duino.img
mbp15-2:~ takesita$ dd of=/dev/disk1 if=Downloads/86duino.img bs=1m
dd: /dev/disk1: Permission denied
mbp15-2:~ takesita$ sudo dd of=/dev/disk1 if=Downloads/86duino.img bs=1m
Password:
972+0 records in
972+0 records out
1019215872 bytes transferred in 670.180675 secs (1520808 bytes/sec)

 確認。
mbp15-2:~ takesita$ df

Filesystem    512-blocks       Used Available Capacity   iused    ifree %iused  Mounted on
/dev/disk0s2  1463469952 1106825280 356132672    76% 138417158 44516584   76%   /
devfs                379        379         0   100%       656        0  100%   /dev
map -hosts             0          0         0   100%         0        0  100%   /net
map auto_home          0          0         0   100%         0        0  100%   /home
/dev/disk1s1     1941544     218256   1723288    12%         0        0  100%   /Volumes/FREEDOS2012

 アンマウントして取り外す。
mbp15-2:~ takesita$ umount /dev/disk1s1

umount: unmount(/Volumes/FREEDOS2012): Operation not permitted
mbp15-2:~ takesita$ diskutil umount /dev/disk1s1
Volume FREEDOS2012 on disk1s1 unmounted
mbp15-2:~ takesita$ 

 書き込んだイメージの中身。FreeDOSみたいですね。(一部MacOSXが勝手に書き込むファイルあり)
mbp15-2:FREEDOS2012 takesita$ ls -al
total 35432
drwxrwxrwx@ 1 takesita  staff    16384  4 26 01:51 .
drwxrwxrwt@ 8 root      admin      272  4 26 01:51 ..
drwxrwxrwx  1 takesita  staff     4096  4  9 11:32 .Spotlight-V100
drwxrwxrwx@ 1 takesita  staff     4096  4  9 11:32 .Trashes
-rwxrwxrwx  1 takesita  staff     4096  4  9 11:32 ._.Trashes
drwxrwxrwx  1 takesita  staff     4096  4 26 01:51 .fseventsd
-rwxrwxrwx  1 takesita  staff    61922  9 11  2013 ANYBIOS.EXE
-rwxrwxrwx  1 takesita  staff      266 12 24 23:18 AUTOEXEC.BAT
-rwxrwxrwx  1 takesita  staff      512 12 23 13:44 BOOTSECT.BIN
-rwxrwxrwx  1 takesita  staff    66945  8 28  2006 COMMAND.COM
-rwxrwxrwx  1 takesita  staff    87132 12  3 18:09 EERESET.exe
-rwxrwxrwx  1 takesita  staff      293 12 24 18:29 FDCONFIG.SYS
drwxrwxrwx  1 takesita  staff     4096 12 23 13:32 FDOS
-rwxrwxrwx  1 takesita  staff    45344  6 21  2011 KERNEL.SYS
drwxrwxrwx  1 takesita  staff     4096 12 23 00:25 Recycled
drwxrwxrwx  1 takesita  staff     4096 12 23 15:43 System Volume Information
-rwxrwxrwx  1 takesita  staff  8388608  8  7  2008 _86DUINO.BIN
-rwxrwxrwx  1 takesita  staff   108708  4  9 11:24 _86duino.exe
-rwxrwxrwx  1 takesita  staff  8388608  8  7  2008 _EduCake.BIN
-rwxrwxrwx  1 takesita  staff      293 12 24 18:31 _afdcon.sys
-rwxrwxrwx  1 takesita  staff      266 12 24 23:18 _autoexe.bat
-rwxrwxrwx  1 takesita  staff        9 12 18 17:40 _b86ver.v86
-rwxrwxrwx  1 takesita  staff       13 12 24 18:57 _beduver.v86
-rwxrwxrwx  1 takesita  staff       10 12 16 18:33 _blver.v86
-rwxrwxrwx  1 takesita  staff   262144 12 16 20:06 _core86.rom
-rwxrwxrwx  1 takesita  staff   262144 12 16 20:06 _coreedu.rom
-rwxrwxrwx  1 takesita  staff   351588 12 23 23:39 _v86boot.exe
-rwxrwxrwx  1 takesita  staff    13504 10 22  2000 cwsdpmi.exe
drwxrwxrwx  1 takesita  staff     4096 12 27 01:32 dpmi
drwxrwxrwx  1 takesita  staff     4096 12 27 01:32 net
mbp15-2:FREEDOS2012 takesita$ 
 これをmicroSDカードスロットに挿入し、microUSBケーブルを接続して電源を入れるとオレンジ色のLEDが・・・ー ーと点滅する。まずはこれでOK。
201486duinoSD


 次にファームウェアアップデートや動作クロックの変更方法。86Duino IDEでシリアルコンソールを開く。すでに86Duino Coding 103が出ていた。MacOSX Mavericks以降の対応だが、10.8.5でも起動した(保証はないよ)。

https://github.com/roboard/86Duino

86Duino SysImage User Guide

+---------------------------------+
 |    86Duino Flash Update Tool    |
 +---------------------------------+

[MAIN MENU]
    1. Show main menu. Please send 'L'
    2. Update 86Duino bootloader. Please send 'B'
    3. Reboot 86Duino. Please send 'R'
    4. **Danger: update 86Duino BIOS. Please send 'D'
    5. **Danger: update 86Duino system. Please send 'S'
    6. Set 86Duino CPU clock. Please send 'A'
 今回、BootloaderのバージョンはHehuan 1.0、BIOSはGuava 0.9と変わらなかったのでアップデートしなかった。

 動作クロックの変更はAを押す。200MHzか300MHzに切り替えられる。

[SELECT CPU CLOCK]
    1. 300MHz. Please send '1'
    2. 200MHz. Please send '2'


[SET CPU CLOCK]
The tool will set 86Duino CPU from 300MHz to 300MHz, continue? (y/n) y
Send 'y' to start. (y/n) y
Setting complete.
Now, please close "Serial Monitor" window and then press RESET button to reboot 86Duino.
 リセットボタンを押せば設定が反映される。

 

86Duino ZEROの味見

86Duino ZERO

 Galileoとは別のx86によるArduino互換機、86Duino。スイッチサイエンスで扱っている。86Duino ZEROを買った。

86Duino ZERO(スイッチサイエンス)

 86Duino IDEはWindows/Linux/MacOSX用がある。最新版 Coding102 をWindows7(64bit)で使ってみた。シリアル通信用のドライバのインストールなどは省略。

 Vortex86EXのモジュール。温度は測っていないが割と熱くなる。
201486DUINO1

 
 RTCのバッテリバックアップが見える。
201486DUINO2
 

 LチカではなんなのでFizzBuzzやってみた。
ソースは以下から Galileo向けの初期化をコメントアウトしてください(手抜き)。
https://gist.github.com/houmei/8505883

このようなボードが出たときいつも気にするのは5Vが扱えるかどうかだけど、Vortex86EXはI/Oは5Vトレラント。
http://www.86duino.com/wp-content/uploads/2013/11/Vortex86EX_A9123_V14_86duino.pdf

201486Duino4



 LCDの表示とアナログ入力を確認。I/Oが直接出ているのでGalileoの様に極端に遅いということはない。

 これは取り付けたシールドと86Duino ZERO本体の隙間を撮影したもの。接近しているのでシールドによってはショートしてしまうかもしれない。

201486DUINO3



 まず、本体のファームウェアアップデートなどせずにArduino互換として使ってみた。Galileoと違いシールドの互換性は高そう。また、PCに接続して転送するときも認識したかどうか確認する必要もなく、開発時のストレスを感じない。


XBee WiFiの設定

 XBee WiFi、とりあえず動作確認できた。

XBee RF モジュール[Digi]

 設定はMacOSX用のXCTU Softwareで行った。起動時に色々読み込むせいか少し時間がかかる。XBee WiFiはUSBドングル経由でMacに接続する。これはFT232RLでシリアルをUSBに変換するものなので、FT232RLのドライバがあらかじめ必要。
XBeeエクスプローラUSBドングル[switchscience]

2014xbeewifi

 XCTUの左上、モジュールに虫眼鏡がのっているようなアイコンをクリックすると、指定された設定でモジュールを探してくれる。が、通常のXBeeではうまくいくのにXBee WiFiは見つけてくれなかった。モジュールに+がのっているようなアイコンをクリックすると、直接指定したポートに接続されているモジュールを探してくれるようで、抜き差ししたりして認識してくれた。リセットボタン付のドングルがいいかもしれない。

 XCTUで最初に[Active Scan]をクリックすると、今飛び交っている電波を拾ってくれる。インフラストラクチャモード、TCP、接続したネットワークのDHCPサーバから割り当てられたIPアドレスが設定されていればOK。当初、IP ProtcolがUDPになっていたためうまく通信できずハマった。(pingは応答する)

xctu

 ポート9750(Destination port/Source portで指定されている0x2616)がXBee WiFiのシリアルにそのまま送受信できるので、XCTUを閉じてXBee WiFiのUSBドングルに割り当てられているシリアルポートを開き、別のマシン(かターミナル)で
telnet 192.168.0.115 9750
とやると入力した文字が表示できる。
 
参考:
MacOS X版X-CTU
XBee Wi-Fi 接続の設定までやってみた
XBee WiFiでPCとTCPなおしゃべりをしてみた
 

メモ:20140320


OPアンプ大全 PDFダウンロード[ANALOG DEVICES]

TI LaunchPad

Arduino
Arduino UNO R3 + dfu-programmerって、みんなどうしてるの?
Arduino + USBホストシールドの実験。[robo8080のブログ]
Interfacing Arduino to USB GPRS modem[Circuits@home]

Grove RTC[seeed wiki]
DS1307 64 x 8 Serial Real-Time Clock(PDF)

Intel Galileo — I/Oエキスパンダで液晶[痛い日記]

895円の超小型Ardunoクローン DigiSparkを買った[橋本商会]
Getting Started with your Digispark
OLIMEXINO-85-ASM

VGA端子の同期信号出力タイミング規定[日曜技術者のメモ]

Fritzingでパーツ作り[DENSIKIT.COM]

PIC
INI-M4 for STM32

I2Cの接続構成とプルアップ抵抗[電子工作の実験室]


LPC810
LPC810を使っての感想他[SE組込人]
フルカラーシリアルLED簡単に制御できるコントローラ開発[SE組込人]
NXPの小ピンARMの試食[ELM]



FPGA

FPGAでコインを掘る[SandBox(旧「サザエ2号」)]
CudaMiner / sha256.cu


 

Stellaris LaunchPadのArduinoライクな開発環境Energia

 Hack a dayの記事でLaunchPadのArduinoライクな開発環境Energiaがアップデートされたことを知る。
New Version of Energia Supports Wolverine and Connected

Energia

 手持ちのStellaris LaunchPadで確認してみる。Windows7(64bit)に0101E0011(2013/12/17)版をインストールした。
 ドライバはSetup Energia on Windows からを選択。デスクトップなどに展開しておく。ボードをUSBで接続すると不明なデバイスが出るので、デバイスマネージャでドライバの再インストールを展開したフォルダを参照して行う。Stellaris In-Circuit Debug Interface,Stellaris ICDI DFU Device,Stellaris ICDI JTAG/SWD Interfaceの3つ。
 Energiaを立ち上げ、[ツール]→[マイコンボード]→LaunchPad(Stellaris) w/ Im4f120(80MHz)を選択。シリアルポートも接続したボードのものを選択。

 Blinkスケッチを改変して三色LEDを点滅させた。
https://gist.github.com/houmei/9530333


2014stellarisLaunhpad








 
記事検索
プロフィール

hardyboy

カテゴリ別アーカイブ
月別アーカイブ
QRコード
QRコード
  • ライブドアブログ