• 公開日:2024年10月18日
  • | 更新日:2024年10月28日

新人FAEが逃げる目覚まし時計を作ってみた~第2話 Renesas研修から帰ってきた新卒のソフトウェアとの闘い編~

第2話Renesas研修から帰ってきた新卒のソフトウェアとの戦い編

こんにちは。2024年度入社新人FAEの山崎です。

第1話では製作するモノの仕様書作成までのお話をしました。今回はその仕様書をもとにソフトウェアの製作を行っていきます。

約2か月間のRenesas研修が終わり、少しずつ成長したと思っている山崎ですが、このソフトウェア編でも無事に壁にたくさんぶつかっていますので温かく見守っていただきますと幸いです。

第1話

ソフトウェア製作の手順

ソフトウェア製作は以下のような手順で行いました。

・FSP、I2C、RTCの学習

・各デバイスの単体試験

・時計機能と逃げる機能に分けてのコード作成

・すべてのコードを結合する

 

大きくわけるとこのような手順で進めていきました。しかし予想とはかなりずれた時間配分になってしまいました。一通りの機能を使えるようになるまでのFSPの学習に一番時間がかかりました…

FSPとの闘い

私が一番苦労したといっても過言ではないところは、FSPの理解やC言語との闘いです。C言語は大学時代に少しだけ触れたことがあるのですが、だからといってスラスラ作成できるレベルではありません。Renesas研修でC言語を用いたため少しずつ書けるようになっていった私は、製作実習のコード作成はすんなりいくと思っていました…

 

過去の私へ、そんなに現実は甘くないですよ。

 

サンプルコードがなにをやっているのか…FSPが簡単に組み込みソフトウェアのコードを書けるはずのツールなのに使いこなせない…

こんな悩みと奮闘の時期が2週間ほどありました。サンプルコードの関数の中身や構造体の中身を深ぼったり、マニュアルを日本語に翻訳したり、とにかくわからない単語や考え方を検索して先輩に聞いての繰り返しでした。

 

そうしていくうちに、だんだんとFSPの使い方に慣れてきてマニュアルの読み方や調べ方のコツをつかんでセンサやI2C、RTCなど実装できるようになりました。

FSPをある程度使えるようになると、これは…

とてつもなく便利!!!! 組み込みソフトウェアの初期化やピン設定などコードを自動生成してくれるのです。Renesas研修で組込みソフトウェアをC言語で一から学習してきたのでこの便利さは驚きました。

 

そんなこんなで何とかコードを書き終えることができました。ご協力いただいた先輩方には本当に感謝しかないです。ありがとうございました。

7セグメントLEDからLCDへの変更

私は時刻を表示させるモノとして、I2C通信で制御可能な7セグメントLEDのモジュールを購入しました。FSPでのI2Cも理解したところで早速試してみるか…と取り掛かった矢先に何をしても光らない…!!なんで…!!また迷宮入りです。

 

オシロスコープで波形をみたり、データーシートをみたり、先輩にきいたり、調べた結果

「スレーブアドレスを持たないI2Cライクなデバイス」 でした (-_-;)

 

TM1637を制御するライブラリが必要とのこと。ライブラリ無しで制御しようと試みますが、RTCで時刻を表示させたかったため時間の都合で現実的ではないなと感じました。

 

このデバイスを光らせるには、データーシートに記載してあるレジスタ制御の手順で「スタートビットやストップビットをデータに合わせていかなくてはならないこと」と「スレーブアドレスをもたない」という2点でI2Cライクとなっているようです。

FSPではI2CのAPI関数の機能としてスレーブアドレス・スタートビット・ストップビット・データをまとめて送ってくれるものであるため、活かすことができずLCDに変更することにしました。

 

またまたLCDでも簡単には表示してくれませんでしたが…

なかなか表示してくれないLCD

7セグメントLEDの失敗もあり、今度こそLCDに表示させるぞ!!と意気込む山崎さん。次はどんな壁にあたるのでしょうか。

 

①スレーブアドレスは0x7Cで送っているのにACKが返ってこないという壁

➁初期化がされないという壁

③LCD壊れているのではないかという壁

④変な文字しかでない壁

 

LCDだけでも4つの壁に阻まれていますね。

①の壁では、7ビットアドレスではなく8ビットアドレスで0x3Eをスレーブアドレスとして設定することでACKが返ってくるようになりました。

➁の壁では、データーシート上の初期化手順でレジスタを制御していると初期化されず、最後の制御と最後から2番目の制御の順番を入れ替えることで初期化ができました。

③の壁、LCD壊れてるのでは?と疑い始めた私。初期化もできていたのに急に映らなくなりLCD自体を疑い始めました。

結果、自分で取り付けたピンの半田の量が少なく接触不良でした…(モノを疑わず己をまず疑え)

 

④の壁を写真つきでお見せします。

ワワワワワワ… :p:G/J/q:pp:GL/J… 私の頭の中を映されている気分でした。

原因は数値をうまく文字列のコードに変換できていなかったことでした。

 

色々ありましたが、最後は表示することができました。(この画像の日付は適当に設定した値です)

次回 ~第3話 新卒FAEハードウェアとの闘い編~

 

先輩方の協力を頂きソフトが出来上がったので次回はハードウェア編をお話しします。

壁を乗り越えるほど成長するぞという気持ちでハードウェア編でも闘っている姿をお見せできればと思います。

第3話