2018年04月28日

自作キーボード (ツール編)

先に Windows でテストプログラムを作る話を書いた。今回は、ライタとかデバッグ環境をどうするかについて。

長らく AVR の電子工作から離れていたが、いろいろ状況が変わっている。

ちょっと調査。

ATtiny45を使ったUSB-I2Cブリッジ

    ここを見ると、
    USB-TINY-I2Cプロジェクト
    というのがあり、USBtiny に I2C マスター機能をくっつけたもののようだ。

    USBtiny には、ISP ライタ の機能があり 、avrdude でサポートされている。... となると、ファームウェアを 書き込んで そのまま I2C キーボード のテストまでできる 可能性が。

    その上、水晶を使わない V-USB ...
    EasyLogger
    というプロジェクトがあり、 合わせることも出来るという話。

    水晶を使わない V-USB というのは、相当に不安があるが、全部出来たあとに試してみるのも良いかも知れない。水晶なしで安定して動くのであれば、ATtiny88 版などにはありがたい。それはともかく、USB-TINY-I2C をツールとして採用してみようかと。

FabISP

    usbtinyisp.jpg

    実は、aliexpress で 見つけて これを購入してある ($1.62:ATtiny44 で検索) 。なんかコンパクトで、良さそうな感じ。micro usb だし、設計が最近のようだ。良く調べないで買ったのだが、調べてみると... FabISP というものであった。

    ファームウェアのソースコードもある。まずはこれを USB-TINY-I2C と合わせることを検討したい。

    FabUSB-arduino.jpg
    A000092, Arduino ISP - Development Kit is a Tiny AVR-ISP based on David Mellis Project FabISP
    Reference Design using part ATtiny44A-MUR by Arduino Corporation

    aliexpress のものは、USB コネクタを変えた派生版だが、ほかの派生版には Arduino のリファレンスデザインと言うものがある。ちょっと驚いた。


続きを読む
posted by すz at 22:22| Comment(92) | TrackBack(0) | I2CKEYBOARD

tcc-win32

少しコードを書いてきたが、どうやってテストしよう?

AVR の USBasp かその手のライタに、I2C ブリッジ機能を持たせるという方向で検討しているのだが、今回は Windows 側 の アプリの話。

実をいうと Windows 10 になってから、開発環境を インストールしていない。一から構築である。普段使いのノーパソの Disk 容量が小さいので、入れるにしても容量が気になる。また、WindowsUpdate のために クリーンインストールを何度かしている。

今回 Windows でもちょっとしたものは、作りたいのだが、最小の環境でというのを考えている。

最小のコンパイル環境 tcc-win32
続きを読む
posted by すz at 21:35| Comment(34) | TrackBack(0) | I2CKEYBOARD

2018年04月26日

自作キーボード ソフト編(3)

ソフト編(1)(2) の実装編である。

今まで書いてきたことをコードにしたのが、これ
 ・i2ckbd-0.0.zip
コンパイルが通っただけで、動くはずもない状態だが、現状はサイズの見積もりが最重要。
念のためコンパイル環境を明記しておく
 ・ WINAVR-20100110
である。なんか古いのだが、使うチップも古いし。

    (追記) rm とかのコマンドがエラーになったり、使いにくいので変更
     ・ avr-toolchain-installer-3.4.1.1195-win32

make すると

    avr-gcc -I. -mmcu=attiny2313 -Wall -DF_CPU=8000000UL \
    -Os -fsigned-char -c i2ckbd.c
    avr-gcc -I. -mmcu=attiny2313 -Wall -DF_CPU=8000000UL \
    -Os -fsigned-char -c usi.c
    avr-gcc -mmcu=attiny2313 -Wl,-Map=i2ckbd.map i2ckbd.o usi.o -o i2ckbd.elf
    avr-objcopy -O ihex -R .eeprom i2ckbd.elf i2ckbd.hex

    text data bss dec hex filename
    1966 0 69 2035 7f3 i2ckbd.elf

こうなった。なんと! ATtiny2313 に入ってしまった。しかしかなり微妙。
また、RAM が厳しい。全部で 128 しかないが、69 バイトを消費している。割り込みを使うので、レジスタ全部退避みたいなところがあり、多分スタックオーバーフローを起こす。
続きを読む
posted by すz at 23:36| Comment(0) | TrackBack(0) | I2CKEYBOARD

2018年04月22日

自作キーボード ソフト編(2)

次は、I2C デバイスの処理である。当初 USI だけ対応する予定だったのだが、TWI にも対応することになった。これについても、だらだら書いてきたものがあるのだが、改めて検討する。

続きを読む
posted by すz at 16:41| Comment(69) | TrackBack(0) | I2CKEYBOARD

2018年04月21日

自作キーボード ソフト編(1)

どのようなコードを作るかについて書いてきたが、これも良くわからなくなっている。仕切り直しであらためて書こうと思う。

ソフト編(1)では、キースキャン側の処理について。I2C や V-USB のインターフェイスについては別途。



続きを読む
posted by すz at 10:56| Comment(0) | TrackBack(0) | I2CKEYBOARD

2018年04月17日

自作キーボード (HWまとめ)

Linux SBC に添える小さなキーボードを作ろうとしているのだが、だらだらと書いてきて自分でも分からなくなったので、まとめようと思う。

レイアウト (一応確定)

    i2c_keyboard_asign.png

    これでいこうと思う。太字の右はシフト。右上は FN キーを押したとき。
     -- ◇は カーソルの4キー。
     -- SysRQ は、"Print Scr" になるかも知れない。
     -- QWER に割り当てがあるが、 最初の版にない、ESC と \ の代替。
     -- FN+R は、SCANCODE1, HID では無理かも。FN+SHIFT+E

マトリックス (確定)

    ROW1 ROW2 ROW3 ROW4 ROW5 ROW6 ROW7 ROW8
    COL1 1 TAB CTRL ALT BS ] ENTER ESC
    COL2 2 Q A Z = [ ' SHIFT
    COL3 3 W S X - P : /
    COL4 4 E D C 0 O L .
    COL5 5 R F V 9 I K ,
    COL6 6 T G B 8 U J M
    COL7 7 Y H N \ FN SP2 SP3

    発注したキーボードが 2 種類あって、さらにもう一つ検討中であるが、同一である。
     -- COL に L レベルを出力し、ROW 側で読み取る。
     -- 特殊キーは、ダイオードを入れて 同時押しをサポート。
     -- version 1 には、ESC と \ がない。(ファイルを修正はした)

続きを読む
posted by すz at 06:01| Comment(92) | TrackBack(0) | I2CKEYBOARD