GR-SAKURA
GR-KURUMI
GR-COTTON
GR-CITRUS
GR-PEACH
GR-KAEDE
GR-ADZUKI
GR-LYCHEE
GR-ROSE
GR-MANGO(*)
SNShield
Web Compiler
IDE for GR
TOPPERS関連
女子美コラボ
その他
※プロデューサミーティング中
作り方使い方資料
イベント関連
作品記事
体験記事
ライブラリ
ツール
その他・過去ファイル
はじめまして
GR-Peachのmbedオンライン環境を使用しております。
uartシリアル通信にて4800bps固定の機器を使用したいのですが、
4800bpsに設定し、通信しようとすると、通信が出来なくなります。
測定器で通信時の波形を見てみると、9600bps以上の速度では正常に通信しておりますが、
9600bpsを下回ると、波形の時間軸が縮まった様になってしまいます。
LPC1768では正常に通信しており、正常に動作しています。
GR-Peachのuartで4800bpsにて通信出来る方法を教えてください。
以下に、抜粋したプログラムを記載させて頂きます。
(すみません、仕事の都合からソースを全て表示できません。)
宜しくお願い致します。
Serial pc(USBTX, USBRX);Serial BV(P2_5, P2_6);
void mc1Rx() { pc.printf("BV jushin!\r\n"); if(BV.readable()) { int retbyte = in.getc(); printf("Read: %02X \r\n", retbyte); pc.printf("BV_jushin! \r\n");
} }
int main() { wait(1); BV.baud(4800); BV.format(8, Serial::Even, 1);
char StbW[2] = { 0x58, 0xa7 };
while (1) {
wait(0.001); BV.putc(StbW[0]); //58
BV.putc(StbW[1]); //a7 wait(0.001);
BV.attach(mc1Rx, Serial::RxIrq);
}
GR-PEACH の mbed ライブラリのバグです。Serial::format() の内部で呼ばれる serial_format() という関数がボーレートのパラメータである CKS を 0 で初期化しボーレートがおかしくなるという不具合があります。
いずれライブラリも修正されるとおもいますが、とりあえずのところ Serial::baud() を呼ぶのを Serial::format() の後にするのを試してみて下さい。
プログラムに以下の修正を施しました。
#include "mbed.h" Serial pc(USBTX, USBRX); Serial BV(P2_5, P2_6); void mc1Rx() { pc.printf("BV jushin!\r\n"); if(BV.readable()) { int retbyte = BV.getc(); printf("Read: %02X \r\n", retbyte); pc.printf("BV_jushin! \r\n"); } } int main() { wait(1); BV.format(8, Serial::Even, 1); BV.baud(4800); char StbW[2] = { 0x58, 0xa7 }; while (1) { wait(0.001); BV.putc(StbW[0]); //58 BV.putc(StbW[1]); //a7 wait(0.001); BV.attach(mc1Rx, Serial::RxIrq); } } //「蒙古タンメン中本」か「大勝軒」かが問題だ