4014HVをソフトウェアシリアルで動かすことができました。 TXのみの実験です。 8.68μs(115200bpsの1クロック分)周期でタイマー割り込みを発生させて、1ビットづつ送信します。
PUSH POPなど基本割り込み処理で約1.2μsかかってました。 1個のソフトTX処理で約1.3μsかかってます。 パリティーの処理時間は、あまり気にしなくて良かったです。
まず、自作ターミナルソフトできちんとDATAが送信されていることを確認。 とりあえず思いとおりのDATAが送信されていたので、ほっとしました。
さて、いよいよ4014の制御です。 電源電圧は10Vです。 ポジションコマンドの3バイトを送って、ポジションが変わるのが確認できました。 やれやれです。 ためしに、スピードのパラメーターを変えてみました。 おー、スピードも変わる。 スピード1は、かなり遅いです。
で、ここでおかしな症状を確認。 スピードを遅くすると目立つのですが、 時計回りと、逆時計回りで動きが違います。 時計回りはスムーズなのですが、 逆時計回りだと、スピードが速く、ぎこちない感じです。 原因は不明です。
4014スピード127(高速)動画
4014スピード40(低速)の動画
■私的メモ
;======================================= ; Timer0 割込み Software UART用 ;======================================= ;**** SOFTWAER UART ********************
int_TM0: SETB TEST_P ;TEST
PUSH PSW PUSH ACC PUSH DPH PUSH DPL CLR TF0
;***STX0******** JNB STX0_F, ST0R INC STXBCNT0 MOV A, STXBCNT0 CJNE A, #1, ST01 CLR STX0_P ;START BIT = 0 MOV STXPCNT0, #0 ;PARTY CNT =0 JMP ST0R
ST01: CJNE A, #10, ST02 MOV A, STXPCNT0 RRC A MOV STX0_P, C ;PARITY BIT JMP ST0R ST02: CJNE A, #11, ST03 SETB STX0_P ;STOP BIT = 1 CLR STX0_F MOV STXBCNT0, #0 JMP ST0R
ST03: MOV A, STXBUF0 RRC A MOV STX0_P, C ;STX PORT MOV STXBUF0, A
CLR A ADDC A, STXPCNT0 ;PARTY BIT CNT MOV STXPCNT0, A ST0R:
;***STX1***
ST_RT: POP DPL POP DPH POP ACC POP PSW
CLR TEST_P ;TEST
RETI
|
|
|