create every day - 福野泰介の一日一創

マイコンLPC1114の外部クリスタルの自動判別方法

2015/07/26 23:55:00
#lpc1114 #IchigoJam #maker 

外部クリスタルが標準搭載となったIchigoJam UIchigoJamは、I2Cサーボにも対応し、日常をオートメーション化する組み込みガジェット開発用にも便利に使いやすくなるようバージョンアップ中です。

CPU(NXP社LPC1114FN28)がICソケットで抜き差し可能になりました。 大きめのマイナスドライバーを隙間に差し込むと比較的簡単に取り外すことができます。 ファイル番号0に、プログラムを保存しておくと、BTNピンをGND接続で起動時に自動的に読み込まれ実行します。

その際、IchigoJam U用に書き込まれた外部クリスタル12MHz対応版の場合、クリスタルも別途付けておく必要がありましたが、 現在開発中の1.0.2β8では、外部クリスタルが付いてない時に、自動的に内蔵発振器を使って動作するように改良しました。 (開発中のファームウェアは、IchigoJam-FANのファイルからダウンロードできます)

IchigoJam-FANへ投稿いただいたWDT(ウォッチドッグタイマー)を使った方法を実装しました。
WDTとは、マイコンが自分自身がちゃんと動いていることを定期的に確認したり、自動的に再起動したりしてくれる便利な機能です。怪しいことが起きたら吠えて知らせてくれる、まさに番犬(=ウォッチドッグ)!

1. WDTによって再起動されたのであれば内蔵発振器で動かす

if (LPC_SYSCON->SYSRSTSTAT & (1 << 2)) {
	// IRC
} else {
	// try XTAL
}

2. 通常起動なら、WDTをまず動かす
int freqsel = 1 // 1:0.6MHz - 15:4.6Mhz
int divsel = 64; // 2(fast) - 64(slow)
LPC_SYSCON->SYSAHBCLKCTRL |= (1 << 15); // WDT on
LPC_SYSCON->PDRUNCFG &= ~(1 << 6) // WDT on
LPC_SYSCON->WDTOSCCTRL = (divsel / 2 - 1) | (freqsel << 5); // 1, 64 = 9.3kHz
LPC_SYSCON->WDTCLKDIV = 1;
LPC_SYSCON->WDTCLKSEL = 2; // WDT
LPC_SYSCON->WDTCLKUEN = 0;
LPC_SYSCON->WDTCLKUEN = 1;
LPC_WDT->MOD |= (1 << 0) | (1 << 1); // enable、auto reset
LPC_WDT->MOD &= ~(1 << 2) // clear timeout flg
LPC_WDT->TC = 0xff; // min 0xff
LPC_WDT->FEED = 0xaa;
LPC_WDT->FEED = 0x55;

3. 外部クリスタルに切り替える(外部クリスタルがついてないとWDTが自動的に再起動して1へ)
LPC_SYSCON->SYSPLLCLKSEL = 1; // use XTAL
LPC_SYSCON->SYSPLLCLKUEN = 0;
LPC_SYSCON->SYSPLLCLKUEN = 1;

4. 外部クリスタルでちゃんと動いたら、WDTを止める
LPC_SYSCON->PDRUNCFG |= 1 << 6; // WDT off
LPC_SYSCON->SYSAHBCLKCTRL &= ~(1 << 15) // WDT off

日常とコンピューターがどんどん近づけていきましょう!


(こちら、IchigoJam Uより小型なIchigoJam、クリスタルを挿しても挿さなくても動いて便利!)

4KBの重み。保存件数33%、プログラム領域20%増で望む IchigoJam ver1.0.0

2015/04/16 23:55:00
#IchigoJam #lpc1114 

開発環境として使っているMacBook Airのメモリ(RAM)は4GB、記憶容量(SSD)は250GB。対するIchigoJamは、メモリ(RAM)4KBで100万分の1、記憶容量(Flash)32KBで780万分の1。コンピューターの進化に改めて感動する。

少しずつ改良を続けたIchigoJam、バージョン1.0.0を迎えるにあたって、ユーザーさんの意見(on Facebookグループ IchigoJam-FAN)も踏まえて改良中。いただいた、多くのご要望に応えるべく、懸案だったFlashへの書き込み方式を変更し、うまくいった!


(IchigoJam Flashの使い方が変わりました)

LPC1114FN28は、4KB単位でしか書き換えられないため、後半3スロットを使って3ファイルを書き込み可能としていましたが、2スロットに交互に書き出しする方式に切り替え、保存件数1件増、プログラムに使える1スロット、4KBを確保することに成功しました!

1byteの節約にしのぎを削った今までから思うと、4KB=4096byteは、とても広大な空間!
こどもパソコンIchigoJam バージョン1.0.0のリリース版、ご期待ください!

参考リンク
- こどもパソコンIchigoJam
- IchigoJam - jig.jpサービス

IchigoJamをI2Cで拡張する!IC40コ付きで4千円の技術書が楽しい!

2015/04/07 23:55:00
#maker #IchigoJam #lpc1114 

こどもパソコンIchigoJam、PEEK/POKE/マシン語に続く、上級者向けの拡張です。3芯シリアルでの拡張を検討していましたが、広く普及していてチップも安い、I2C(アイ・スクエア・シー、アイツーシーとも)に対応しました。1980年に誕生したI2C、特許は切れているので誰でも自由に使えます(I2C - Wikipedia)!


温度センサーチップで計測して表示するIchigoJam BASICプログラム


使ったICは、本のオマケで付いてきた温度センサーNXP社製PCT2075D秋月で同じようなものが入手可能です。


マイコンにプラス! シリアル拡張ICサンプルブック(トライアルシリーズ) 2015年 04 月号 [雑誌]: トランジスタ技術 増刊」には、なんと40コのICが付属!シリアル、汎用入出力、多灯LEDコントロール、延長、分岐、アナログ変換、温度、モーター、時計など、サンプルプログラムも付いてこの値段。いいおもちゃすぎます。ただし、変換基板へのハンダづけは表面実装用部品を要求されるので、難易度高め。こういうおもちゃに食いつく子供が増えるときっと世の中もっと楽しい。

LEGOマインドストーム(EV3/NXT)もI2C接続なので、よりコンパクトなロボット作りにも使えるかも!?(Connecting the Arduino and LEGO MINDSTORMS NXTI2C Interfacing Part 4: Controlling Extra Motors (Lego Mindstorms NXT)

IchigoJamにおけるI2C実装は、省メモリ仕様なので対応できない機器もあるかもしれません。IchigoJam-FANにて最新ファームウェアテスト中です!

- こどもパソコンIchigoJam

IchigoJamのマルチメディアボードをユニバーサル基板でつくる

2015/01/31 23:55:00
#IchigoJam #lpc1114 #PanCake 

IchigoJamと同じLPC1114を使ったグラボ、PanCakeに、圧電サウンダーを加えたマルチメディアボードを作ってみました。16色カラーとPSGサウンドというマルチメディア、懐かしい響きです。


(左、IchigoJam 右、PanCake + 圧電サウンダー搭載マルチメディアボード for IchigoJam)

抵抗値がおかしいのか、テレビによってはうまく色が出ないので、改良の余地はありそうですが、L字ピンを使ったスロットはいい感じなので、EEPROMスロットも付けた拡張ボードをプリント基板にしてみるのも良さそうです。

16色でドット絵がかけるので、8x8のスタンプ命令を使って、カラフルなビットマンを歩かせてみました。


IchigoJam BASICのソースコードはこちら。



100行 アニメーション1 (カラーコード参考、PanCakeページ
200行 アニメーション2
300行 Nの値を1桁の16進数表示
400行 Mの値を2桁の16進数表示し、空白を空ける

参考リンク
- BASICプログラミング専用1,500円パソコン IchigoJam
- LPC1114を使ったグラボ PanCake

IchigoJamカラー!サードパーティー製グラボ、PanCake登場!

2015/01/29 23:55:00
#IchigoJam #lpc1114 #PanCake 

すべての子供にプログラミングを!のプログラミング・クラブ・ネットワークの仲間、黒ひげ危機一発やせんせいなどのアプリを手がける株式会社ナチュラルスタイルから、かわいいグラフィックスボード「PanCake」が登場!早速、IchigoJamをかけて試食!

とりあえず、IchigoJam開発のきっかけとなったMSXでのBASICプログラミングでもやったお約束ランダムLINE文!16色カラーです!!解像度は80x45とコンパクト!


シリアル出力で、"line 00 00 10 10 03" などと送信するだけで手軽に使えます!konashiや、他のマイコンからも気軽に使えて楽しめそうです。


「PanCake / PCN プログラミング クラブ ネットワーク」
PanCakeで描いたロゴ、Ichigoのってます!


つくりかた。IchigoJam2台用意し、1台にPanCakeを書き込んで、ビデオ信号用に14.31818MHzのクリスタルを挿し、ブレッドボード、200Ωの抵抗x15、ビデオ端子を使ってPanCake用の電子回路を作ります。残っているもう1台のIchigoJamのGNDとTXDをGNDとRXDにそれぞれ接続します。(400Ω、800Ω、1600Ωを用意しても、もちろんOKですよ!)


IchigoJamのプログラムはこんな感じ。100行-110行が16進数一桁を表示するサブルーチン。200行が16進数二桁を表示するサブルーチン。これを使って、PanCakeへのlineコマンドを送信しています。

16色カラーで好きなグラフィックがかけるstampコマンドもあって、楽しそうです!

1チップパソコンIchigoJamはどのくらい速いのか?ベンチマーク結果

2015/01/26 23:55:00
#IchigoJam #lpc1114 

秋葉原勝山鯖江と未来のエンジニアを育成するワークショップが続きました。

IchigoJamの核になるのは、NXPという会社のLPC1114(正確にはLPC1114FN28/102)という32bit CPU(セントラル・プロセシング・ユニット=中央処理装置)です。最大動作周波数50MHzのところ、12MHz x 4の8MHzで動かしています。

コンピューターは手拍子に合わせるように、プログラムで指定された処理をひとつひとつこなしていきます。周波数とは時間あたりの数のことで、48MHz、1秒間に4800万回の手拍子に合わせて計算してくれる様子を想像してみましょう。

IchigoJamの組み立てが終わったら、早速プログラミングです。コンピューターがいかに速いかを実験してみます。

即座に答がでました!ってこれくらい誰でもできますよね。

速いですね。数を大きくしていくと様子がおかしくなりますが、桁あふれ(オーバーフロー)という現象です。詳しくはまた次の機会にご紹介します。待てない方は検索してみてください。

1から100まで100回計算させてみるとちょっと間があって答がでます。

繰り返す回数を1000回に変えて、時間を測ってみます。TICK()は1/60秒に1進む数を返すコマンドで、CLTでリセットできます。16秒、きっとみなさんが計算するより速いですが、1秒間に4800万回処理できるコンピューターなら1000回の計算は1秒間に4.8万回できる計算なので、一瞬のはずでは?

その秘密はBASICという言語にあります。IchigoJamは、画面を表示したり音を出したり、キーボードからの信号を文字にしながら、BASIC言語でかかれたプログラムをCPUが直接分かる言葉にひとつひとつ照らし合わせながら動かしているから遅いわけです。もしマシン語でプログラムを書けば、一瞬ですよ!


IchigoJamでベンチマークした結果、1万回の計算に164秒かかりました。32年前に発売されたパソコン、MZ-2000で同様のベンチマーク結果は26秒と負けています。ただし、値段は22万円 vs 1,500円と圧勝です!(2015.10.10追記 ver1.1beta6 93秒)

※マシン語について補足:CPUが直接わかる言葉は、足したり引いたりいろいろな処理をする命令を数値で表したものです。この数値のカタマリをマシン語といいます。数値をひとつひとつ調べて書くのは大変なので、アセンブリ言語というマシン語に対応する人間用の言語を使います。アセンブリ言語は国によって言葉が違うように、CPUの種類によって言葉が違い、独特のお作法があって大変です。そこで人間に理解しやすく、各CPUに合わせたアセンブリ言語に自動的に翻訳するC言語などが登場しました。ちなみに、IchigoJam自体はC言語で作っています。

創造は力なり スロットおみくじハードウェアで占う2015年

2015/01/01 23:25:00
#maker #lpc1114 #ced #profile 

A HAPPY NEW YEAR!


(新年メッセージ、スロットおみくじ、レンダ on IchigoDot

2015年のテーマは原点回帰し、創造。
「つなぐ」をテーマに言葉で紡いだ2014年、改めて分かった創造の力。
2012年からの蓄積を元に、育てる創造に注力します。

世界とつながる5つ星オープンデータ活用「オープンデータプラットフォーム
鯖江から世界へ「データシティ鯖江アプリ
成長続くスマホアプリ事業「オタマート」「検索+
創造者を育てる1,500円パソコン「IchigoJam
創造者への入り口、材料費300円で作るゲーム機「IchigoDot
そして、未来が見える「電脳メガネ

役者が揃い、追い風も吹きそうな予感の2015年。
一気に創り続けたいと思います!


鯖江市長、田辺さん(MDS代表、福井高専の先輩)、竹部さん(エル・コミュニティ代表)と!


市長のお孫さんも遊んでくれました


ボタン電池CR2032に対応したオリジナルケース(3Dプリンターで作成)


開発は裏の端子からパソコンにつなぐ、IchigoDot。(ソースはGitHubからどうぞ!

ワンキーゲーム機「IchigoDot」オープンソースハードウェアとして公開!

2014/12/23 23:55:00
#maker #lpc1114 #print3d #IchigoDot 

120円のコンピューターを使ったオリジナルゲーム機づくり、3Dプリンターを使って筐体を創って、ひとまず完成しました。IchigoJamとの連携も視野にいれつつ、命名「IchigoDot」。電池交換に難ありなので、引き続き改良は必要ですが、ひとまずオープンソースハードウェアとして公開しました。(taisukef/IchigoDot / github)


3Dモデリングツールで、部品をまず造って、それが収まるように筐体を創る。失敗しても、印刷しなおせばOKという手軽さがステキ!フタの形状に課題あり。


印刷完了!


前回創った中身を入れます。電池は、単6電池2本。上記回路、RESTと電源を抵抗でつなぐ、プルアップを忘れてます。


動きました!


手への収まりもいい感じ!

電源スイッチはありません。タイトル画面で20秒放置で省電力モード(deep power-down mode)になります。ストラップホールをつけてネックレスにしておくとも良いかもです。どうぞ、いろいろと改造してお楽しみください!

マイコン制御の円状LEDペンダントのレシピ / お手軽オープンソースハードウェア

2014/09/23 23:55:00
#maker #lpc1114 

入手した、黒い基板がかっこいい、円状に並んだ12のLED。いつもの元110円マイコンLPC1114を使って、アクセサリーにして、オープンソースハードウェアとしてGitHubにて公開しました。ぜひオリジナルのアクセサリーづくりにどうぞ!


こちらは完成後、空きスペースにタクトスイッチをあしらったもの。オープンソースハードウェアなので、ソフトもハードも自由に改造、OKです!

◯マイコン制御の円状LEDペンダント レシピ


電子パーツ屋さんaitendoLEDブレークアウト基板 [12LED]、DIPのARMマイコンLPC1114と、L字ピンヘッダ、写ってませんが10ピンソケットと線材をご用意ください。道具は、ハンダゴテ、ニッパー、ストリッパー、ピンセットなどがあると便利です。


裏返してマイコンの足を曲げて、L字ピンをハンダ付け。


マイコンの足とGPIOピンが合わないところは線材を使ってつなぎます。


裏返して、8ピンを10ピンソケットにハンダ付けします。


元に戻して、L字ピンに12LEDをハンダ付けしたらできあがり!


GitHubで公開しているマイコン用のプログラム「circleled / taisukef」をMacやPCから書き込むと、ぐるぐる回り出します。115,200bpsでシリアルで接続して、"'CLED 1\n"と送信などで制御が可能です。IchigoJamとつないで遊ぶこともできます。(書き込み治具


電源を9V電池から取り出した単6電池を使ったペンダント紐をつなげるとコンパクトに仕上がります。ボタン電池でも動きます。


かっこいい発光パターンを創って、Apple Watchに先行して腕時計をオリジナルでつくるのもいいですね!周辺光や、脈拍によって回転速度変えたり、タイマーにしたり、いろいろ夢膨らむシンプルデバイスです。

参考リンク
- マトリックスLEDを使ったアクセサリー
- 自己点滅LEDを使ったアクセサリー
- Androidスマホにつなぐ簡易アクセサリーアナログ回路版

LPC1114+BASICで手軽な組み込み開発 IchigoJam バイナリ版

2014/05/07 23:55:00
#IchigoJam #lpc1114 #maker 

誕生50周年を迎えたBASIC、最新32bitチップで動かすとコンパイルもいらず快適そのもの。こどもパソコンとして創ったIchigoJamですが、ハードウェア制御としても使えそうなので、バイナリとピン配置シール作成用のデータの提供を始めてみました。110円マイコン、NXP社のLPC1114に書き込めば、お手軽フィジカルコンピューティング環境、IchigoJamができあがります。

テレビ、PS/2キーボードがなくても、シリアル入出力でBASICによるプログラミングが可能です。SAVEしたプログラムは、WAKEUPピンをHIGHにしておくことで自動的に起動するので、ロボットなどへの組み込みもOK。制御用にIN/OUT操作にビット操作を加えた、ver0.7.2、詳しくはIchigoJam BASICリファレンスをご参照ください。


ピン配置シート(png)を印刷して切り取り両面テープで貼り付けるとIchigoJamの完成です。

販売したい方のためのライセンスを用意してみました。1台あたり150円です、IchigoJamなので。

IchigoJam 販売ライセンス 10台分 / 1,500円 - SPIKE

Tweet
クリエイティブ・コモンズ・ライセンス
この作品は「Creative Commons — CC BY 4.0」の下に提供されています。
CC BY 福野泰介 - Taisuke Fukuno / @taisukef / high-res profile image