組み込み技術を向上したい!!

でも組み込み以外にも手を出し始めました・・・

C言語

I2C 注意点

I2CはSCLとSDAの二本線で通信ができる(電源とGNDはいるから4本かな?)便利な規格だけど、少しだけ注意することがあるので、メモ。 信号線のプルアップ SCLとSDAの信号線は基本的にプルアップ必要。できれば、マスター側とスレーブ側で信号線の電圧ドロップが…

mmap (C, Python exchange data)

毎度のことだけど、ほぼ個人的メモなので、もし参考にする人がいたら注意してね!!意外と見てくれている人がいるみたいなので。 Linuxなどまともに触れたことがなく、OSと言ってもFreeRTOS程度のものしかいじったことがなかった。。。 RaspberryPiで遊んで…

free() で失敗!! C言語

callocとかmallocとかで、メモリを確保して使用した後は解放するために、free()を使うことになるんだけど、 ここで、残念なミスをおかしていたので、メモしとく。 free()の引数はきちんと制御してないとダメ!! 今回やらかした過ちはfree()の引数が割り当て…

if文でのバグをほんの少し減らすかもしれない方法 @C言語

プログラムの基礎はわかってるつもりです。それでも一人で何万行、何十万行と書いていると思いもよらないバグに遭遇してしまいます。まぁ、ひとりじゃなくてもなるんでしょうけど。 そのバグを少しでも減らそうと日々努力しております。 もうご存知の方も居…

コールバック(call back)関数の必要性 , C言語

昔の自分のコードを見ていて、こうしたらいいのになってのがあったので、メモメモ。 例えば、↓みたいなコードがあったとします。 /**************************** コールバックとは関係無い関数 ******************************/ int32_t func1(void) { int32…

C言語 ポインタ

よくポインタの概念がわからんけん、教えてとか言われますが、たぶん難しく考えすぎなのだと思います。わからんかったら、僕のところに来てください。暇だったら相手します。 さて、ポインタですが、名前のとおり、ポイントを指しているのです。 int a; とい…

関数化してますか? (C言語)

稀に遭遇することがあるので、ちょっとコメントを・・・。 プログラムが複雑になってくると、例えば、mainの中に全部書くとわけがわからなくなります。 そこで、「関数」としていろいろ部品に分けていくのですが、仕事でプログラムをされている方でも、稀に(…

C言語のプログラムからshellを実行する

例えばシステムのシャットダウンするときは sudo shutdown -h now とかすると思うんだけど、これをC言語のプログラムから実行したい場合は↓みたいにするといい。 まずshellのファイルを作る。(ファイル名はsys_down.shとしてみる) #!/bin/shsudo shutdown -h…

main関数の引数について

linuxをいじっていて初めて意識したので、メモしときます。 OS載せてないマイコンのプログラムとかばっかり作ってたので、 main関数の引数なんてまったく意識したことなかったなぁ・・・。 さて、以下のようなプログラムで勉強します。 環境はRaspberry Piで…

Raspberry Pi + WiringPi  とりあえず、GPIOいじってみる

Raspberry Pi 用のGPIO制御ライブラリで有名な Wiring Pi を使ってみます。 Wiring PiではI2Cのライブラリを使用するみたいなので、 sudo apt-get install libi2c-dev でi2cのライブラリをインストールします。 次にgitでwiringPiをダウンロードする。 git c…

曜日計算アルゴリズム(C言語) うるう年に注意!!

今までに何度か曜日を算出する機会があったので、覚書を書いとこうと思いました。下に書いた関数の引数は文字通りyearは年、 monthは月、 dayは日です。 戻り値は算出された曜日に対応する数字です。0なら日曜、1なら月曜...。 ちゃんと実在する日付じゃな…