ID非公開

2020/7/28 21:38

88回答

ルネサス製のマイコンを仕事で使い始めていますがマイコン初心者のためか先輩が書いたコードがかなり難しく理解も出来ず悩んでいます。C言語はポインタや構造体含め、時間かければ一通りは自立

ルネサス製のマイコンを仕事で使い始めていますがマイコン初心者のためか先輩が書いたコードがかなり難しく理解も出来ず悩んでいます。C言語はポインタや構造体含め、時間かければ一通りは自立 でかけるレベルです。今はハードウェアマニュアルを読んでますが、それだけで日が暮れてしまいます。どうしたらマイコンを効率的に学習し使えるようになるでしょうか。また習得するにはどのくらいの年月がかかるでしょうか。

補足

今週1週間で先輩のレジスタ設定とマニュアルを照らし合わせて何とかタイマー割り込みとスイッチ押してLED点灯させるとこまでは来れました。ポイントはクロック設定を間違えないこと、マニュアルに書いてある通りにレジスタ設定していかないと何も動かないことを学習しました、頑張ります。

C言語関連 | 工学124閲覧

ベストアンサー

0

先輩の書いたソース・コードに注釈(コメント)はしっかり付されていますか? 業務で個人だけでなく扱う場合重要なポイントはコメントです。 まずはコメントの意味を理解することができるかどうかが重要です。 コメントの内容がプログラムと関わる内容のはずです。プログラムの大きな構成の参考になることも書かれているかも知れません。 ハードウエアで判らないときはプログラムの単純、小さいところから分析したらよいでしょう。 最近のIDEソフトではマイコンのペリフェラルに関する関数などは自動生成されることも多いです。 そのような関数の部分はハードゥエアに関する部分の単純小さい処理を記述している場合が多いなどのような開発環境上の知識も必要です。 日が暮れるぐらい読むよりは日が暮れるぐらい実践するのが良いでしょう。 ダウンロードできるIDEソフトもエミュレータも安いワンボード・マイコンも手元において勉強できるように上司にかけあって会社に経費で出してもらうぐらいの掛け合いも必要でしょう。 私は業務で使うためルネサスRL78/G13のスターター・キットで始めました。 RL78/G13マイコン入門という書籍があることも強みでした。 もともとはH8で組み込んでいたものを変えるためでしたので予備知識はありました・・・

追記 実践するのはルネサスのHEWとかCS+などの開発環境で行うことです。 あなたの会社で使っているものと同じ方がいいです。 私はAVRマイコンもPICマイコンもしますがかなり差異があります。

ThanksImg質問者からのお礼コメント

たくさんの皆様のお返事ありがとうございます。 ベストアンサーをどなたか1人に決められませんが、本ご回答者様とさせて頂きます。

お礼日時:8/2 11:06

その他の回答(7件)

0

察するに「機械語」あるいは「ハードウェア」についての悩みかと思いますが、なれば「悩む」こと自体がナンセンスです。ただただ「決まり事」を覚えるしかありません。日が暮れようと年が明けようと、ね。

ID非公開

質問者

2020/7/29 20:45

確かにコード自体の難しさよりアルゴリズム的な難しさのほうが大きいかもしれません、年内時間もらえてるので頑張ります

0

ハードウェアで何をするのか目標が無いとマニュアルを理解するのは難しいかもしれません。 実際にマイコンを動かして見るのがいいと思います。 マイコンでLEDを点滅させたりスイッチのオンオフでLEDの点滅をオンオフするのを実験できます。 Arduino Pro Mini などのマイコンを購入すればハードウエアを動かすことが出来ます。 https://www.switch-science.com/catalog/946/

0

コードがわからないんじゃなくて、アルゴリズムがわかってないに100ペリカ! つまり、Cだからわからないのではなく、仮に他の言語だったとしてもわからない マイコンを使えるようになるだけならArduinoでも使っとけばいいです。そもそもマイコンじゃなくてRH850をしりたいんじゃね?

ID非公開

質問者

2020/7/29 21:19

RXマイコンを扱ってますので、それが知りたいです

1

> ハードウェアマニュアルを読んでますが、それだけで日が暮れてしまいます 言葉通りに「読んで」いるんですか? あれは通して読む読み物じゃなくて、「この機能はどう使うんだろう」「こういう機能はどこかにないか」という時に見る辞書的な資料です。目次と各章の概要ぐらいを読んでおけばあとは必要になったら開けばいいものです。 それを放置されているようだと、「イチから教育してもらえる」期待はあまりできないですねぇ... 片方だけでは使えないので渾然一体となりがちですけれど、ハードウェアの"動作"(このビットが立つと何が起こる、その組合せでなにか機能を作る)と、それを"操作"するプログラム(そのビットを立てる)とは分離して理解したいですね。 効率的かというとなんとも言えませんが、アウトプット重視で、とにかくシステムを動作させてみる、プログラムを書く方向に振ってみては。「先輩が書いたコード」の動作を自分なりに書き直してみる、(通しで読むのではなく)その段階で動作がわからなければマニュアルにあたってみる、あるいはプログラムに出来なければCの参考書にあたってみる、とか。 時間は...そのレベルから育てたことってないからなんとも言えないなぁ...

1人がナイス!しています

ID非公開

質問者

2020/7/29 20:39

とりあえず今日はI/Oとタイマーの章を読んでレジスタ設定を確認し、実際のコードと回路図、仕様が合ってることを確認しました。あとはシリアル通信、SPI通信、CAN通信、PWM、AD変換あたりを使うので、その辺りを読んで実機と照らし合わせて動作確認したいと思います。

0

知恵袋で質問すると、下のように煽る人も多いので、お気を付けて… ところで現状、C言語が時間かければ一通りは自立でかけるレベル というのが、少し低いように思います。 先輩が書いたコードをすんなり理解するためには、もっとたくさんコードを書くことに慣れて、すんなりと書けるレベルである必要があると思います。 そのためには、プライベートであれば、練習問題がたくさん用意されている ideone, paiza などのサイトでの学習がオススメです。 書けば書くほど、身に付きます。 どうしたらマイコンが分かるようになるのかは、私はよく分からないので、省略します。 ハードウェアマニュアルは全部を読むのではなく、必要なところを選んで、必要十分に読んでいくそうです。

ID非公開

質問者

2020/7/29 20:42

確かにコードを書くのが遅いです、それはトレーニングが足りないのもあるかもしれません。数年前からVisual studio使ってC#で多数アプリは作ってるのでCとは少し違いますが、後は慣れもあるかもしれません。