TeraTermから打ち込んだ文字をマイコン経由でLCDに表示させたいです。

いつもお世話になっております。

現在私は、

TeraTermで一文字を入力~送信

      ↓

TeraTermで受信、マイコン(RL78/G14)で文字を受け取る

      ↓

マイコンを経由しててLCD(AQM1602XA-RN-GBW)に受け取った一文字を表示

という事をさせたく思っています。

現在詰まっている点は、TeraTermで1文字を入力してもそれがLCDに表示されない事です(シリアル通信なので、デバックでどこまでできているか確認できず…)。

シリアル通信無しの場合、文字送信が確認できています。

恐らくシリアル通信そのものか、変数による受け渡しがうまくいっていないと予想しています。

おききしたいのは、下記のコーディング内容において、どこがネックになっているかについてです。

【メイン関数内容】************************************************************************************************

void main(void)
{
    uint8_t recv_buf ;                          //割り込みで受け取った文字を格納する
    R_MAIN_UserInit();                      //割り込み許可 
    R_IT_Start();                                //インターバルタイマスタート
    acc_data_Init();                             //LCD初期化
    R_UART0_Start();

    while (1U) {
        if(SW1 == SW_ON) {
        R_UART0_Receive((unsigned char *)recv_buf,1);
        Send_Char_LCD(recv_buf);
        }    
     }

}

***********************************************************************************************************************

//【LCD初期化(動作確認済み)】******************************************************************************
void acc_data_Init(void)
{
uint8_t lcd_init_data[] = {0x38, 0x39, 0x14, 0x73, 0x56, 0x6C, 0x38, 0x01, 0x0C};
uint8_t i;
i2c_flag = 0;
while (0 == time_flag);
time_flag = 0;

for (i = 0; i < 9; i++)
{
uint8_t data_to_send[2] = {0x00, lcd_init_data[i]};
R_IICA0_Master_Send(0x3e << 1, data_to_send, sizeof(data_to_send), 1); // 2バイト送信
while (0 == time_flag);
time_flag = 0;
while (i2c_flag == 0); /* 送信完了待ち */
R_IICA0_StopCondition(); /* I2C通信終了 */
while (SPD0 == 0); /* ストップ・コンディション検出待ち */
}
}
/***********************************************************************************************************************/

//【LCD文字送信(動作確認済み)】******************************************************************************
void Send_Char_LCD (uint8_t dat)
{
uint8_t buf[2];

buf[0] = 0x40; /* DDRAMアドレスを指定 */
buf[1] = dat; /* レジスタに書き込む値を指定 */

i2c_flag = 0;
R_IICA0_Master_Send(0x3E << 1, buf, 2, 1);

while (i2c_flag == 0); /* 送信完了待ち */
R_IICA0_StopCondition(); /* I2C通信終了 */

while (SPD0 == 0); /* ストップ・コンディション検出待ち */
}
/***********************************************************************************************************************/

Parents
  • ソースをちらりと見て、まず、

    void main(void)
    {
        uint8_t recv_buf ;                          //割り込みで受け取った文字を格納する
        ~略〜
            R_UART0_Receive((unsigned char *)recv_buf,1);
        ~略〜
    }

    は、

    uint8_t recv_buf ; を uint8_t recv_buf [1] ; にするか、

     R_UART0_Receive((unsigned char *)recv_buf,1) ; を R_UART0_Receive((unsigned char *)recv_buf,1) ; にしないと、

    と思いました。コピペミスでしょうか?

  • egret様

    リプライありがとうございます。

    こちらは問題なく動いていました。

Reply Children
No Data