トップページ > 電気・電子 > 2017年02月20日 > lcdBnGGO

書き込み順位&時間帯一覧

7 位/207 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000000000000023005



使用した名前一覧書き込んだスレッド一覧
774ワット発電中さん
PIC専用のスレ Part54 [無断転載禁止]©2ch.net [無断転載禁止]©2ch.net

書き込みレス一覧

PIC専用のスレ Part54 [無断転載禁止]©2ch.net [無断転載禁止]©2ch.net
222 :774ワット発電中さん[sage]:2017/02/20(月) 20:30:21.67 ID:lcdBnGGO
>>213 のコードです
PIC16F1454用です
割り込みは関係無かったです

#pragma config FOSC = INTOSC, WDTE = SWDTEN, CPUDIV = NOCLKDIV
#include <xc.h>
unsigned char data[256];
unsigned char read_p = 0;
unsigned char write_p = 0;
void main(void){
OSCCON = 0xFC;
ACTCON = 0x90;
SPBRG = 0x67;
SPBRGH = 0x00;
BAUDCON = 0x08;
TXSTA = 0x24;
RCSTA = 0x90;
while (1){
while (RCIF){
data[write_p++] = RCREG;
}
while (read_p != write_p && TXIF){
TXREG = data[read_p++];
}
}
}
PIC専用のスレ Part54 [無断転載禁止]&#169;2ch.net [無断転載禁止]©2ch.net
223 :774ワット発電中さん[sage]:2017/02/20(月) 20:37:25.46 ID:lcdBnGGO
UARTから受信したデータをそのまま送信します
コアクロックは48MHz, UARTは115200bps

100文字くらい一気にPICに送ると、PICから送信するデータがたまにダブります
read_p, write_p は正しいので、TXREGに設定している回数は合ってます

仮にTXREGにデータがあるときにTXREGに値をセットしてしまっても、
文字が減るだけで増えることは無いと思うのですが

TXIFの代わりにTRMTで比較すればダブることは無くなりますが、
文字と文字の間に隙間ができるし、割り込み処理にすると困るので、やりたくありません
サンプルはTRMTになっていますが

TXREG = ... の前後にNOPを入れても症状は直りません
PIC専用のスレ Part54 [無断転載禁止]&#169;2ch.net [無断転載禁止]©2ch.net
225 :774ワット発電中さん[sage]:2017/02/20(月) 21:08:01.90 ID:lcdBnGGO
PIC16F18313 でも症状は同じでした
PIC専用のスレ Part54 [無断転載禁止]&#169;2ch.net [無断転載禁止]©2ch.net
227 :774ワット発電中さん[sage]:2017/02/20(月) 21:46:38.35 ID:lcdBnGGO
オシロスコープでRXを見ましたが、やはり文字がダブっています
(つまり、受け側の問題ではありません)
頻度にはムラがあるようで、しばらく発生しない時もあります

MicrochipのサンプルもTRMTになっていることから、
TXIFには問題があるのでは?という気がします
PIC専用のスレ Part54 [無断転載禁止]&#169;2ch.net [無断転載禁止]©2ch.net
228 :774ワット発電中さん[sage]:2017/02/20(月) 21:49:18.62 ID:lcdBnGGO
ただ、TXREGの空判定が誤った場合は文字が減るはずで、
多くなる理屈がわかりません


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。