TEF6686 DSP RADIO キット組み立て

Twitter でフォローしている方が、「TEF6686 DSP ラジオキットを出します」との案内。キットを一つ下さいと連絡し入手した次第です。TEF6686 は NXP 社から販売されているラジオチップですが、当キットではシールドケースに組み込まれたモジュールが使用されていました。

ちなみに本家サイトは TEF DSP AM/FM tuner v1 – pe5pvb.nl になります。

TEF6686 はラジオ用IC単品ですが、キットには写真の用なシールドーケース付きのモジュールが入っていました。ヘッダピンは I2C 制御のピン、電源のピン、LR音声出力のピンだけだったかな。が出ています。モジュールとしてはシンプルな構成です。

これを、 ESP32 のマイコンでコントロールしてラジオ受信を行います。

表面実装部品を取り付け

リード部品を取り付け。

各基板を接続して組んでいきました。このほぼ組みあがりで5時間くらいかかっています。

ファームウエアファイルを書き込んで完成です。一応、リポバッテリーが付いていますので、充電完了するかの確認でしばらく放置して充電完了確認などしてます。

少し使ってみた感じでは、感度は十分良いと思います。

自分の Si4735 DSP ラジオと並べてみたの図。ラジオチップも異なるし操作方法など全く別物なので比較はできませんが、いちばん下の基板にスピーカーがあるのは同じです。で、TEF6686 DSP ラジオの音が良く出ています。私の Si4735 ラジオは音の指向性が強くラジオ正面は結構聞こえるけど向きによって変化が大きいです。

私のは秋月マイクロスピーカー 1個50円を基板に貼り付けてますが、TEF6686 DSP ラジオは写真のようなプラスチックの箱型スピーカーです。お値段 1個400円超えと Aliexpress で買う部品にしては高い部類ですが、これが結構いい感じです。早速購入して自分の Si4735 DSP ラジオのスピーカーを交換してみたいと思ってます。現在輸送中なので届き次第交換して効果があれば、Si4735 DSPラジオのスピーカーは型番変更しようと思ってます。

Raspberry Pi Pico で Si4735 DSP ラジオ製作

最近は ATMEGA328P 終了の兆しが見えてきて、もうちょっとフラッシュやメモリの大きいマイコンに移行したいと思っていました。5V ならまだ Arduino MEGA2560 とかあって GPIO もたくさんあるので使っていく予定ですが、それ以外は Raspberry Pi Pico 中心でいいかなと思い始めるようになりお試しで使ってみました。前から ESP32 とかも持っているのですが ESP-IDF に慣れないのと、ESP-IDF は x.x のリリースされたバージョンに対しても更新をかけてきます。commit 番号によっては動かなくなったりもします。 Raspberry Pi Pico は現在 RP2040 チップだけなので SDK のリリースもシンプルです。ビルドも cmake のインタフェースなので理解できました。また Raspberry Pi Pico は MicroPython も動作するので、C/C++ で書くほどの物でない場合は MicroPython を使用する手も有りで、SDK の持つ基本的なGPIO操作やハイレベルAPIもポーティングされているので、とっかかりは MicroPython から始めるのいいと思いました。

Raspberry Pi Pico の基本をやるとき思いついたのが Si4735 DSP ラジオです。過去 ATMEGA328P にキャラクタ液晶つけて動かしたことがあったのですが、これなら i2c が動けばラジオチップは動くので、ラジオチップを動かすところから始めました。

試作用基板作成

ブレッドボードでやり始めたのですが LEDチカチカ程度とは違い配線が面倒。ということで Raspberry Pi Pico 用に GPIO ピンをピンヘッダに出す基板を作成。Raspberry Pi Pico が2個乗っかているのは一個は動作用でもう一つは PicoProbe という C/C++ で使うデバッガです。MicroPython では使用しません。ピンヘッダを3列出しているので、本来の信号線を配線するのに加えて Analog Discovery のロジックスコープもつけられます。これをMDF板に貼り付けて液晶とTTGOラジオといわれる基板も付けました。

開発環境選定

開発環境は最初から MicroPython に決めていました。初めてなので C/C++ SDK に慣れていなかったためです。また、ラジオの周波数表示などを液晶に出すため、グラフィック環境も欲しいということでググっていたら LVGL というグラフィックライブラリをみつけました。これも本家は C で書かれていますが、lv_micropython という MicroPython に LVGL がバインドされたものがあったので、これなら使えそうと思いました。gitgub の https://github.com/lvgl/lv_micropython にリポジトリがあります。

ファームウエアは ubuntu / Raspberry Pi OSなど Linux の環境であればリポジトリに書いてある手順通りにやれば作成できます。MSYS2 MinGW64 では MicroPython のクロス環境ビルド途中で、Windows のコマンドライン長限界を超えるものがあってエラーになります。make の変数を与えれば分割ビルドできそうなのですが、面倒なので やっていません。

プロトタイプ開発

python IDE の thonny を使って MicroPython のコードを書いていきます。GPIO/SPI/i2c などの使い方は MicroPython のドキュメント https://micropython-docs-ja.readthedocs.io/ja/latest/ に、LVGL グラフィックスライブラリは https://docs.lvgl.io/master/index.html にあります。

少しコーディングしては RUN させるというトライ&トライです。その結果フォントの組み込みなどの方法も理解出来て写真のようにいろいろなウイジェットが使えるようになりました。

  • 周波数をテンキーから入力して選局
  • 表示されいる周波数からステップチューニング
  • AM・FMなどバンドスキャン
  • 選局リストから放送局をタップすると選局

が主な機能です。

本番用基板作成

ここまで出来たら残るは本番用基板です。今回は ILI9341 の液晶に大きさを合わせました。上から液晶・ラジオ基板・マイクロスピーカーを貼り付ける基板の3枚です。

基板は何回か作り直ししましたが、それっぽい感じに仕上がりました。

回路図やアプリケーション本体などは、https://github.com/ngc6589/Si4735_Radio_RaspberryPiPico にて公開しています。

VN-L5 MarkII 人柱版 CW トランシーバーキット製作

JL1VNQ さん ( https://jl1vnq.blogspot.com/ ) が頒布されている CW トランシーバーキット VN-L5 が MarkII となりました。この MarkII キットの人柱版製作募集を Twitter でみかけたので、まだ頒布あるかと聞いた所最後の1台とのこと。お願いして頒布していただいた次第。

(写真や図はクリックすると大きくなります。スペアナ画面は元から小さいので除く)

思いの外大き目の箱で届きまして、過去製作したキットに比べて時間がかかりそうな予感でした。で、実際にもかかりました。また箱に貼られたラベルには 10W とありますが実際には 20W です。リチウム電池運用ならファイナルの電源電圧が低くなるので 10W 程度になると思います。

中身は、基板・パーツ一式・説明書です。説明書については部品表・回路図と組んだ時の写真だけで、旧版の説明書も合わせて読んで組むとの指示でした。人柱なのでそこら辺は問題ありません。

基板は3枚構成になっていて写真左上がコントロール(CTRL)基板。右上は送信(TX)基板。手前が受信(RX)基板になっています。裏面の写真は掲載していませんが、裏面にも実装する部分もあります。

結構時間はかかりましたが組みあがりました。組みあがったので保証認定を取るべく資料を作成します。今回は JARD に保証認定してもらうので、送信機系統図とスペクトラムアナライザの測定結果を添付します。

RIGOL スペアナの入力に 50dB のアッテネーターを接続して測ります。今回確認したのは次の3つです。

  • 送信出力
  • 近傍のスプリアス
  • 高調波

このキットの送信回路基板の LPF は 160mb 用と 80mb 用の2つだけなので、スペアナ測定は 1.8MHz と 3.5MHz の測定した結果を提出しました。

160mb 送信出力

スペアナの RBW/VBW を 10Hz SPAN 100Hz で見ました。結果 44.25dBm で 26.6W の出力となりました。160mb の工事設計は 25W で出すことにしました。

160mb 近傍

送信周波数近傍を確認します。Span 10kHz で測ります。RBW・VBW は 10Hz が良いのですが、RIGOL DSA815TG では測定時間がものすごく長くなるので、30Hz にして測定。これでも 12秒程度必要です。17dBm(50mW)以下かつ基本周波数の尖頭電力より 50dB 低い値をクリアしていました。

160mb 高調波

高調波は本来 9kHz から 1GHz の範囲を取らないといけないかもしれませんが、第5高調波あたりまで測りました。50dBm 以下なので問題ありませんでした。

80mb 出力

スペアナの RBW/VBW を 10Hz SPAN 100Hz で見ました。結果 43.23dBm で 21W の出力となりました。80mb の工事設計は 20W で出すことにしました。

80mb 近傍

送信周波数近傍を確認します。17dBm(50mW)以下かつ基本周波数の尖頭電力より 50dB 低い値をクリアしていました。

80mb 高調波

160mb 同様第5高調波あたりまで測りました。50dBm 以下なので問題ありませんでした。

送信機系統図作成

測定の結果申請いけそうなので資料作成をします。送信機系統図は、無線局免許状の記載で 1.8MHz帯、3.5MHz帯、3.8MHz帯の申請となります。なので、各周波数帯の送信周波数を記載。また新スプリアス規格で設計・製作している旨の記載は必要です。

キットの回路構成はファイナル送信出力の LPF が 160mb と 80mb の切り替えになっているので LPF が2つあること、送信出力も 160mb と 80mb でそれぞれ何ワット出るかを図に記載しておきます。

電子申請Lite 入力

電子申請 Lite の工事設計は以下のように入力

  • 変更の種別:増設
  • 適合表示無線設備の番号:空欄
  • 発射可能な電波の型式及び周波数の範囲情報
    希望する周波数帯
    1.9MHz A1A
    3.5MHz A1A
    3.8MHz A1A
  • 変調方式:空欄
  • 終段管
    名称個数:MTA100N10KRI3 x 2
    電圧:13.8V
  • 定格出力: 25W と 20W
  • 添付資料は測定資料と送信機系統図。保証認定のPDF

工事設計入力画面で、変調方式など入れないと入力完了のチェックで未入力欄がありますが続けますか?のような確認ダイアログが出ます。問題ないので続行でOKです。

申請状況

・JARD 保証認定 2022/11/06申請 2022/11/10 保証完了
・JARD から認定シール(普通郵便)待ち 2022年11月24日完了
届かなくて再送してもらったため、シール入手に日数がかかりました。
・近畿総通宛の変更申請 2022/11/10申請 2022/11/14 審査終了

ということで、無線局免許状に新しい無線機の追加が完了しました。

2023年5月中旬に本番リリースされたのに伴いまして、人柱版スプリアス測定の資料ダウンロードリンクは外しました。ご自身で作成お願いします。

Raspberry Pi Pico I/O 拡張基板

普段使用するマイコンは、Arduino UNO(ATMEGA328P) か Arduino MEGA2560( ATMEGA2560) を良く使っています。最近はマイコンに接続するモジュールも 3.3V のが多いので、Raspberry Pi Pico を使えるようにとお勉強始めたところです。

ESP32 も持っているのですが、ESP32-S(XTensa LX7) ESP32-C(RISC-V) の新製品が技適取って十分出回っていればこちらに行ったかもです。ESP32 の WROVER-E が技適あるので、これでもいいのですが。無線モジュール要らないなら今のところ Raspberry Pi Pico で十分かな。というところで、Pico を使い始めた次第です。

ちょこっと動かすだけなら、Raspberry Pi Pico に秋月の細ピンヘッダつければブレッドボードに差しても左右2列取れますので十分です。

最初はブレッドボードで始めたのですが、やっぱごちゃるなぁということで基板を作成。2×20 ピンヘッダに IO ピンを出しているので、ロジックアナライザの線を刺すこともできますし、SPI や I2C でバス共有するの予備端子としても使えます。

今は、こんな感じで使用しています。基板手前の Raspberry Pi Pico のソケットは Pico Probe デバッグのソケットです。現在 Micropython 勉強中なので openocd + gdb-multiarch は使用していないため手前の Pico Probe は外しています。

基板を10枚作ったので余りは頒布にのせました(売り切り終了)

Raspberry Pi Pico I/O 拡張基板(キット) | 頒布物のページ (em9system.com)

https://github.com/ngc6589/Raspberry-Pi-Pico_IO_Expansion-1

PZEM-004T v3.0 で商用電源の電圧と周波数をロギング

最初に、参考にしたサイトを掲載しておきます。

PZEM-004T v3.0 はアマゾンや Aliexpress で検索するとたくさん出てきます。今回はアマゾンで買いました。1週間ほどで到着です。何も気にせず買ったので、USBシリアルなしを買ってしまったようです。USBケーブル付きがあればそれを買うほうが楽です。

仕方がないので、ポケコンのファイル転送で使っていた FTDI の USB シリアルケーブルに犠牲になってもらうことにしました。使用する線は 5V, GND, TX, RX の4本です。USBシリアルを使うのは Raspberry Pi の USB ポートで使用するためです。マイコン基板と接続する場合は、マイコンの 5V, GND, TX, RX を直結するだけです。

USBシリアルの TX RX と基板の TX RX はクロスで結線しましょう。これ間違えると通信できません。

プラケースの蓋を外して、XH コネクタのポストを外して

USB シリアルの線を半田付け。スクリューターミナルNとLの所にコンセントからの電線を差し込んでネジ止めします。ハードの準備は以上です。

Raspberry Pi 側のプログラムは python で動かします。PZEM-004T v3.0 からデータを取得して、ambient にデータ送信するようにしています。

#!/usr/bin/env python3

import datetime
import time
import serial
import ambient
import requests
import modbus_tk.defines as cst
from modbus_tk import modbus_rtu

# sudo pip3 install git+https://github.com/AmbientDataInc/ambient-python-lib.git
# sudo pip3 install modbus-tk

if __name__ == "__main__":
    # Connect to the slave
    serial = serial.Serial(
                           port='/dev/ttyUSB0',
                           baudrate=9600,
                           bytesize=8,
                           parity='N',
                           stopbits=1,
                           xonxoff=0
                          )

    master = modbus_rtu.RtuMaster(serial)
    master.set_timeout(2.0)
    master.set_verbose(True)
    am = ambient.Ambient(チャネル番号, ' ライトキー ')

    while True:
        try:
            data = master.execute(1, cst.READ_INPUT_REGISTERS, 0, 10)
            result = am.send({'d1': data[0] / 10.0, 'd2': data[7] / 10.0})
            print(datetime.datetime.now(),
                    'voltage=',
                    data[0] / 10.0,
                    'freq=',
                    data[7] / 10.0,
                    'send status=',
                    result.status_code)
            time.sleep(60)

        except KeyboardInterrupt:
            print('exiting pzem script')
        except requests.exceptions.RequestException as e:
            print('request failed: ', e)

USBシリアルのポート名。/dev/ttyUSB0 のところは syslog を見て確認。
am = ambient.Ambient(チャネル番号, ‘Writeキー’)
ambient のデータ送信は、ご自身のグラフを作成するところで、チャネル番号、ライトキー、リードキーが発行されるので、そのチャネル番号、ライトキーを入れたら送信できます。

プログラムの起動は、raspberry pi 起動後手動でしています。
tmux or screen コマンドを起動する
上記 python プログラムを走らせる
tmux or screen から抜ける。
です。tmux や screen でプログラムを動かしておけば、teraterm とかが切れても動き続けますので良いです。

ambient に投げたデータは公開にしていますので、下記 URL からご覧いただけます。

自宅の商用電圧と周波数 -Ambient (ambidata.io)

上のプログラムには記載省略していますが周波数は 0.1Hz 単位なので、実際にグラフを出してみると見にくい感じになりました。2022年9月5日から 周波数データの3回平均したものも追加で表示するようにしました。

2023年2月3日 上記 ambient へのデータ投入は終わりました。理由は0.1Hz の分解では全く意味なしというところでした。周波数カウンタ作ったほうが良いと思いましたので、改めてやり直そうと思った次第です。

MCS-52 Basic 基板作成

ヤフオクを見ていましたら、BASIC-52 の基板を見つけたので購入。基板に書かれたアドレスから https://www.billy.gr/mcs-basic-52/ で公開されているガーバーファイルのようです。以前作成した BASIC-52 基板は EEPROM 領域がないため、プログラムの保存が出来なかったのですが、こちらの基板は EEPROM のソケットが付いています。

この基板を作成された方は EEPROM の代わりに DALLAS DS1230AB-70 という バッテリーバックアップ付き 32KB SRAM (NVRAM) を載せておられました。不揮発性メモリなので機能は果たしますが、Mouser 価格 4000円程度とお高い状況。また、EEPROM は HC138 のアドレスデコードで 8KB バウンダリになっているので、8KB 分しかつかいません。NVRAM はもったいないので AT28C64B など8KBx8bit の汎用EEPROMを使用することにしました。

WEBサイトを見ると基板のエラー情報が書かれています。

DC ジャックの GND 未配線は、DCジャックの端子を抵抗の切れ端で接続して、電源が入るようになりました。また、リセット回路からの信号は CPU のリセット端子まで来ていましたが、74HC32 のリセット信号が配線されるべき端子には来ていなかったためジャンパー飛ばして結線。私の所ではこの2か所手当することで動作しました。

*MCS-BASIC-52 V1.31*
READY

>erase       

READY
>
>10     REM Basic ROM directory
>20    ADR=8010H : PN=1
>30     IF XBY(ADR)<>55H THEN  END
>40    ADR=ADR+1 : BA=ADR
>50     IF XBY(ADR)=1 THEN  GOTO 80
>60    ADR=ADR+XBY(ADR): GOTO 50
>80     GOSUB 100: PRINT : PN=PN+1 : ADR=ADR+1:   GOTO 30
>100    PRINT "PRG",PN,"from ", :  PH1. BA, :  PRINT " to ", :  PH1. ADR,
>110    PRINT " (",ADR-BA,"bytes)",
>120   NB=XBY(BA)-2: IF NB<4 THEN RETURN
>130 IF XBY(BA+3)<>96H THEN  RETURN
>140    FOR XX=BA+4 TO BA+NB:PRINT CHR(XBY(XX)),: NEXT : RETURN
>prog
 1

READY

erase 命令で EEPROM 領域を初期化します。3分くらいかかるので気長に待ちます。その後プログラムを入れて、prog 命令を実行すると EEPROM にプログラムが保存されます。↑のプログラムは、EEPEOM にどんなプログラムが格納されているか表示するプログラムで、http://www.nomad.ee/micros/8052bas.shtml で公開されているものです。

>rrom

PRG 1 from  8011H to  8134H ( 291 bytes) Basic ROM directory

READY
>

rrom 命令を実行すると、EEPROM の1番目のプログラムを実行します。先ほど書き込んだ EEPROM に何が入っているかを表示するプログラムです。

>ram

READY
>new

>1 REM ASCII ART
>10 FOR Y=-12 TO 12
>20 FOR X=-39 TO 39
>30 CA=X*0.0458
>40 CB=Y*0.08333
>50 A=CA
>60 B=CB
>70 I=0
>80 T=A*A-B*B+CA
>90 B=2*A*B+CB
>100 A=T
>110 IF (A*A+B*B)>4 THEN GOTO 150
>120 I=I+1:IF I<=15 THEN GOTO 80
>130 PRINT " ",
>140 GOTO 170
>150 IF I>9 THEN I=I+7
>160 PRINT CHR(48+I),
>170 NEXT X
>180 PRINT
>190 NEXT Y
>
>prog
 2

READY
>rrom

PRG 1 from  8011H to  8134H ( 291 bytes) Basic ROM directory
PRG 2 from  8136H to  8417H ( 232 bytes) ASCII ART

READY
>rrom2

新しいプログラムを追加します。prog を実行すると EEPROM の2番目に格納されます。rrom2 と引数2で2番目を実行できます。

マニュアルを見ると、電源投入時に自動起動するプログラムの設定などもあるようです。また GPIO ピンもCPUについているので簡単に使えますし、このマイコンボードの右端にはメモリマップドI/Oの端子も出ています。プログラムのセーブが出来るマイコンボードは当時としては優れた機能だったかと思います。普通はROM差し替えですしね。まぁBASIC言語なので実行速度はお察しというところで。

E1DA Cosmos ADC 購入

やっとのことで、Cosmos ADC を購入しました。私は、E1DA Aliexpress Store https://ja.aliexpress.com/store/5142044 から購入しました。Aliexpress Standard shipping で2週間程度だったかと思います。

この Cosmos ADC の本体に何も信号を入れない状態のノイズが全体的に低く、アマチュアにはもったいないくらいの性能です。このグラフを出しているソフトは REW というソフトウエアです。

この Cosmos ADC に、USBオーディオインターフェースとプローブの端子を付けて、1kHz の信号を見てみました。

REW の信号ジェネレーターから 1kHz -3dB の信号を出して、アナライザ画面の表示を見たところです。THD+N 106.2dB と測定できます。

自作アンプの周波数特性や、入出力特性は Analog Discovery と FRA Plus で十分なのですが、歪率とノイズフロアは Analog Discovery ではどうにもなりませんでした。今回入手した Cosmos ADC なら、作ったアンプの歪率が高いとか、電源ノイズが出まくっているとかなどの確認が、私のようなアマチュアでも簡単に出来るようになりました。

MCS8051 BASIC-52 基板を買って組んでみました

電脳伝説さん https://vintagechips.wordpress.com/ の記事に、8752同等品でBASIC-52が動いた というのがありました。面白そうだったので、組んでみることに、基板はオレンジピコショップ https://store.shopping.yahoo.co.jp/orangepicoshop/ さんにて基板とCPUなどを購入しました。

今回組み立てた BASIC-52 基板は 8052 (Flashメモリ 8k) で動作します。↑の写真にあるようなCPU+メモリだけの最小構成のものです。今回購入した CPU は STC89C52RC(90C) というもので中華製互換チップです。これは、stc-isp-v6.xx.exe の書き込みソフトを使用して USB シリアルから Flash 書き込みをするタイプの CPU です。

http://www.stcmcudata.com/ というところが、製造メーカーの Web サイトです。このサイト右側に資料の pdf ファイルや STC-ISP ソフトウエアのダウンロードリンクがあります。書き込みソフトウエアについては、indows Defender が 「Trojan:Win32/Wacatac.B!ml」 を検出してすることがあるので、ダウンロードした .zip をウイルススキャンしてから unzip してください。 Wunzip したらドライバーなどのフォルダがありますが、何もインストールする必要はありません。stc-isp の exe ファイルをダブルクリックして起動するだけです。

書き込みソフトは電脳伝説さんの資料にあった、
http://www.stcmcudata.com/STCISP/stc-isp-15xx-v6.88G.zip
や、その後のリリース
http://www.stcmcudata.com/STCISP/stc-isp-15xx-v6.89G.zip
http://www.stcmcudata.com/STCISP/stc-isp-15xx-v6.89G-tiny.zip
は Windows Defender にひっかかりません。

なお、BASIC-52 については、1.3 というのが最新版です。ソースはググると出てきますが、A Tiny 80(C)32 BASIC Board https://www.dos4ever.com/8031board/8031board.html に、ソースファイルと HEX がおいてあります。ダウンロードした HEX ファイルを ST89C52RC や AT89S52 などに書き込めば BASIC-52 が起動します。もしアセンブラでアセンブルしてみたい時は、ASEM-51 http://plit.de/asem-51/final13.htm というから v1.3 をダウンロードしてください。asem5113 を展開したフォルダでコマンドプロンプトを起動し、アセンブルしたら hex ファイルを作成することができます。

HEXファイルの書き込み(STC89C52RC)

ST89C52RC の場合は、STC-ISP を使用して、USBシリアル経由でフラッシュメモリの書き込みを行います。

  • ボードの電源を切る
  • stc-isp を起動する
  • MCU TYPE : STC89C52RC/LE52RC を選択する
  • シリアルポートを選択する
  • ファイル→Open Code File からダウンロードした HEX ファイルを開く
  • H/W Option のチェックボックスを確認する。Enable 6T にチェックを付けると倍速モードになります。
  • Download/Program ボタンをクリックする
  • ボードの電源を入れる
  • フラッシュメモリへの書き込みが行われる

HEXファイルの書き込み(AT89S52)

AT89S52 に書き込む場合は USBASP アダプタのファームウエアを書き換えて avrdude コマンドでフラッシュメモリの書き込みを行います。(TL866 II Plus などのパラレルライターを持っていればそれでも可能)

USBASP という AVR マイコンの書き込みアダプタがあります。これはアマゾンとかで検索すれば2個セットなどがたくさん出ています。AVR マイコンの書き込み機を持っておられない方は、2個セットがおすすめです。USBASP 用 AT89 対応ファームウエアは https://www.avrfreaks.net/comment/2109556#comment-2109556 に usbasp_AT89.zip として掲載されています。これをダウンロードして展開。main.hex というファイルがあるので、これを USBASP に書き込みします。USBASP は ATmega8(A) なので手持ちの AVR 書き込み機や、2個セット USBASP のうち1個使って、 AT89 用 hex を書き込みを行います。

  • 2個ある USBASP のうち1個の JP2 ジャンパをショーして、ファーム更新できるようにする
  • もう1個の USBASP とケーブルで接続し、USBポートに接続。avrdude コマンドでファームウエア更新をする
avrdude -c usbasp -p m8 -U flash:w:main.hex:i
  • ファームウエアを書き終わった USBASP の JP2 ジャンパを外す。(AT89対応 USBASP完成)
  • AT89 対応 USBASP を BASIC-52 ボードと接続する

結線は、MOSI/MISO/SCK/RESET と電源ピンです。USBシリアルから電源供給している場合は、USBASP から電源供給しないよう注意してください。avrdude コマンドでの書き込み例は以下のようになります。

$ avrdude -C avrdude.AT89 -p s52 -c usbasp -P usb -Uflash:w:version_1p3_hex.HEX:i -v

avrdude.exe: Version 7.0-20220610 (cb11423)
             Copyright (c) Brian Dean, http://www.bdmicro.com/
             Copyright (c) Joerg Wunsch

             System wide configuration file is "avrdude.AT89"

             Using Port                    : usb
             Using Programmer              : usbasp
             AVR Part                      : AT89S52
             Chip Erase delay              : 500000 us
             RESET disposition             : dedicated
             RETRY pulse                   : RESET
             Serial program mode           : yes
             Parallel program mode         : yes
             Timeout                       : 200
             StabDelay                     : 100
             CmdexeDelay                   : 25
             SyncLoops                     : 32
             PollIndex                     : 4
             PollValue                     : 0x69
             Memory Detail                 :

                                               Block Poll               Page                       Polled
               Memory Type Alias    Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
               ----------- -------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
               flash                  33    12     0    0 no       8192  256     32   400   900 0x00 0x00
               signature               0     0     0    0 no          3    1      0     0     0 0x00 0x00
               atmelsig                0     0     0    0 no         32    1      0     0     0 0x00 0x00
               lock                    0     0     0    0 no          1    1      0     0     0 0x00 0x00

             Programmer Type : usbasp
             Description     : USBasp, http://www.fischl.de/usbasp/

avrdude.exe: auto set sck period (because given equals null)
avrdude.exe: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude.exe: Device signature = 0x1e5206 (probably s52)
avrdude.exe: NOTE: "flash" memory has been specified, an erase cycle will be performed
             To disable this feature, specify the -D option.
avrdude.exe: erasing chip
avrdude.exe: auto set sck period (because given equals null)
avrdude.exe: reading input file "version_1p3_hex.HEX"
avrdude.exe: writing flash (8192 bytes):

Writing | ################################################## | 100% 6.16s

avrdude.exe: 8192 bytes of flash written
avrdude.exe: verifying flash memory against version_1p3_hex.HEX:

Reading | ################################################## | 100% 1.60s

avrdude.exe: 8192 bytes of flash verified

avrdude.exe done.  Thank you.


BASIC-52 とは関係ないですが、C言語でプログラムをする場合は sdcc や、Keil μVision5 の C51 コンパイラが使用可能です。

BASIC-52 は EPROM/EEPROM 書き込み命令も持っていたりするのでおもしろいと思いますが、この機能は今回作成した基板では試せません。

興味を持たれたら BASIC-52 で検索してみると検索結果が多く出ます。それだけトライされている方が多いということかと思います。

TL866II PLUS 25V/21V アダプターを作った(2764/27128版)

一つ前の記事、 TL866II PLUS 25V/21V アダプターを作った で 2716/2732 対応のアダプタ基板を作成しました。今回はバリエーションで 28ピンソケットのプログラミング電圧=1Pin の対応で基板を修正しました。

回路図や部品表などは、https://github.com/ngc6589/TL866II-PLUS-25V-21V-Adapter-for-2764-27128 にて公開しています。

このアダプタは 2764や 27128 など VPP=1Pin が対象です。作ってみて試しに手持ちの 2764 27128 に書き込みをしてみました。特に問題なく書けました。

余った基板は https://www.em9system.com/?p=989 にて頒布します。

TL866II PLUS 25V/21V アダプターを作った(2716/2732版)

TL866II PLUS のプログラマーは EEPROM などの書き込みや、ATMEGA328P のヒューズリセットなどお手軽でよいのですが、EEPROM となると書き込み用電圧が 18V までとなっています。この前の機種では 21V まで出たのですが現在は通販から消え去ってしまってます。今更 2716 を書くことは APPLE II のメンテで必要になるくらいなのですが、一つ作っておこうということで作っちゃいました。

回路図や部品表などは、https://github.com/ngc6589/TL866II-PLUS-25V-21V-Adapter にて公開しています。

このアダプタは 2716 VPP=21Pin 2732 VPP=20Pin が対象です。作ってみて試しに手持ちの 2716 2732 に書き込みをしてみましたが、 2716 は特に問題なし。2732 は書き込めず悩みました。ググった結果 XGpro というこのプログラマのアプリケーションにバグがあってワークアラウンドとして 2732 の 18Pin(チップイネーブル)をGNDに落として書き込むというのが今の状況です。これをすれば私のところでも書き込みは出来ました。

今回は初版とあって基板にミスがありますが余った基板を https://www.em9system.com/?p=965 にて頒布します。