USBシリアル変換ICのマイコンライターとしての使用可否検証 その6 OS別対応状況

[MacOS Ventura 13.3.1, Windows11]

手持ちのAVRライターについてOS別の書込可否状況をまとめました(ATtiny13A)。avrdudeコマンドでの書込が出来るかどうかで判定しています。

FT231Xモジュールを何とかMacで使えるようにしたいのですが、JTAGや独自プロトコルserjtagなどシリアル通信をそれなりに理解していないと厳しそうです。

私が初めてWindowsPCを購入した1994年にはUSB規格はまだ存在していませんでした。1996年以降あっという間に普及していった過程を見てきた者として、電子工作レベルで使いこなしたい気持ちはなくはないです。

まあ正規ライターの予備としてFT232RLが問題なく使えているので、FT231Xをさらに探究していくかどうかはモチベーション的に微妙なところです。

USBシリアル変換ICのマイコンライターとしての使用可否検証 その4 FT231Xで書き込み成功

[Windows11]

ようやくFT231XモジュールをAVRライターとして機能させることができました。断続的に取り組んで10日掛かりました。

最初はMacOSでFTDI社技術資料のサンプルコードにてI/Oピンが入力か出力かを設定し、avrdudeコマンドでhexファイルを書き込もうとしても上手くいきませんでした。

Windows11でavrdude-GUIというアプリを使うとあっさりATtiny13に書き込めました。

これでFT232RLモジュール(1100円)よりも安価な簡易機能版ICで書き込むことが出来るようになりました。ただし秋月電子ではFT231Xモジュール(880円)は在庫なしになっています。気が向けばFT231X単体(320円)からモジュールを組んでみるつもりです。

これからMacOSでの失敗の原因を調べると共に、avrdude-GUIと同等の機能を持つMacOS用アプリを作る予定です。

FT231Xモジュールで書き込みができた設定

USBシリアル変換ICのマイコンライターとしての使用可否検証 その2 FT232RL, FT231X, avrdudeコマンド

[MacOS Ventura 13.3.1, Windows11]

前回の続き。

5.FT232RL USBシリアル変換モジュール、AVRマイコンのデータシートをある程度理解できる知識、avrdudeコマンドに関する知識があれば、安価でマイコンへの書き込みが可能。avrdude-GUIのようなアプリを使わずとも、WindowsやMacOSで自在に書き込みができる。

6.avrdude関連コマンド例 (ATtiny13A)

# MacにつないだFT232RLのポートを調べる
ls -l /dev/tty.*
# 出力例
crw-rw-rw-  1 root  wheel  0x9000004  5 13 19:11 /dev/tty.Bluetooth-Incoming-Port
crw-rw-rw-  1 root  wheel  0x9000002  5 13 19:11 /dev/tty.usbserial-DJ004ULY
crw-rw-rw-  1 root  wheel  0x9000000  5 13 19:11 /dev/tty.wlan-debug

# 接続確認
# Windows
avrdude -n -p attiny13a -C avrdude.conf -c ft232r -P ポート番号(COM3など)
# MacOS
avrdude -n -p attiny13a -C /opt/homebrew/etc/avrdude.conf -c ft232r -P /dev/tty.usbserial-DJ004ULY

# hexファイル書き込み
avrdude -p attiny13a -c ft232r -P /dev/tty.usbserial-DJ004ULY -U flash:w:main.hex:i -B 4800

# FUSE変更
avrdude -p attiny13a -c ft232r -P /dev/tty.usbserial-DJ004ULY -U lfuse:w:0b01111010:m -U hfuse:w:0b11111111:m -B 4800

7.avrdude.conf 設定例
/opt/homebrew/etc/avrdude.conf

programmer
    id    = "ft232r";
    desc  = "FT232R Synchronous BitBang";
    type  = "ftdi_syncbb";
    connection_type = usb;
    miso  = 3;  # CTS X3(1)
    sck   = 5;  # DSR X3(2)
    mosi  = 6;  # DCD X3(3)
    reset = 7;  # RI  X3(4)
;

8.FTDI BitBang AVR-Writer(Windows用)をFT231Xで組んでみたがエラー発生。元記事ではFT232RLを使用している。
https://make.kosakalab.com/arduino/avr-writer/

9.FT231Xは簡易機能版のためマイコンライターとしては使えないことが判明。FT232RLのBitBangモードを使えばマイコンライターとなる。

2023/5/22追記:後日avrdude-GUI(Windows版のみ)を使ってFT231Xで書き込みできた。関連記事参照。

$ avrdude -c ft231x -p attiny13a -U flash:w:main.hex:i -P /dev/tty.usbserial-DJ004ULY
avrdude: MISO: Following pins are not valid pins for this function: 8
         Pin assignment  : 0..7 = DBUS0..7
           VCC     =  (not used)
           BUFF    =  (not used)
           RESET   =  3
           SCK     =  6
           MOSI    =  7
           MISO    =  8
           ERR LED =  (not used)
           RDY LED =  (not used)
           PGM LED =  (not used)
           VFY LED =  (not used)
avrdude: opening programmer "ft231x" on port "/dev/tty.usbserial-DJ004ULY" failed

avrdude done.  Thank you.

10.秋月電子が販売しているFT232RL USBシリアル変換モジュール(1100円)はUSBコネクタがminiBなので要注意。今はmicroBが主流のため持っていない方も多いのでは。私は携帯電話関連のケーブルを処分した際に一緒に捨てていました。

USB miniB

USBシリアル変換ICのマイコンライターとしての使用可否検証 その1 FT231X

[MacOS Ventura 13.3.1, Windows11]

AIの急速な進化に伴いソフトウエア製作への興味が薄れつつあります。プログラミングが知的刺激を伴わなくなり、単純に面白くなくなってきました。ソフトウエア技術の価値が揺らいでくると、ハードウェアの相対的重要性が増してくるように思います。

USBシリアル変換IC FT231Xをマイコンライターとして使えないかトライしています。その過程を記録していきます。

1.FT231XのUSBシリアル変換モジュールを購入。2016年9月。

2.このモジュールをマイコンライターに転用できないか検討開始。2023年5月。

3.ドライバは以下のサイトから入手。
https://ftdichip.com/drivers/vcp-drivers/

MacOS Venturaではベータ版インストーラがうまく動作せず。調べると最近のMacOSにはデフォルトでドライバが入っているとのこと。Macのシステムレポートでドライバ認識を確認。

4.Windows11でMicrochip Studioを使ってLED点滅コードをコンパイルし、avrdudeで書き込みを図るが以下のエラーが発生。デバイスドライバではFT231XをCOM3として認識している。avrdude.confにはFT231Xについて追記済。miso等後ろ4行は仮設定。

>make flash
avrdude -c ft231x -p attiny13a -U flash:w:main.hex:i
E avrftdi_open(696): Error -3 occurred: device not found
avrdude error: unable to open programmer ft231x on port usb
programmer
    id    = "ft231x";
    desc  = "FT231X";
    type  = "avrftdi";
    connection_type = usb;
    miso  = 3;  # CTS X3(1)
    sck   = 5;  # DSR X3(2)
    mosi  = 6;  # DCD X3(3)
    reset = 7;  # RI  X3(4)

;

[LTspice] 04 Mac版の操作方法 その2 GND,コマンド,部品記号,色設定

[MacOS Ventura 13.3.1, LTspice for MacOS 17.1.4]

1. GND
Draft – Net Name

2. コマンド
Draft – SPICE directive

0-15分まで,0から50ms間隔で測定

3.抵抗(長方形表示)
Draft – Component – EuropeanResistor

4.電解コンデンサ
Draft – Component – PolarizedCapacitor

5.色設定
Control Panel – Waveforms – Configure Colors

[LTspice] 03 Mac版の操作方法 その1 Standard.bjt,シンボルファイル

[MacOS Ventura 13.3.1, LTspice for MacOS 17.1.4]

約2年ぶりにLTspiceで回路図を書きます。操作方法を殆ど忘れているのでメモを残しておきます。

1.Windows版とはUIがかなり異なる。基本的には右クリックメニューを使う。

2.デフォルトでは2SC1815のような古いトランジスタは扱えないので以下のサイトからStandard.bjtやStandard.mosを入手する。
https://ltwiki.org/index.php?title=Standard.bjt

このファイルを以下のディレクトリに配置する。古いstandard.bjtはstandard.bjt.oldなど適当にリネームする。
/Users/[ユーザ名]/Library/Application Support/LTspice/lib/cmp

入手したStandard.bjtは別に外部ストレージに保管しておく。LTspiceを再インストールすると消えてしまうため。

3.シンボルファイル(部品図)は以下のディレクトリにある。
/Users/[ユーザ名]/Library/Application Support/LTspice/lib/sym

“More Choices”−”Open Other Type of File”のFileChooserから選択する。”Open An Existing Schematic”のFileChooserからは回路図のみ選択可能です。
新規シンボルファイルも外部ストレージに保存を推奨。

Mac版を作ってくれただけありがたいという感謝と寛容の心を持たないとこのアプリは使えないです。UIがおかしければ挙動もおかしいです。隠しファイルを表示させないとシンボルファイルを選べないのにショートカットキーを何度も押さないと表示しないです。表示されないわけではないので出るまで押しましょう。ソースコードがあれば今すぐ改変したい。

[Parsec] 外出先からPC電源ON 米粒マイコン ATtiny10

[MacOS Ventura 13.3.1, Windows11]

外出先からPC電源をONにする方法としてはIoTデバイスを使うのが便利です。

物理的にスイッチを押してくれるデバイスがまず思い浮かぶところですが、毎回確実にスイッチを押してくれるのか心もとない面があります。また自分で押す時には邪魔になります。

そこで今回はスマートプラグを使ってマザーボードの電源スイッチをショートさせる方法にしました。

余り物前提のArduinoを使う方法がネット情報にありましたが、かなりのオーバースペックになるので長さ3mmの米粒マイコン(ATtiny10)を使いました。これでもフラッシュメモリの使用率はたったの7%(74/1024Bytes)です。

主な部品(秋月電子で購入):
ATtiny10実装モジュール(DIP化) 150円 [マイコン単体は50円]
5V小型リレースイッチ 80円
USBコネクタ Type-B 50円

Arduinoは画期的で使い勝手の良い商品ですが、マイコンを使うと低コスト、小型化が可能になります。是非とも挑戦していただきたいものです。

ちなみにArduinoはUno正規品1個、互換品3個、ATmega328P(ブートローダ書込済)3個を持っていて余りまくっているものの、さすがに今回の用途では使う気になりませんでした。

電源ON/OFFユニット

#include <avr/io.h>
#include <util/delay.h>

int main(void)
{
	DDRB |= 0b00000001; //PB0を出力に設定

	PORTB |= 0b00000001; //PB0をON
	_delay_ms(500/8); //500ms待機(8分周のためコードで調整)
	PORTB &= ~0b00000001; //PB0をOFF

}
ATtiny10は5Vで書き込みをする(3Vではエラーになる)
PasSを使って部品配置図作成(Windows版のみ)

参考サイト

[マイコン] AVR ATtiny13AのLED点滅が遅い

[M1 Mac, Big Sur 11.6.8, avr-gcc 9.4.0, NO IDE]

ATtiny13AにつないだLEDの点滅が設定に比べて異様に遅いので色々調べてみると、システムクロック周波数がデフォルトで8分周(8分の1)になっていました。

対策としてavrdudeでヒューズビットを変更することにより1分周に変えます。コマンドは”make fuse”です。

Makefileは以下の通りです。ヒューズビットは16進数で表記されていますが、これでは各ビットの設定がわかりにくいため2進数表記に変えています。

DEVICE     = attiny13a
CLOCK      = 9600000
PROGRAMMER = -c avrispmkII
OBJECTS    = main.o
# FUSESのシステムクロック(lfuse第4ビット[下5桁目])を8分周から1分周に変更し2進数表記にした
FUSES      = -U lfuse:w:0b01111010:m -U hfuse:w:0b11111111:m
# デフォルト FUSES      = -U lfuse:w:0x6a:m -U hfuse:w:0xff:m

AVRDUDE = avrdude $(PROGRAMMER) -p $(DEVICE)
COMPILE = avr-gcc -Wall -Os -DF_CPU=$(CLOCK) -mmcu=$(DEVICE)

all:	main.hex

.c.o:
	$(COMPILE) -c $< -o $@

.S.o:
	$(COMPILE) -x assembler-with-cpp -c $< -o $@

.c.s:
	$(COMPILE) -S $< -o $@

flash:	all
	$(AVRDUDE) -U flash:w:main.hex:i

fuse:
	$(AVRDUDE) $(FUSES)

install: flash fuse

load: all
	bootloadHID main.hex

clean:
	rm -f main.hex main.elf $(OBJECTS)

main.elf: $(OBJECTS)
	$(COMPILE) -o main.elf $(OBJECTS)

main.hex: main.elf
	rm -f main.hex
	avr-objcopy -j .text -j .data -O ihex main.elf main.hex
	avr-size --format=avr --mcu=$(DEVICE) main.elf

disasm:	main.elf
	avr-objdump -d main.elf

cpp:
	$(COMPILE) -E main.c

# 以下追記
# cファイルからsファイル作成
asm:
	$(COMPILE) -S main.c
	
# sファイルからhexファイル作成
tar:
	$(COMPILE) -o main.o main.s -c
	$(COMPILE) -o main.elf main.o
	rm -f main.hex
	avr-objcopy -j .text -j .data -O ihex main.elf main.hex
	avr-size --format=avr --mcu=$(DEVICE) main.elf