タグ別アーカイブ: 電子工作

Graceで生成したソースコードをCCSで使うには (3)

前回 Graceで自動生成したソースを、CCSに取り込んでビルド、LaunchPadに書き込んで実行までをやってみる。
なお、ここで使っている CCS は現時点で最新の v7.4.0である。

まずCCSを起動する。Project → New CCS Project で新しいプロジェクトを作る。

New CCS Projectのダイアログで、使用するデバイス、プロジェクト名、プロジェクトのテンプレートを選択する。
プロジェクト名は G2452-GraceSA-Blink-Timer01 とした。テンプレートは Empty Project (with main.c) にしておく。

続きを読む

Graceで生成したソースコードをCCSで使うには (2)

前回 書いた手順で、Graceでコード生成 → CCSでビルド → LauncPadでLED点滅 (Lチカ)まで、以下、実際にやってみる。

仕様:

  • LaunchPad Value Line (MSP-EXP430G2)を利用
  • マイコンはMSP430G2452IN20を選択
  • CPUクロックは16MHzに設定
  • ポート P1.0 のLED を、正確に500msでON/OFFさせる
  • 500msを作るために32.768KHzの水晶振動子を外付けし、LED点滅タイミングのクロック源とする
  • タイマー割込みを使用する

まず Graceスタンドアロン版 を起動する。

続きを読む

Graceで生成したソースコードをCCSで使うには (1)

(前回の続き)

Graceスタンドアロン版で生成したソースコードを、CCSで使うには、若干の編集作業が必要になる。以下のサイトの記事が参考になる:
CCSv7 Grace Migration

このページの解説は、GraceがCCSのプラグイン方式だった頃に作成したプロジェクトを、最新の CCS v7.x などに持ち込む際の移植の手順を説明しているのだが、この手順が、スタンドアロン版のGraceの出力をCCSに持ってくる際にもヒントになる。

手順としては、だいたい以下のようになる:

  • (step-1) Grace側で使うマイコン・使う内蔵周辺を設定し、コード生成させる。
  • (step-2) CCS側で、新しい空のプロジェクトを作る。 C言語で main()があるだけのプロジェクトでいい。
  • (step-3) (step-1)で生成したコード一式を、CCSのプロジェクトの中へコピーする。
    ただし、CSL_init.c は不要なので持ってこない。
  • (step-4) Grace.h をCCSのプロジェクトにコピーする。
    main.cソースの中で Grace.hをインクルードしている行を、参照できるように「#include “grace.h”」のように修正する。
    main()の中の先頭で、一回 「Grace_init()」を呼ぶようにする。
  • (step-5) CCSでビルドする。

(続く)

20ピンのMSP430マイコンを楽に使おう

MSP430が好きだ。
PICやAVRマイコンよりは人気も知名度も低そうだし、秋葉原で購入できる品種は限られているが、自分が便利に使えれば人気は関係ないし、通販を使えば豊富な品種が購入できる。

書き込みツールは、1万いくらするJTAGエミュレータではなく、Launchpad MSP-EXP430G2 から、Spi-Bi-Wire の線を引き出して使えば足りる。 解説「MSP430 Launchpadを書き込み器に流用する」を以前書いた。

20ピンDIP品のMSP430G2452、MSP430G2553 と、同チップのLaunchPadならば、秋月電子通商で安定して入手できる。

秋月電子で取り扱っているMSP430関連製品

MSP430マイコンで、Cでプログラムを書くには、以下のような、何通りかの流儀がある:
(1) ベアメタルで書く
(2) DriverLibを利用する
(3) Graceを利用する
(4) Energiaを利用する

# TIの日本語のサイトにも、「コーディングスタイルの選択」という解説ページがある。

自分にとって初めての品種のマイコンを使う時、プログラミングの課題は、内蔵されているA/DやらUARTやらI2Cなどの、豊富な周辺(ペリフェラル) I/O機能を、いかに楽に使いこなせるかにかかってると思う。

先に(4)のEnergiaに触れると、これは ArduinoのMSP430版みたいなもので、各種I/Oにも簡単にアクセスできる関数類が用意されている。よくできているのだが、Arduino同様、デバッグが弱い。ブレークポイントを張ったり、止めて変数の値を見たりはできない。

Code Composer Studio (CCS) を使う場合、まず、自分で1から周辺I/Oの仕様・機能をデータシートを読んで理解し操作する、(1)の流儀がある。(こういうのを「ベアメタルで」と呼ぶらしい) TIのサイトに各種I/Oを動かすサンプルコードが、MSP430の品種毎に公開されているので、コピペして使えば大体動く。ただ、サンプルにない使い方をしたい場合は、自分で頑張る必要があり、悩むケースもある。

(2)のDriverLib、これはTIが用意したライブラリで、CCSでプロジェクトを新規作成する時、この選択肢がでる品種に限り、利用する事ができる。Cの関数の形で各種APIが用意されていて、ドキュメントも揃っている。
ただし、MSP430FR4133とか、FR5739 などの、仕様的に大きいチップでのみサポートされているようだ。

20ピンの品種である MSP430G2553 では DriverLibは用意されていない。
ではベアメタルでやるしかないのか?
ここで強力な助っ人が、(3)のGraceだ。

(続く)

ヘッダーのメーター付き基板

「ヘッダーの写真のメーターの付いた基板は何?」というご質問をツイッターの方で尋ねられましたので、資料を貼っておきます。
社内の勉強会で回路図を読もうという話をした時に、ロジックICの説明をするために作って、みんなに触ってもらった物です。
ロジックIC、LEDと消費電流のデモボード(PDF)

入力がHigh、Lowのとき、ロジックICの消費電流は大変小さく、メーターはほとんど触れませんが、入力ピンをオープンにすると、途端に針が振れます。ひょろりの外へ伸ばしてある青い電線に手を近づけると、消費電流が増減するのが分かります。
(これを応用するとテルミンが作れるかも?)

このデモ基板を作ったのは2009年の秋頃だったりするけど、針式のメーターが秋葉原でもなかなか売って無くて探し回った。結局 買えたのは川崎駅近くのサトー電気さんだったかな。
もう日本製のメーターは無くなってきた代わりに、その後は台湾製や中国製が増えたのか、最近は千石の一階で見たし、秋月にもあるようです。

新しい aitendo に思う。

秋葉原へ散在に行く。

aitendoの店舗が新しくなってから、初めて行った。
店の位置は遠くなって不便になったが、新しい店内は十分に広く、豊富な品揃えを全て陳列している感じで、嬉しくなってしまう。
新直営店オープン風景

しかし。沢山あるパーツケースのうち、受動部品やスイッチなど、細々としたものの半分くらい? は、引き出しにただ ジャラッと部品が入れてあるだけで、型番や、何個で何円か、などが書かれた札も何もない状態。部品の現物を見て、これ良さそう、と思っても、これは一体幾らなのか、型番からデータシートを探して確認したいのだが… と思っても調べようがない。
店内には何カ所かに iPadが置いてあって、お客さんに、どうぞ検索に利用して下さいという状態になっていたが、このような状況で型名も分からなず、仕方なく「タクトスイッチ 7.5mm」などと検索してもヒットせず、調べようも無い物も。
恐らくは、足りない部分は今後、整備されていくのだろう。

粗はあるものの、狭かった店舗が倍以上の広さの新店舗になって展開されたのは、やはりaitendoの取扱品目が多く、利用客も増えてきている背景があるのだと思う。

ちょっと複雑な感情がわき上がる。
秋葉原のパーツショップを、高校生の頃から利用して以来、30年以上経つ。
ADOパーツショップや国際ラジオなど、店を閉じた所もあれば、千石電商のように少し店を大きくした所、マルツパーツのような新しい所もできたが、ラジオセンターやラジオデパート、秋月など、昔からずっとある店は多く、そのほとんどは昔と変らない場所で、すごく狭い店舗で、今まで延々と続いている。
秋月は商品管理はキッチリしているけれど、古くから有る店は、パーツ棚の商品がホコリをかぶって汚くなっていたり、今時使うの? 的な、’80年代の部品がそのまま残っているような店もけっこうある。(ラジデパ2階のとある一角の店もそんな感じだが今日行ったら無くなっていた)

aitendoは店員の若い女性が中国圏の人のようだし、取扱品目にも中台メーカー品が多い。

この様子が、そのまま国内と中台アジア圏の電子産業の様子をそのまま写しているように思えるのだ。

秋月の商品には全部コードが振られており、Webで検索でき、価格も明確になっている細やかさがある。しかし店舗は狭く、いつも客で溢れかえっている。
aitendoの商品管理は不十分だが、繁盛しているから店を大きくしちゃえ、と判断した訳だ。 方や、現場は工夫しているがトップのビジネス的判断で店を広げようといった決断はされていないが、もう片方は決断も実行も素早かったと。 これはそのまま、日本企業と中台・新興国企業のビジネスのやり方・慣習そのものではないかと、感じる訳である。

何が言いたいかというと、つまり「秋月、もっと頑張れ」という事である。

MSP430 マイコン温度ロガー ソースコード公開

MSP430G2553と、I2C接続の温度センサ、EEPROMを使用した、温度ロガープログラムのソースを公開します。

本プログラムの実行には、上記 周辺ICの接続された回路と、USB-シリアルなどの PCとの接続手段が必要です。
(回路図は 以前掲載したこれ。KiCad版。)
また、シリアル端末からのコマンドや取り扱い説明など、本来、色々ドキュメントが必要であり、それら無しでは単なる不親切なモノでしかないのですが、追々揃えていくつもりです。

ダウンロードページはこちら

これは、温度ロガー基板を冷凍庫に入れて測定した結果をダンプし、Excelでグラフ化したものです。 -18℃といった温度が記録できています。
リチウムコイン電池、CR2032 は、カタログ上は -30℃まで使用できるようです。

冷凍庫の温度ログ
冷凍庫の温度ログ

KiCad を試す

MSP430の温度ロガー回路、回路図をテキストファイルに罫線で描いていた物を、いいかげん 回路図CAD図面化しようと、とりあえず KiCad を使って入力してみました。

KiCad Screen Shot
KiCad Screen Shot

MSP430 温度ロガー 回路図 (PDF)

KiCad の回路図エディタの使用感ですが、OrCad や LTspice など、Windows上で動く、今まで色々経験してきた回路図エディタと比べると、操作性にクセがあって直感的になじめない感じ…というのが第一印象です。 慣れてくれば戸惑いは減るかも知れませんが。
DesignSpark もフリーで使えるので、試してみようと思います。

まだ、とりあえず入力してみただけなので、基板化を意識した入力になっていません。ゆくゆくは発注して作ってみたい所ですが、それには適当に選んでいた部品を、部品種も正確に選ぶ・・・例えば抵抗ひとつにしても、リード型かチップの1608か、等が必要になると思います。

MSP430 XCAP設定を動作中に切り替え可能か?

製作中の温度ロガーですが、内蔵時計 (RTC: Real Time Clock) をプログラムで実現しています。WDT (Watch Dog Timer)で、1秒毎のインターバル割り込みでカウントアップさせ、すぐさまLPM3モードに移行させる事で、コイン電池(CR2032)での長期間動作が可能になっています。 この時計、遅れ/進みはあります。
MSP430は、32K水晶の負荷容量をチップに内蔵しています。またその容量値をレジスタ設定で4種類に可変出来ます。
5pFの設定にしたら、一日あたり5秒ほど遅れる時計になりました。そこで、1pFに設定を変えた所、今度は一日5秒位進む時計になりました。

さて、アイデアですが、この状況で、例えば毎日 12時間だけ5pFに設定し、次に12時間 1pF設定にすれば、遅れ・進みは相殺されて、トータルとしては見かけの時計精度を上げられるのではないでしょうか?

水晶発振回路の負荷容量は、一般的に発振余裕度を考慮して、回路とのマッチングを見た上で決定します。コロコロ変えるなどとんでもない。と、教科書的な答えとしてはそうです。しかし、趣味の電子工作ならば、試してみても面白いのではないでしょうか。

この疑問、TI の e2e コミュニティの英語の方で質問しています。
Can I change XCAP setting while running MCU ?