2020年7月23日 (木)

ZK-80で足し算

20200723

 ZK-80で足し算をやってみました。
Aレジスタに0x16を入れておいて,そこに0x24を加えます。んで,答(Aレジスタの内容)は8010番地に書き込みましょう。

電子ブロック工房さんの JavaScript Z80 tiny assembler を使うと便利です。

8000: LD A,16          3E 16
8002: ADD A,24        C6 24
8004: LD (8010),A    32 10 80
8007: RET                C9 

 下の動画のように,パチパチ入力してRUNすると,8010番地に答の0x3Aが書き込まれてるのが確認できます。そうか,42年前に僕の友人はこういうことをやって遊んでたのか。
なんとなく活動記録。さんのところからリンクされてる 8080の命令セットの説明書をちゃんと読んで勉強してみようかな。

| | コメント (0)

2020年7月21日 (火)

TK-80互換機 ZK-80のキット

20200721-zk80

 1976年に発売されて大ヒットしたマイコンTK-80の互換機ZK-80のキットをaitendoで買って組み立ててみました。
TK-80は工学部電気電子系へ進学した友人の間では流行ってましたが,僕は全然関心がありませんでした。で,まったくニーモニックや機械語に触れることもなく大学時代を過ごし,就職後に初めて買ったコンピュータ(FM-8)で覚えた言語はBASICでした。
 定年退職後ヒマだし,aitendoの「ミニ版ZK-80組立てキット」は2,500円というリーズナブルなお値段なので,つい手が出てしまったというわけです。

 キットとしては部品点数も少ないし,あっという間にでき上がったのでネットで拾ったプログラムをパチパチ入力してるときに「あれ?4桁LEDのアドレス表示部とデータ表示部が逆だぞ」と気づきました。
回路を設計したピコソフト(株)のWebサイトのFAQを見てみたらその答えがありました。
「4桁LEDは二つ使用していますが,片方はアノードコモン,他方はカソードコモンで別物です。説明書にあるように,アドレス表示部にはアノードコモンのLED,データ表示部にはカソードコモンのLEDを付けてください。」

「うわ,そうだったのか! 気づかなかったー!」
逆に取り付ける確率は50%ですが,やらかしました。さあここからが大変。ハンダ吸取線や吸取器を使って悪戦苦闘すること30分。やっと取り外しに成功して正しい位置に付け直しました。
 しかし,電源を入れてみると7セグLEDのセグメントのひとつが点灯しません。取り外すときに基板のパターンを剥がしてしまったようです。回路図を見ながらテスターで調べ,切れてるっぽい箇所を見つけて配線。7セグLEDも無事点灯して,やっと完成です。
さっきのプログラムを入力してRUNすると,ちゃんと動いてるみたいです。やれやれ。

 ところが,また不具合発見。一番右上のRESETボタンが効かないのです。基板の表を見ても裏を見ても,このスイッチはどこにもつながってません。aitendoのキットの基板はこういうミスがよくあるんだよなあ。
回路図を見て,このスイッチはマイコンの1番ピン(MCLR)とGNDにつなぐことを確認して配線しました。この写真をごらんください ↓
20200721

 手間取りましたが,RESETボタンも効くようになってやっと完成! ↓ こんなサンプルプログラムがあらかじめ入ってました。

 

| | コメント (0)

2020年5月 9日 (土)

micro:bit (5) スクロール時計

Microbit_scroll_clock

 以前,大阪日本橋のシリコンハウス共立で買ったmicro:bit用Breakoutボードを使ってみました。これを使うとmicro:bitが持つたくさんのGPIOを簡単に利用できるようになるので便利ですよ。マルツパーツ千石電商でも買えるようですね。

これにRTC(リアルタイムクロック)DS3231をつないで,スクロールクロックを作ってみました。(スクロールクロック,これで何度目かなw )
もちろん,Arduino IDE でスケッチを書きました。

//micro:bit スクロールクロック

#include <Wire.h>
#include <RtcDS3231.h>
#include <Adafruit_Microbit.h>
Adafruit_Microbit_Matrix microbit;
BLEPeripheral blePeripheral = BLEPeripheral();
RtcDS3231<TwoWire>
Rtc(Wire);

void setup() {
  Rtc.Begin() ;
  blePeripheral.begin();
  microbit.begin();
  //RtcDateTime compiled = RtcDateTime(__DATE__, __TIME__) ;
  //Rtc.SetDateTime(compiled) ;
}

void loop() {
  char buff[12] ;
  RtcDateTime dt = Rtc.GetDateTime() ;
  //sprintf(buff, "%04u/%02u/%02u", dt.Year(), dt.Month(), dt.Day()) ;
  //microbit.print(buff) ;
  sprintf(buff, " %02u:%02u:%02u", dt.Hour(), dt.Minute(), dt.Second()) ;
  microbit.print(buff) ;
}

| | コメント (0)

2020年5月 7日 (木)

micro:bit (4) 温度計 

 micro:bit のダイ温度をLEDマトリクスでスクロール表示してみました。
sd_temp_get()の戻り値がセ氏温度の4倍なので,4で割ってから表示します。

//micro:bit 温度計

#include <Adafruit_Microbit.h>
Adafruit_Microbit_Matrix microbit;
BLEPeripheral blePeripheral = BLEPeripheral();
int32_t temp;

void setup() {
  Serial.begin(9600);
  blePeripheral.begin();
  microbit.begin();
}

void loop() {
  sd_temp_get(&temp);
  microbit.print(temp/4);
  microbit.print("C ");
  Serial.println(temp/4);
  delay(100);
}

| | コメント (0)

2020年5月 5日 (火)

micro:bit (3) Arduino IDE による開発環境ができた

 昨日からの続きです。ネットで解決策を検索してJH1LHVさんのサイトを見つけました。
ココで「microbit-adv.hexをダウンロードして,micro:bitのフォルダに放り込めばよい」ということらしいので,やってみました。
20200505_1

 しかし,やはりスケッチの書き込みはできるものの,プログラムが実行されません。
んで次は「Flashing a SoftDevice」ってのをやってみました。ココに書いてあるこれ ↓ です。
20200505_2

 上の手順通り,Arduinoのスケッチが置いてあるフォルダ下に tools/nRF5FlashSoftDevice/tool/ というディレクトリを作って,toolの中に nRF5FlashSoftDevice.jarを放り込みます。
 Arduino IDEを起動して,ツール > nRF5 Flash SoftDevice をクリックします。
20200505_3

ところが,ここでエラーが出て先へ進めません。うーむ...

 またまた検索してこのサイトを見つけました。
ココs130_nRF51_201.zip をダウンロードし,展開して得られる s130_nrf51_2.0.1_softdevice.hexC:\Users\USER\AppData\Local\Arduino15\packages\sandeepmistry\hardware\nRF5\0.6.0/cores/nRF5/ SDK/components/softdevice/s130/hex/ の中へ放り込んでやればいいみたい。(僕はWindows10を使ってます)

 もう一度 Arduino IDE で ツール > nRF5 Flash SoftDevice をクリックすると,今度はうまくいきました。やれやれ。
Done_flashing_softdevice

件の matrixdemo もちゃんと動きました :)

| | コメント (0)

2020年5月 4日 (月)

micro:bit (2) ライブラリを3つインストールしたが...

 昨日に引き続き,このサイトを参考にしながら Arduino IDE で micro:bit のプログラミングができるように環境整備中です。

 まずはBLEPeripheralライブラリのインストールです。BLE(Bluetooth Low Energy) 用のライブラリなんでしょうな。
スケッチ > ライブラリをインクルード > ライブラリマネージャ で 検索すれば見つかります。
Blep

 続いて Adafruit GFX ライブラリのインストール。これはグラフィックディスプレイ用かな。
Adafruit_gfx

 最後に Adafruit Microbit ライブラリ。LEDマトリクスとBLE用?
これを入れるとmicro:bit用のスケッチ例がたくさん入ります。
Adafruit_microbit

 さて,これで準備完了っぽいので,ファイル > スケッチ例 > Adafuruit microbit Library > matrixdemo を書き込んでみました。
ところが,書き込み自体はうまくいったのに LEDマトリクスは沈黙したまま。
なんでやねん。

| | コメント (0)

«micro:bit (1) やっぱりArduino IDEを使いたい