2020年3月19日木曜日

adafruit Trinket M0 に serial port を追加する方法

 商品説明ページの説明を読むと(Native hardware SPI, I2C and Serial available on two pads so you can connect to any I2C or Serial device with true hardware support (no annoying bit-banging). You can have either one SPI device or both I2C and Serial.)、簡単にできそうに思えたのに、やってみたら 4-5 時間かかったのでメモ。

#include <Arduino.h>   // required before wiring_private.h
#include "wiring_private.h" // pinPeripheral() function

#define PIN_SERIAL2_RX       (2ul) // PA09
#define PAD_SERIAL2_RX       (SERCOM_RX_PAD_1)
#define PIN_SERIAL2_TX       (0ul) // PA08
#define PAD_SERIAL2_TX       (UART_TX_PAD_0)

Uart Serial2( &sercom2, PIN_SERIAL2_RX, PIN_SERIAL2_TX, PAD_SERIAL2_RX, PAD_SERIAL2_TX ) ;

void setup() {
    Serial2.begin(9600);
    pinPeripheral(0, PIO_SERCOM_ALT);
    pinPeripheral(2, PIO_SERCOM_ALT);

}

void SERCOM2_Handler() {
    Serial2.IrqHandler();
    }

パラメータの変更ができるところはほぼ無し。転送速度と、多分 TX/RX ピンの入れ替えぐらい。

・大元(Arduino ZERO, MKRZero, MKR1000)の説明はこちら

・Arafruit xxx Mx 向けの追加資料はこちら

・PA08, PA09 を使っている理由
 こちらの図にある通り、Trinket M0 で外部に引き出されているポートは PA02, PA06, PA07, PA08, PA09, PA18。このうち PA06, PA07 はオリジナルの Serial で使用。
 こちらの図(説明はこちら)にある通り、PA02 に SERCOM のピンを割り当てることは不可。

・sercom2 を使っている理由
 この pdf の Available SERCOM & Pins の項目にあるが、PA08, PA09 を使えるのは sercom2 だけ。

追記
 サンプルプログラムを gihub に置いた
追記2
 ちょっと整理して qiita にも投げた



2020年3月7日土曜日

購買:ネジはホームセンターには無い

 お客さんから「3Dプリンターで、こんなのができたらいいなぁ」という要望をいただいて、ちょっとしたモノを作ってみた。ネジ止めが必要なので皿小ねじ M3 12mm,16mm、M3 4mm のスペーサー、M3 8mm の両ネジスペーサーが必要になった。

 近所の、ちょっと大きなホームセンターに、2-30m はある通路の両側にネジがびっしり並んでいるのを思い出して買いに行った。

 結果、無かった。一つもなかった。車を出して片道 10分ほど、探した時間は 30分ほど。小一時間無駄にした。

 結局モノタロウに発注。

 次からは最初からモノタロウにしよう...

 

2020年1月16日木曜日

PC:Windows10 + A10-7860K + ASRock FM2A88M Extreme4+ R2.0 で苦労した話

 年が明けて少し時間が出来たので、余っていたパーツでサブの PC を組もうとおもったらものすごく苦労した。構成は Windows10 + A10-7860K + ASRock FM2A88M Extreme4+ R2.0。症状は、使っていると突然フリーズしてしまう。リブートとかブルースクリーンになるのではなく、突然ピタリと止まってしまう。

 あれこれやって結局使えるようになったのだが、なぜか詳細を本家ブログに書いてしまったので、こちらにはリンクだけを残す。

2020年1月13日月曜日

PCトラブル:SSD がお亡くなりに...

トラブル続きのメインPC、今度はSSDがお亡くなりになった ><

電源を入れてOSが立ち上がる途中で画面がいつまでも変わらなくなり、マウスカーソルは表示されているがマウスを動かすとカクカクと動く感じ。再起動すると全くOSを読み込まない。

BIOS を開いて調べてみると、SSDを認識していない。抜き差ししたり、設定を変えたり、あれこれ試したが、結局にどうにもならなかった。

教訓:SSDは突然全く動かなくなる

HDDはだんだん調子が悪くなったりデータが少しずつ壊れていくパターンが多いので、それなりデータのバックアップができるのだが、今回のSSDの場合はそれらしい予兆がほとんどなかった。シャットダウンに異様に時間がかかったことがあったが、これもそんなに珍しいことではない。

画像データはや音楽データはHDDに保管していたので被害はなかったが、五日ほどかけてDelphiで作ったWinodwsアプリのソースが影も形もなく消えてしまったorz。あと、確定申告に必要な、クレジットカードの支払い明細データも。税務調査がきたらどうしよう...

2020年1月6日月曜日

PCトラブル:HDD を正しく認識しなくなった

PCにHDDを増設する際、もともとついていたHDDのSATAケーブルの接続先(マザーボード上のコネクタ)を別の場所に移したら、HDDを正常に認識しなくなった。Windowsの「ディスクの管理」でも CrystalDiskInfo でも、ドライブとして認識はするが容量やパーティションなどがでたらめな値を返す。

よくよく調べていくと、BIOS に、HDD のパラメータを起動時に毎回読みだすか、最初にHDDを認識した時だけ読みだして、それ以降はずっと同じものを使うかの切り替え設定があった。一回だけ読みだすだったのを毎回読みだすにしてトラブル解決。

PC の起動時間が少し伸びたが、良いことにしよう。

PCトラブル:HDD アクセス不調

メインPCにHDD増設後、しばらくは快調に動いていたのだが、次第にHDDへのアクセスが異様に時間がかかるようになる。最初は増設した HDD だけかと思ったのだが、最終的にはすべての HDD と SDD にまともにアクセスできなくなる。

増設時にリトライを何度もかけたせいで HDD にトラブルか?と思ったが、以前同様のトラブルの経験を思い出して SATA ケーブル交換。トラブルは無事直った。

PCトラブル:HDD が何度もリトライする

開発マシンに HDD を増設したら、もともとあった HDD にアクセスできなくなった。ディスクを回転させようとして、何度もリトライする音がする。

あれこれ試していくと、HDD に接続する電源コネクタを差し替えたら動くようになった。コネクタの接触不良だったようだ。

使えないコネクタにテープを張ってわかるようにして、一件落着。