今動いている状況は、
Pin15 VDD 3.3V
Pin16 VSS GND
Pin3 PIO0_12 - 3.3V
Pin4 nRESET - 10KΩでプルアップ
Pin6 SWCLK - JTAG_TCLK_SWCLKX
Pin7 SWDIO - JTAG_TMS_SWDIOX
VDD と VSS の間は、0.1μF x 2
2020年5月13日水曜日
2020年5月10日日曜日
LPC812:シリアル通信を115200bps でする方法
結論から書くとメインクロックが 12MHz ではダメ。24MHz にすれば OK。
LPCXpressoBoard OM13053 + MCUXpresso IDE の組み合わせで、MCUXpresso
SDK のサンプルプログラム lpcxpresso812max_usart_transfer_ring_buffer をベースに開発を行っているのだが、オリジナルのボーレート 9600bps を 115200bps に変更すると動かない。具体的には fsl_usart.c の USART_SetBaudRate() 内の
LPCXpressoBoard OM13053 + MCUXpresso IDE の組み合わせで、MCUXpresso
SDK のサンプルプログラム lpcxpresso812max_usart_transfer_ring_buffer をベースに開発を行っているのだが、オリジナルのボーレート 9600bps を 115200bps に変更すると動かない。具体的には fsl_usart.c の USART_SetBaudRate() 内の
assert((((srcClock_Hz >> 4U) / brgval) - baudrate_Bps) < ((baudrate_Bps / 100) * 3));が例外を吐いてプログラムを止める(JTAG デバッガ万歳!!)
2020年5月3日日曜日
LPC812:秋月の LPCXpressoBoard OM13053 は MCUXpresso IDE で使えそう
結論から書くと、MCUXpresso IDE を普通にインストールして、Instaled SDKs で LPCXpresso812MAX を指定して、Quickstart Panel -> Create or Import a project -> Import SDK examples(s)... でも LPCXpresso812MAX を指定。Project Explorer でサンプルプログラムの lpcxpresso812max_led_blinky を選択して Quickstart Panel の Debug Your project -> Debug をクリックすると、普通にビルドできて LPCXpressoBoard OM13053 にインストールされ LED が赤で点滅した。
ただし、Eclipse の経験がそれなりにないと相当苦労するかも。
ただし、Eclipse の経験がそれなりにないと相当苦労するかも。
3Dプリント:縦に長いモノの出力
画像のような、底面が対角距離13mm の六角形、高さ 130mm のナットを出力した。
プリンタ FLSUN QQ-S
フィラメント SUNLU PAL+ 茶箱
データ https://www.thingiverse.com/thing:4181423
スライサー Slic3r
フィラメント温度 210
ベッド温度 75℃(first) -> 70℃
Layer Height 0.4mm(first) -> 0.2mm
brim 15mm
speed
Perimeters 30mm/s
Infill 80mm/s
Travel 60mm/s
First 15mm/s
----
最初ベッドを 65->50 、brim を 5mm で出力したら、途中でベッドから外れてしまって失敗。4回目でようやく成功。ベッド温度 70 は、プリンタ付属のテストデータの値。
ちなみにベッドの温度を 65℃->50℃ としたのは、ベッドとの接地面積が多い造形物の場合、70℃だと反りがきつくなるため温度を下げていた。
プリンタ FLSUN QQ-S
フィラメント SUNLU PAL+ 茶箱
データ https://www.thingiverse.com/thing:4181423
スライサー Slic3r
フィラメント温度 210
ベッド温度 75℃(first) -> 70℃
Layer Height 0.4mm(first) -> 0.2mm
brim 15mm
speed
Perimeters 30mm/s
Infill 80mm/s
Travel 60mm/s
First 15mm/s
----
最初ベッドを 65->50 、brim を 5mm で出力したら、途中でベッドから外れてしまって失敗。4回目でようやく成功。ベッド温度 70 は、プリンタ付属のテストデータの値。
ちなみにベッドの温度を 65℃->50℃ としたのは、ベッドとの接地面積が多い造形物の場合、70℃だと反りがきつくなるため温度を下げていた。
2020年4月5日日曜日
KiCAD:ラベルとテキストは違う
KiCADで基板を作成中に、LED をドライブするトランジスタアレイの入力と出力に、わかりやすいように、ネットラベルで色(RED,BLUE etc...)を入れた。するとエレクトリカル ルール チェックで入力と出力が接続されていることなってしまってエラーが発生。どんなに調べても接続されていないので、ネットリストを作成して Pcbnew で開いてみると、確かに入力と出力が接続されている。
なぜ...。
そこだけパターンをひかなければ良いだけなのだが、チェックで原因不明のエラーが残るのはどうにも気持ちが悪い。いろいろと調べたり試したりしているうちに、ハタと気が付いた。
「ラベル」って、単に回路図上にテキストを配置するだけじゃなくて、「ラベル」のある端子を接続するのでは?
入力側のラベル名を出力と変えてやると、ルールチェックでエラーが出なくなった。なるほど、ラベルは文字を置くだけではないのか。では、文字だけを置きたいときは?
右端のアイコンの並びに「テキストを配置」がありました。
何か月後かに同じミスをしないように、メモを残す。
なぜ...。
そこだけパターンをひかなければ良いだけなのだが、チェックで原因不明のエラーが残るのはどうにも気持ちが悪い。いろいろと調べたり試したりしているうちに、ハタと気が付いた。
「ラベル」って、単に回路図上にテキストを配置するだけじゃなくて、「ラベル」のある端子を接続するのでは?
入力側のラベル名を出力と変えてやると、ルールチェックでエラーが出なくなった。なるほど、ラベルは文字を置くだけではないのか。では、文字だけを置きたいときは?
右端のアイコンの並びに「テキストを配置」がありました。
何か月後かに同じミスをしないように、メモを残す。
2020年3月26日木曜日
ZED-F9P + RTKCONV(b33) だと raw DATA の L2 を処理できない
結論から行くと、RTKLIB(b33)ではなく、Demo5 を使うべし。
----
MG1 を使っているお客さんから、「ubx raw データを RKTLIB で処理したが、L2 が表示されない」と連絡を受けた。
お客さんにもらったデータを自分のところで RTKLIB で処理してみると、確かに L2 が出てこない。ZED-F9P の USB から直接出力されたものを TeraTerm でログに落として RTKLIB で処理しても L2 が出てこない。これは MG1 のプログラムの問題ではなく ZED-F9P の設定の問題か?と思って調べてみてもそれらしいものが見つからない。
もしやと思って u-blox の Support Community で「F9P raw rtklib」で検索すると、こんな書き込みが。
Multi-frequency RINEX from F9T with RTKLIB
ここにある返信の「Tim over at RTK Explorer would have an appropriate and functional fork」から探すと Demo5 なる改造版を見つけた。これの RTKCONV を使うと L2 が出てきた。
RTKCONV だけでなく、RTKPLOT も表示が違う。お客さんからの情報によると RTKPOST もだいぶ修正されているらしい。
----
MG1 を使っているお客さんから、「ubx raw データを RKTLIB で処理したが、L2 が表示されない」と連絡を受けた。
お客さんにもらったデータを自分のところで RTKLIB で処理してみると、確かに L2 が出てこない。ZED-F9P の USB から直接出力されたものを TeraTerm でログに落として RTKLIB で処理しても L2 が出てこない。これは MG1 のプログラムの問題ではなく ZED-F9P の設定の問題か?と思って調べてみてもそれらしいものが見つからない。
もしやと思って u-blox の Support Community で「F9P raw rtklib」で検索すると、こんな書き込みが。
Multi-frequency RINEX from F9T with RTKLIB
ここにある返信の「Tim over at RTK Explorer would have an appropriate and functional fork」から探すと Demo5 なる改造版を見つけた。これの RTKCONV を使うと L2 が出てきた。
RTKCONV だけでなく、RTKPLOT も表示が違う。お客さんからの情報によると RTKPOST もだいぶ修正されているらしい。
2020年3月19日木曜日
CPU が STM32 の Arduino で SerialEvent を使う方法
adafruit Trinket M0 を Arduino IDE から使って SerialEvent を使おうとしたらなかった。サンプルソースに
ってあるけど、STM32 based board も追加希望。
嘆いていてもしようがないのでやる方法を見つけた。
C:\Users\<ユーザー名>\ドキュメント\ArduinoData\packages\adafruit\hardware\samd\1.5.11\variants\trinket_m0\variant.cpp
の最後の方にある
を
に変更。そのあとに自前のスケッチに
を追加。
NOTE: The serialEvent() feature is not available on the Leonardo, Micro, or other ATmega32U4 based boards.
ってあるけど、STM32 based board も追加希望。
嘆いていてもしようがないのでやる方法を見つけた。
C:\Users\<ユーザー名>\ドキュメント\ArduinoData\packages\adafruit\hardware\samd\1.5.11\variants\trinket_m0\variant.cpp
の最後の方にある
void SERCOM0_Handler() {
Serial1.IrqHandler();
}
void SERCOM0_HandlerX() {
Serial1.IrqHandler();
}
に変更。そのあとに自前のスケッチに
void SERCOM0_Handler() {
/* 元の割り込みハンドラの実行前にさせる処理 */
Serial1.IrqHandlerX();
/* 元の割り込みハンドラの実行後にさせる処理 */
}
/* 元の割り込みハンドラの実行前にさせる処理 */
Serial1.IrqHandlerX();
/* 元の割り込みハンドラの実行後にさせる処理 */
}
を追加。
登録:
投稿 (Atom)