質問編集履歴

3

間違いを訂正

2020/06/25 02:02

投稿

Merrifield
Merrifield

スコア31

test CHANGED
File without changes
test CHANGED
@@ -10,7 +10,7 @@
10
10
 
11
11
  仮想ポートを作り確認してみたところ、例えば10から0に一気に動かしたときに受信側を確認してみると、
12
12
 
13
- R009R009R007R007RR006R006R004R004R002R002R00R00
13
+ R009R007R006R004R002R000
14
14
 
15
15
  のように途中の値はとびとびになりますが、最後の値はちゃんと送信できているということが分かりました。やはり問題は受信側かなと思います。
16
16
 

2

確認の追加

2020/06/25 02:02

投稿

Merrifield
Merrifield

スコア31

test CHANGED
File without changes
test CHANGED
@@ -6,6 +6,16 @@
6
6
 
7
7
 
8
8
 
9
+
10
+
11
+ 仮想ポートを作り確認してみたところ、例えば10から0に一気に動かしたときに受信側を確認してみると、
12
+
13
+ R009R009R007R007RR006R006R004R004R002R002R00R00
14
+
15
+ のように途中の値はとびとびになりますが、最後の値はちゃんと送信できているということが分かりました。やはり問題は受信側かなと思います。
16
+
17
+
18
+
9
19
  送信側のコードを示しておきます。
10
20
 
11
21
  ```ここに言語を入力

1

受信側のコードの追加

2020/06/25 00:25

投稿

Merrifield
Merrifield

スコア31

test CHANGED
File without changes
test CHANGED
@@ -315,3 +315,123 @@
315
315
 
316
316
 
317
317
  ```
318
+
319
+
320
+
321
+ 受信側のコードも一部示しておきます。
322
+
323
+ ```__interrupt void MD_INTTM04(void)
324
+
325
+ {
326
+
327
+ /* Start user code. Do not edit comment generated here */
328
+
329
+
330
+
331
+ //タイマ割り込み(0.1秒ごと)//
332
+
333
+
334
+
335
+
336
+
337
+ UART0_ReceiveData(receive, 4); //文字列でデータ受信
338
+
339
+
340
+
341
+ //numerical = atoi(receive); //文字列を数値に変換
342
+
343
+
344
+
345
+ if(receive[0] == 'R')
346
+
347
+ {
348
+
349
+
350
+
351
+ numericalR = 100 * (receive[1] - '0') + 10 * (receive[2] - '0') + (receive[3] - '0'); //数値に変換
352
+
353
+ TAU0_Channel2_ChangeDuty((unsigned char)numericalR); //デューティー比変更(赤)
354
+
355
+
356
+
357
+ }
358
+
359
+
360
+
361
+ if(receive[0] == 'G')
362
+
363
+ {
364
+
365
+
366
+
367
+ numericalG = 100 * (receive[1] - '0') + 10 * (receive[2] - '0') + (receive[3] - '0'); //数値に変換
368
+
369
+ TAU0_Channel1_ChangeDuty((unsigned char)numericalG); //デューティー比変更(緑)
370
+
371
+
372
+
373
+ }
374
+
375
+
376
+
377
+
378
+
379
+ if(receive[0] == 'B')
380
+
381
+ {
382
+
383
+
384
+
385
+ numericalB = 100 * (receive[1] - '0') + 10 * (receive[2] - '0') + (receive[3] - '0'); //数値に変換
386
+
387
+ TAU0_Channel3_ChangeDuty((unsigned char)numericalB); //デューティー比変更(青)
388
+
389
+
390
+
391
+ }
392
+
393
+ コード
394
+
395
+ ```
396
+
397
+
398
+
399
+ 受信を行う関数
400
+
401
+ ```MD_STATUS UART0_ReceiveData(UCHAR *rxbuf, USHORT rxnum)
402
+
403
+ {
404
+
405
+ MD_STATUS status = MD_OK;
406
+
407
+
408
+
409
+ if (rxnum < 1U)
410
+
411
+ {
412
+
413
+ status = MD_ARGERROR;
414
+
415
+ }
416
+
417
+ else
418
+
419
+ {
420
+
421
+ gUart0RxCnt = 0U;
422
+
423
+ gUart0RxLen = rxnum;
424
+
425
+ gpUart0RxAddress = rxbuf;
426
+
427
+ }
428
+
429
+
430
+
431
+ return (status);
432
+
433
+ }
434
+
435
+ コード
436
+
437
+ ```