まごころせいじつ堂

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

マイコン

メモ:PICAXE

 秋月電子に入荷したマイコンPICAXE。BASICで開発できる、マイコン使う時に煩雑なレジスタ類の初期化を意識しないでいいらしい。
 シリアルケーブルによる書き込みを行うが、TxDとRxDの信号レベルが反転しているそうだ。

PICAXE (本家)
PICAXE(ピカクス)を一般的なUSBシリアルで動かす
エレキジャックBASIC No.1 マイコン工作入門/学習に最適なワンチップ・マイコン・システム"PICAXE"(ピカクス)
 
Getting Started Flowcharts or BASIC? Windows, Linux or Mac?
 
PS/2キーボードがつなげて読み込めるらしい。
Home > BASIC Commands > Advanced I/O Interfacing > kbin > 
Home > Circuit Creator > Miscellaneous > PS2 Keyboard > 

メモ:mbed関連

 FRDM-KL25Z買ったけど積んだままなのでせめて各種リンクを

New $12.95 mbed-enabled Freescale board!

FRDM-KL25Z: Freescale Freedom Development Platform for Kinetis KL1x and KL2x MCUs

mbed FRDM KL25Z Getting Started


mbed FRDM KL25Z

mbedを始めましょう!("Let's get started!" in Japnaese)

ちょっと関係あるかもしれない
mbedで初めてのマイコン開発 メモリ・カードを使ったデータの読み書き<1/3>

【MSP430 技術 TIPS】MSP430静電容量式 タッチ・ソフトウェア・ライブラリの紹介

mbedをデバッグアダプタにしてみた(mbed-Link)

 http://mbed.org/cookbook/Networking

メモ:マイコン関係のリンク色々

 ブラウザのタブ整理。主にtwitter経由で知ったものをあとで読むつもりで貯めていたものです。

ArduinoをAVRライタとして使う
Arduino ISPを使う 
FT232Rモジュール利用 AVR TPIライター

Arduinoのライブラリを作るときの参考:
Arduinoの各種ライブラリ  
自作ライブラリの作り方 
 
開発環境:
embedXcode
MPIDE: One IDE to rull them all. (For Arduino and its varients anyway) 
Emuduino Emu(lator) + (Ar)duino Arduinoエミュレータ
ブラウザでArduinoプログラミング 
ino使うとCUIでArduinoをビルドできて便利

Arduinoで.hexファイルを出力する方法について
Issue 493: .hex export option 

I2C関連:
ArduinoでI2C通信をやる際のメモ
I2C block for ArduinoIO simulink package
ストロベリー・リナックスの低電圧I2C液晶をArduinoで使う
I2C液晶のArduinoライブラリ


その他:
V-USB Virtual USB port for AVR

Arduino + イーサネットシールド + LCDでFacebookページの「いいね数カウンター」をつくる
デザイナーがやる、はじめての電子工作(1):暗くなったらArduinoから自動的につぶやくおやすみメッセージ
参考)部屋の明るさをツイッターでつぶやいてみよう!

WIZ820ioをつかってみました

sparkfun OpenLog

AVRとZ80でCP/Mの改良 

Free Online Design Tools from Aspen Labs and Digi-Key Give Engineers an Edge in Online Printed Circuit Board Design 

FONTXメモ

マイコンで漢字表示をしたいと思い、漢字ROMのフォントはないだろうかと色々探したが見つからなかった。古い漢字ROMを搭載したパソコンから吸い出すという手もあるが。

 グラフィックスを扱えるLCDや安いサーマルプリンタで使えそうなDOS/V時代のFONTXについてメモ。

FONTXの使いかた 

グラフィックLCDモジュール 日本語フォント編 

IPAフォントを元としたLXで使える32/24/16ドットフォント

 漢字フォントを内蔵している機器(VFDやサーマルプリンタ)はJISまたはShiftJISで扱っていることが多いようだ。

マイコンとPS/2キーボードを繋ぐあれこれ

PS/2やADB(Appleの古いキーボードI/F)をUSBに変換する。AVR用。
https://github.com/tmk/tmk_keyboard 

Adafruitの新製品。
NEW PRODUCT! E1115 PS/2 Keyboard to TTL Serial Converter 

うう、色々先を越された。

A2 Thermal Printer メモ

低価格の58mmサーマルプリンタ。レシート用紙に印刷する。
ESC/POS Thermal Printer and Mono (or .Net)

Serial Thermal Printer

Adafruitから購入できる。
Mini Thermal Receipt Printer -

Sparkfunにもありますね。
Thermal Printer COM-10438

以下は説明書(pdf)。ところどころ誤記があったので注意。
取扱説明書(Adafruit)

取扱説明書(Sparkfun)
 
 
 実際に使ってみたところ。5Vだとこのくらいの速度。9Vだともっと速い。
ただし、DTS/RTSによるハードフローがないのでグラフィックスの出力が私にはうまくできなかった。XON/XOFFによるソフトフローはあるのだろうか?ということでしばらく放置中。
自在に動かせるようになればとてもおもしろそうなんだけど。

 

A/Dコンバータの勘違い(植木算)とLM35DZを使った場合の誤差

植木算 -Wikipedia

 Arduino(ATmega328や32U4)のADCはAREFで与えられた基準電圧を0〜1023の値で取得できる。何も考えずに分解能10bit、1024で割っていたが本当は1024-1だった。
※追記:なんか考えてたら分解能による限界のような気もしてきましたがいちおうこのままで出しておきます
 
やばい。とある装置は今日持っていったばっかりで手元にないので検算してみる。ツッコミ大歓迎。

※追記 2021.9.5
23.7 ADC Conversion
Result "0x000 represents analog ground, and 0x3FF represents the selected reference voltage minus one"
10年誤解してた。÷1024でいいんだ。ォァー


AREFが1.1V(INTERNAL)、3.3V(EXTERNAL)、5V(EXTERNAL)の場合の1ステップあたりの電圧を計算した。有効数字は6桁で計算。

1.1V ÷ 1024 = 1.07422mV (誤り) ×1000すると1.07422V
1.1V ÷ 1023 = 1.07527mV (正しい) ×1000すると1.07527V
※1023が示す電圧の範囲は、1.07527V〜1.10000V

1.1Vで 1.05mVの差

3.3V ÷ 1024 = 3.22266mV (誤り) ×1000すると3.22266V
3.3V ÷ 1023 = 3.22581mV (正しい) ×1000すると3.22581V
※1023が示す電圧の範囲は、3.22581V〜3.30000V

3.3Vで 3.15mVの差

5.0V ÷ 1024 = 4.88281mV (誤り) ×1000すると4.88281V
5.0V ÷ 1023 = 5.00489mV (正しい) ×1000すると4.88759V
※1023が示す電圧の範囲は、4.88759V〜5.00000V

5.0Vで 4.78mVの差

今回はAREFで3.3Vを使用、LM35DZは1℃あたり10mV。
10〜50℃あたりで使用することを考えると、100mVから500mVを観測することになる。
値が大きいほど誤差は大きくなるので、500mVで考える。

誤ったプログラム 500mV ÷ 3.22266mV = 155.15.. 表示値は156 (切り上げだから)
正しいプログラム 500mV ÷ 3.22851mV = 154.87.. 表示値は155になるはず

 156(誤った値) × 3.22581mV(正しい1ステップあたりの電圧) = 503.226mV
その差 3.226mV → 間違ったプログラムでは50℃付近で約0.3℃高く表示される。

で、いま使ってるセンサLM35DZの誤差は25℃付近で±1.5℃、Typ±0.6℃。グレードが低いのは承知の上で使っているので±2℃程度は気にしない。

ということで室温の範囲内なら問題ないでしょう。

PIC32MX搭載のマイコンボード

PIC32MX搭載のマイコンを調べてみた。国内で買えるものはまだ少ない。

□Pinguino PIC32MX (80/256/32)
PIC32 Pinguino - PIC32MX440F256H dev board - $31.46

・PinguinoというArduino類似の開発環境が使える。

□CUI32Stem PIC32MX795F512H(80/512/128)
CUI32Stem $29.95

CUI32Stem Wiki
OVERTONE Labs
StickOS™ BASIC User's Guide, v1.90

・StickOSが使える。BASICが使える。

□CUI32 PIC32MX440F512H(80/512/32)
CUI32 PIC32MX Development Stick $39.95

・CUI32Stemの以前の版っぽい。

□UBW32 PIC32MX795 (80M/512K/128K)

□chipKIT Arduino互換のIDEを提供 国内でも販売

chipKIT

PIC32MX795 (80/512/128)
chipKIT Max32™ Prototyping Platform 
chipKIT Max32 Arduino-Compatible Prototyping Platform 5900円
 
PIC32MX320F128 (80/128/16) 
chipKIT Uno32™ Prototyping Platform 
chipKIT Uno32 Arduino-Compatible Prototyping Platform 3400円

[MIPS]秋月PIC32MXをブレッドボードでLチカ

 従来のPICは食わず嫌いだったのだけど、MIPSと聞いてつい。

 秋月電子で普通のDIPパッケージで32bitMIPSアーキのマイコンが出た。190円〜220円。このうちフラッシュ32KB/RAM8KBでUSB付きのPIC32MX220F032Bを使ってみた。
PIC32MX220データシート
開発環境はPICkit3+MPLABXを使用した。PICkit2はPIC32に対応していないらしい。MPLABXはWindows/Linux/MacOSXに対応している。必要なのはXCコンパイラとMPLABX IDEのふたつ。これらをインストールする。

MPLABX

 PIC32を使用するには、[File][New Project...]からSamples/Embeded/PIC32 templateを選択する。
 次に作成したプロジェクトを選択した状態で[Files][Project Propaties]を開く。Configuration画面を以下の様に設定する。
Device:PIC32MX220F032Bを選択
HardwareTool:PICkit3以下に出ているシリアルナンバー(SN:BURxxxxxxxxx)を選択
Compiler Toolchain: PIC32用のCコンパイラが表示されていることを確認。

※MacOSX用でPICkit3が認識されていなかったのではまった。再インストールしたら認識した。Windows用は問題なし。

 では準備ができたので実験してみる。たけおかさんのを参考に(というよりまんまブレッドボードにのっけただけ)組み立てた。

PIC32MX220 (200円のMIPS CPU)を使う:たけおか ぼちぼち日記

配線はこんな感じ。
PIC32_01

電源供給はUSBシリアル変換モジュールAE-UM232Rからもらうことにした。PICkit3からの給電はしない(MPLABXのデフォルトでは給電なし)。
サンプルプログラムもたけおかさんのをそのままmain.cにコピペして使用。スミマセン。

pic32_02

シリアル通信を確認するにはFT232のドライバをインストールする必要がある。
Virtual COM Port Driver

MacOSX上では適当な端末ソフトが見つからなかったので、Arduino IDEのシリアルモニタを使用した。

 で、チカチカ成功。色々いじって点滅速度を変えたりシリアルに出力する文字変えたりして遊んでみた。


初期化の所で気になったのは以下。
SYSTEMConfigPerformance( SYSCLK );

これは動作周波数を引数として与えると、キャッシュ(実際はフラッシュROMのリード専用バッファに近い)の有効化やディレイの調整をまとめてやってくれるらしいのだが、PIC32MX220シリーズでは上限40MHzなのに80000000が指定されていた。80MHz動作はPIC32MX440シリーズのはす?この箇所を40000000に変更して確認したが、Lチカの周期は変わらなかった。どうやらPIC32MX220シリーズで40MHz以上の指定をしても上限40MHzになるみたいだ。なおシリアルの速度は変化しなかった。

 作例あり&ブレッドボードなので一晩でできました。みんなもやってみよう!

※LEDを2個同時に点灯させると若干暗くなる。I/Oはピンあたり15mA(シンク/ソース共)。


☆部品表

・PIC32マイコン
□PIC32MX220F032B

・秋月電子 USBシリアル変換モジュール
□AE-UM232R

・抵抗 1/8W
□10ohm
□330ohm x2
□10Kohm

・セラミック・コンデンサ
□0.1uF x2

・電解コンデンサ
□10uF 10V

・LED
□赤/緑/黄など適当に x2
(白/青はVFが3.3Vより上かもしれないので避ける)

□ブレッドボード
□ブレッドボード用配線材

□miniB USBケーブル

 

マイコン覚書き2012

色々調べて思った最近のマイコンに関するメモ。

・特徴
 安価:PIC、AVR 省電力:MSP430 高性能:ARM、PIC32(MIPS)

・フィジカルコンピューティング
 Arduino:プログラムを転送して実行、Gainer,Gainer-mini:パソコンの手足として動作

・Arduinoについて
 ArduinoのコアはATmega328。これにUSB-シリアル変換が付く。
 3.3Vと5V動作の品がある。
 Arduino UNOはUSB-シリアル変換をAVRのUSB付きモデルであるATmega16U4や8U4が使われている。 
 Arduino LeonardoはATmega32U4 ワンチップで実現。
 開発環境がフリーで使いやすく、作例が多い。
 動作確認後、ATinyなどに実装することも可能。

・ARM系について
 STマイクロなど評価ボードが安い。他社も続々参入。
 開発環境は複数ある。ちょっととっつきにくい。

・PIC
 USBの使えるPICはGainer-miniやPinguinoで使える。

・PIC32
 MIPSアーキで高性能かつ安価。Arduinoのシールドが使えるボードがある。

 いずれも、I/O周り、メモリ容量、動作速度に気をつけながらC/C++言語で開発できる。命令セットアーキテクチャはギチギチにプログラムを押し込めようとしないかぎり知らなくてもいいのでは?

 H8,SHなどが流行ってた頃はマイコンいじってなかったので分からないけど、新規に使わなくてもよいかな。R8C、78K0、V850あたりも。

 やはりユーザが多いマイコンは作例も豊富、何か行き詰まった時に調べやすい。

マイコンHC08のメモ

freescaleの8bitマイコンHC08について資料のまとめ。

簡単な特徴:
 8bitでHC6805命令セット互換なので68系経験者には入りやすそう。
 I/Oにキー割込みという設定があり、エッジ/レベルの変化で割込みが掛けられる。
 CodeWarriorによる開発。

 なおHCS08はちょっと違うので注意。

・メーカーによる説明
freescale HC08
・HC08スターターボードキットver.2の開発元
マイコン工作の実験室 
・HC08スターターボードキットver.2取り扱い
 千石電商 マイコンも千石から入手可能
 ・HC08マイコンの解説書
試しながら学ぶHC08マイコン入門―ミニマイコン扇風機を題材にした電子工作とマイコン・プログラミング  
・エレキジャックの連載
エレキジャック アーカイブ

・freescaleのcodewarrior開発ツール
freescale - IDE - Debug, Compile and Build Tools 
・HC08データシート
freescale - datasheet HC08 
・MC68HC908QY{1|2|4}ACPEドキュメント[pdf]
datasheet


千石から通販で購入できるのは
MC908QY1ACPE
MC908QY2ACPE
MC908QY8CPE
の三種類。主な違いはROM/RAM容量。いずれも16pinのDIP。


記事検索
プロフィール

hardyboy

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