Superb Garbages 2

千野純一(chinorin)のはてなダイアリーの続きです。

PICの結論とATtiny13A計画

  • 前回のPIC話の続き)いやーこれらってなんか書き込み用のハードウェアみたいなやつがまずあった上で、その先に繋いで焼くやつではないの? 結局ウン千円するPICkitが必要でしたとかだったら目も当てられんぞ。
  • まーね、もしそれ単体でいけたとしても、ただでさえいくつも入ってる統合開発環境をまた新しく増やしたくないし、なーんかPIC系も調べようとするとまず本が出てくる感じで、ウェブ上の日本語の情報がそこまでたくさん見当たる感じじゃない。ので、調べるの面倒っぽく思える。
  • そんで、個人的にはPIC(触ってないから中身知らんけど)よりAVRを応援したいわけよ。PICに一票入れることはAVR衰退の道だ。それでもしAVRがなくなることになったら悲しいのでPICに手を出すことはしないぞ。ビバ! Atmelユニオン!(意味はない)(しかも古い)
  • 一応解説しときますと、PICとかAVRってのはマイコンのシリーズ名。PICは米Microchip Technology社が、AVRは米Atmel社がそれぞれ製造していましたが2016年AtmelはMicrochip Technologyに買収され消滅しました。現在はPICもAVRもMicrochip Technologyが製造しています。PICはどんなに古いチップでもディスコン(製造終了。こちらの業界で言うところのロットアップ)しない宣言されてるらしいんだけど、元々は敵対プロダクトであるところのAVRについては今後どうなるかわからない。Arduinoがあまりにも有名(?)なので少なくともATmega328P、ATmega32u4あたりは残す価値がありそうだけどもねえ。
  • とりあえずATtiny10あたりはなくなりそうだよね。w

 

  • ところで、先日のロータリーエンコーダデコーダみたいに、ATtiny13A用のスケッチとしてひととおり作り置きしといてもいいなと思うものを考えてみようと思う。
    • 単純なロジックICの代用系。AVRの入力は必ずシュミットトリガらしいので、2回路シュミットトリガインバータ(NOT)、1回路シュミットトリガAND/OR/NAND/NOR/XORあたりは超簡単に作れるだろう。5番ピンの\rm{\overline{RESET}}を無効にすればそれぞれ1回路増やせるんだけど、それ以降プログラムを書き換えるのが難しくなる(不可能ではない)からあんまりやりたくないよね⋯。恒久的に組み込んじゃうならそれでいいけどそもそもテストするのがとても面倒だ。1ピンは共通にして1.5回路みたいにするというのも意外と使い道あるかもしれないし、あるいは3~4入力1回路というのも、そういうICをストックしておこうという気にはあんまりならないのでそれはそれでアリか?
    • 単純じゃないロジック系。例えばTとかDとかのフリップフロップ(Dはクロックコモン?にすることで2回路いける)、立ち下がりのみを検知する4ビット2進カウンタ(繰り上げは最上位ビットを次のやつの入力に入れればOKなはず。リセットはリセットピンを使う。ノイズ対策が超重要)など。⋯⋯シフトレジスタやMUXは2ピン使って2ビットじゃ意味ねーからだめか。
    • 自作曲のメロディIC。これは色んな意味で要研究。PWMが2本あるので2和音は確実にいけるが、普通にプログラムでHIGH/LOW制御して低音限定でいいので1音+何らかのノイズを出力するなどして1音くらいいけねえかなあ。w しかしそんなプログラムがブートローダ含めて1KBに納まるのかどうかというとやっぱムリかね。ここは仕方なくATtiny85を用意するしかねーな⋯!
    • ありふれてはいるがクイズボタンインターフェースとかどうだろうね。出題者のところに親マイコンがあってその下に回答者用の子マイコンをぶら下げる形にするのが普通だろうけど、簡便さのために親マイコンがなくても動く仕組みを考えてみるのも面白いかも。
  • 何にしても基本的には自分用。そんなロジックICとかが必要になったときそれっぽいものをすぐに用意できるという状況にするのが主目的なので、自分で使いやすいように作るのがよろしいだろう。だとすると一番上の「単純なロジックIC」のやつはソース、じゃなかった「スケッチをちょろっといじるだけで色んなのになる」という形で充分か。

 

  • ソースコードには main() があるはずなんだけど、Arduino言語にはそれがなくて最初に1回だけ呼び出される setup() とそれ以降ずっと繰り返す loop() があるのみなので、それはソースではなくスケッチと呼びます」っていう説明がわりと好き。いや、暗黙的にincludeされるファイルに普通に↓こんな感じのが書いてあるらしいんだけどさ。
void main(){
	setup();
	while(1) loop();
}