アマチュア無線や電子工作,バイクの話などを徒然なるままに書き散らすメモ程度のblogです.


by jq1ocr

カテゴリ:マイコン・電子工作( 267 )

ですよね.はい,ちゃちゃっとしましたよ.
d0106518_1521781.jpg

mega かよって声が聞こえそうですが,LCD の付いたテストボードを使っただけで,ポートは GPIO PB0 です.なので,LCD こそ異なる I/F が必要ですが,シリアル部分は tiny85 でも問題なく動くはずです.

0 に落ちてから 9 ビット目が 1 になる組み合わせが続くと,しれっと化け字を吐き続けますが,一度スタートビットがつかめれば,あとは大丈夫っぽいのでこのあたり注意すれば問題なく使えるかと思います.

#define S_HIGH bit_is_set(PINB, PINB0)
-----
while(1){
while(S_HIGH){}
data=0;
for(i=0;i<8;i++){
_delay_us(107);
if(S_HIGH)data|=1<< i ;
}
_delay_us(107);
if(S_HIGH)lcd_write(data);
}

中身の delay の 107us の話です.9600bps の場合の1シンボルは計算上 104us 強ですね.Arduino シリアルトーカーの場合 0 〜 9(文字コードは 0x30-0x39) を連続で出しています.オシロで波形を観測すると,こんな感じです.
d0106518_17251665.jpg
0x0011xxxx ですから OK ですね.プログラム上,読み始めを falling edgeにとっており,時間をおいて次を読む場合,これよりやや長い時間後にしておかないと,手前のビットを読んでしまう恐れがあります.様子を見ながら伸ばしていって今回は 107us になりました.もちろん状況によっては値は異なるでしょう.続くとずれていきそうですが,スタートビットで同期をとっているのでこの位の差であれば1バイト中に累積した遅延はリセットされます.
[PR]
by jq1ocr | 2016-12-13 21:50 | マイコン・電子工作 | Comments(0)
tiny85 はいわゆる旧来のシリアルピン(TXD, RXD)がないので一工夫が必要です.とりあえず受信だけしたいのですが,ちゃんと動いているか確認するために,外部からシリアルの信号を入れてやりたいと思います.そのため下ごしらえとして送信装置(serial talker)を作ることにしました.

簡単なものですから tiny13A ででも作ってもよいのですが,卵が先か,鶏が先かで,それがちゃんとした信号を出しているかを確認する必要がありますし,そもそも受信側を作りたいためのとりあえずの理由ですから,基板を起こすのも面倒.というわけで,手元にあった Arduino UNO を使うことに.笑

こんなスケッチを書きまして...
d0106518_12422231.jpg

upload します.これは数字の0から9までを無限ループでシリアル送信するだけのプログラムです.

これをロジアナで見るとこんな感じ.
d0106518_12435576.jpg

数字0のアスキーコードは 0x30,1は 0x31 です.ちゃんと出てますね.このくらいのことなら Arduino では簡単にできるけども,やりたいことがすべて簡単にできるわけではないので,やっぱりサブですねぇ.まあこれは余談ですが.

というわけで,これが tiny でも受けられれば,シリアルを実装できた,ということになります.
[PR]
by jq1ocr | 2016-12-13 21:30 | マイコン・電子工作 | Comments(0)

骨折り損な TWI

tiny85 の件です.結局ピンアサインが気に入らず,USI は使わずに従来通りソフトウェア TWI を使うことにしたのですが,どうも BME280 が動いていないように見えます.最初は TWI の実装が不完全なのでは?と気になってしまい,散々タイミングなどを見直したのですが,不審な点が見当たらず.....

つつくところが違ってる感が漂ってきたので,他の I2C デバイスもつけて確認しようと,同じくしまいこんでいた LPS331AP を引っ張り出してきました.

すると,なんとこっちはあっけなく通信できました.というわけで,TWI の問題ではなくて,BME280 が壊れているという可能性が否定できなくなってきました.
d0106518_1241956.jpg

表示の 255 は BME280 から読み取った ID ですが,ack がないので通信できてはいません.数値はプルアップしているからそうなっているのであって,結局動かせていないことを示しています.次の 187 は 0xBB になりますが,LPS331AP からの正しい応答です.

ただ LPS331AP も気圧や気温のデータは出てくるのですが,なにかおかしいです.データ長が長いため,プログラム側でも一工夫するわけですが,そこでつまづいているのかそれにしても変なので,もしかして,こっちもおかしかったりして,なんて思ったりもしています.苦笑

余談ですが,ソフトウェア TWI だけで結構な容量を食ってしまうわけですが,tiny85 はメモリが大きいので,その上 float とかを使ってプログラムが大きくなっても書き込めてしまいます.この気楽さ,もう tiny13A には戻れないかも.笑
[PR]
by jq1ocr | 2016-12-12 21:30 | マイコン・電子工作 | Comments(0)

大食漢な LCD

こんな豪勢な LCD で試作をしておりました.
d0106518_2137042.jpg

20字4行,フルスペックですね.これが煌々とバックライトがつくのです.なんとなく熱くなってる気がしたのですが,気のせいじゃなくて結構な大食いでした.

うちでは試作用の電源で 5V のものはエネループを使っています.こういうケースに...
d0106518_21384722.jpg

こんなクリップ
d0106518_2139944.jpg

をリードにつけておけば,ほぼ 5V でて便利なわけです.

試作して虫取りして...といっても,そんなにずっと使うわけではないので,滅多に充電してませんでした.ところが前述の液晶を使ったもので作業していたら,コントラストが落ちてきて,あれれ?と思って電圧をみたらかなり落ちてました.充電中は乾電池をつけて作業したのですが,それもしばらくしたらなくなってきました.どうやらこの LCD (というか,バックライトの LED)がバカ食いしてるみたいなのです.

虫取り中はいろんなデータが表示できた方が便利なのですが,終わったら表示も最小にして LCD も小さいのに変えた方がいいのかもしれません.ただこれは極性が他と逆だったりするんだよなぁ.

というか,バックライトの制御が簡単にできたらいいのですよね.もちろん LED に外から電源を与えるようにすれば実現はできるのですが配線が多くなってしまいますしね.I2C の LCD もバックライトコマンドがあったらいいのに.
[PR]
by jq1ocr | 2016-12-11 06:30 | マイコン・電子工作 | Comments(0)

ATtiny85 を使ってみている

ピンアサインを見て tiny85 に TWI があるじゃん,と思ったのは誤解でした.マニュアルをよくみると,USI (Universal Serial Interface) を使ってソフト的に実現するようです.結局 ISP とかぶるピンにデバイスをぶら下げると書き込めないので,ピンを戻してとりあえずは LCD を動かせるようにしました.

LCD は書くだけなので,何か読ませようと部品箱をあさると I2C の温湿度・気圧センサーモジュール BME280 がでてきました.
d0106518_19581612.jpg
あら,こんな高級品を持っていたとは.

早速 TWI バスにつないで試したのですが,応答がありません.ブレッドボードだからなのか,ソフトが不完全でタイミングが詰め切ってないのかわかりませんが,いきなり壁に当たりました.ロジアナから一歩づついくしかなさそうです.

ここでなんとなく思い出しました.前は tiny13A で動かそうとしていたのですが,TWI を実装するだけでメモリがかさみ,そのときやろうとしていたことまで行き着かないまま放置してたような気がします.85 という新兵器があるので,もうちょっとがんばってみよう.
[PR]
by jq1ocr | 2016-12-10 20:15 | マイコン・電子工作 | Comments(0)

ATtiny85 を使ってみる

うちでは 328P を標準として,プチガジェット用には 13A を使ってきました.しかし,しばしばプログラムが肥大化して,1バイトの攻防を繰り広げることがよくありました.笑 だからといって大きいのにするとピンも増えてしまうのでパッケージが大きくなってしまうわけです.

そこで目をつけたのが昨年から扱いの始まった ATtiny85 です.値段こそ 160 円と 13A の3倍以上ですが,プログラムメモリが 8kB もあります(13A は 1kB).SRAM も 13A の 64B から 512B と大きくなって,ちょっとしたデータも扱えるようになりました.数使う用途でなければ,必要のない苦労をしなくて良い 85 の方が私のような素人には適しています.
d0106518_2341493.jpg
ATtiny85

もちろん買ってはいましたが,タンスの肥やしになっていたので,別件ついでに試してみることにしました.ペリフェラルを TWI (I2C) のにすればピンもいらないしいいなと.

最初は 13A と同様ソフトウェアTWIでやろうと思って,ISP とぶつからない PB3,4 に配線しておいたのですが,85 の説明書をみると,なんと SDA を PB0 に,SCL を PB2 につけろと書いてあります.

ところが配線を直して試し書きしてみたらこんなエラーが....

avrdude: stk500v2_program_enable(): bad AVRISPmkII connection status: MOSI fail

ダメじゃん.PB0 につないだ SDA が重いのか,ISP しようとしても MOSI が振れないとクレームが来てしまったようです.苦笑 だからあっちにしてくれればよかったのに...と思ったけど,あっちは XTAL をつける場合に必要なのでダメってことなのですね.うーん,いっそ LPC810 みたいにプログラマブルにしてくれたらいいのになぁ.

それなら LPC でいいじゃん,って声が聞こえそうですね.笑
[PR]
by jq1ocr | 2016-12-09 23:48 | マイコン・電子工作 | Comments(0)

GPS データをチラ見する

野暮用があってこんなのを買ってきました.
d0106518_1713635.jpg

GPS レシーバです.5V 入れれば動くのですが,データがどんな感じで出てくるのか,のぞいてみました.笑

使っているのはこちらのロジアナ.
d0106518_17144099.jpg

Saelae の Logic 16(original)です.

もっと安いのがあるのになぜ?かというと,これは Mac でもソフトがあるのです.作りも格好いいし,すばらしい!ちなみに Mac 上ではこんな感じに見えます.
d0106518_1716376.jpg

縮小しすぎてわかりにくいですね.データ部分を拡大するとこんなです.
d0106518_1716202.jpg

これは Async Serial ですが,他に TWI やらなんやらといくつものプロトコルに対応しており,当然デコードもしてくれます.

実際に使う時にはこれをマイコンに送って,データ処理するわけですが,実は今まで AVR でシリアルは使ったことがないので,どうなるかちょっと心配.
[PR]
by jq1ocr | 2016-12-06 22:00 | マイコン・電子工作 | Comments(0)
なんとこちらのトランジスタが発売開始ですよ.
d0106518_10121766.jpg

って,TO-92 見せられたって,なんのこっちゃ?ですけど,これ 2SC945 です.

2SC945 といえば,今でいう 2SC1815 と同じ立ち位置に昔いたトランジスタですね.ほぼ同程度のスペックなので,昔の回路図で 945 だったところを直すのに 1815 にしたって人は多いと思います.945 がディスコンになり,1815 が一般的になり,そして現在は 1815 もディスコンで流通在庫のみとなっています.

しかしなぜいまさら?と思ったらセカンドソースなのですね.オリジナルの 945 は日電だったと思いますが,今回発売のこちらは Unisonic という台湾のメーカーです.そういえば,1815 のセカンドソースもこのメーカーだったような.1815 でみると,秋月には東芝純正と台湾セカンドソースの両方がありますね.価格は東芝が一個十円,台湾のが五円相当です.東芝のストックがあるので台湾のは買ったことがなく比べたこともないですが,どんな感じでしょう?
[PR]
by jq1ocr | 2016-12-06 21:10 | マイコン・電子工作 | Comments(0)

Et tu, Terraemotus ?

d0106518_16313461.jpg

というわけでこれを買ってみたわけですね.実はハーフピッチなので,そのままだと普通の基板には載せられません.いっその事ハーフピッチ基板というのも手ですが,目がきついです.苦笑

そこで変換することに.しかし,そのものズバリがないですねえ.センサは10ピンなのでちょっと余りますが,こんなのはどうかと思いました.
d0106518_1632870.jpg

SOP 16pin DIP 変換基板です.ところがセンサーの方が 10mm でわずかに届かないようです.ペースト使えばいけるかもしれないけど....

だからといって 28pin ではもろもろ余りすぎ.
d0106518_16322299.jpg

で,こんなのを見つけました.
d0106518_16323337.jpg

10ピン2.54ピッチ(2x5)←→1.27ピッチ(1x10)変換基板というものです.

これを両側につけるので多少余りますが,ぴったりのはないですし,他の変換より良さそうです.4割落とすって作戦もできますしね.作例ができたらまたエントリします.
[PR]
by jq1ocr | 2016-12-04 21:30 | マイコン・電子工作 | Comments(0)

Arduino UNO

自分は普段のマイコン工作に AVR を使っているので,Arduino を使う意味はほとんどないのですが,仕事関係で使うことになりました.
d0106518_12341732.jpg

素人向けにした所為か分かりませんが,結構融通が利かず面倒くさいですね.

とりあえず使ってみて「あれ?」と思ったのは,プルアップ,プルダウンです.プルアップはピン設定時(pinMode)に設定できるのですが,プルダウンはないのです.なんででしょうね?digitalWrite で high にしても,プルアップになるようですが,ここを low にしたからといってプルダウンにはならないみたいです.

まあ抵抗を外付けするか,回路をプルアップ前提で使うように組めばいいので,これからはそうしておきましょう.
[PR]
by jq1ocr | 2016-12-02 21:30 | マイコン・電子工作 | Comments(0)