可変ブログ

色々メモとか。とりあえず自分が分かるように。その後、なるべく人が見て分かるように。可変。

UEFIブートのエントリを削除する方法

間違ったところにブートローダーを書き込んでしまった時に



windowsから削除


linuxから削除




windowsデュアルブートでOSの選択画面が出てこないとき

MCP2515を使ってArduinoでCAN通信

MCP2515のモジュールを使ってArduinoでCAN通信をさせる。
ライブラリはMPC_CAN_libを使う。
スケッチの書き方は、MPC_CANのgithubのサンプルプログラムとヘッダを見るとわかりやすい。




・ハマったところ1
MCP_CAN::begin() が変更されてて、引数にいろいろ指定しなければいけなくなっていた。
何を指定しなければいけないかはサンプルプログラムとヘッダを見て判断した。
第1引数:IDの種類
第2引数:canの通信速度
第3引数:モジュールとの通信レート(今回の場合はモジュールの水晶発振子の周波数)


・ハマったところ2
MCP_CAN::setMode() が抜けてた



簡単なArduinoスケッチ
以下のソースではif(!digitalRead(INT_PIN))の部分でモジュールからの割り込みをポーリングしているが、
モジュールの割り込み用ピンをArduinoの外部割込み(ハードウェア割り込み)に割り当てて、
割り込み処理したほうが効率がいいと思う。

// ライブラリヘッダのインクルード
#include <mcp_can.h>
#include <SPI.h>
 
//設定値
#define CS_PIN  (10) // CSを10ピンとする(変更可能)
#define INT_PIN (9)  // INTを9ピンとする(変更可能)
 
long unsigned int rxId;
unsigned char len = 0;
unsigned char rxBuf[8];

MCP_CAN CAN0(CS_PIN);      
 
void setup() {
    Serial.begin(115200);
    CAN0.begin(CAN_STDID, CAN_500KBPS, MCP_8MHZ); // CANの通信速度を500kbpsにする 
    pinMode(INT_PIN, INPUT); // 割り込みのためのピンを設定
    CAN0.setMode(MCP_NORMAL);
    Serial.println("MCP2515 Library Receive Example...");
}

byte data[8] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07};

void loop(){
    //受信
    if(!digitalRead(INT_PIN)) {  // 受信割り込みが発生したら、CANデータをReadする
        CAN0.readMsgBuf(&rxId, &len, rxBuf);
        Serial.print("ID: ");
        Serial.print(rxId, HEX);
        Serial.print("  Data: ");
        for(int i = 0; i<len; i++) {
            if(rxBuf[i] < 0x10) {
                Serial.print("0");
            }
            Serial.print(rxBuf[i], HEX);
            Serial.print(" ");
        }
        Serial.println();
    }


    //送信
    byte sndStat = CAN0.sendMsgBuf(0x122, 0, 8, data);
    if (sndStat != CAN_OK) {
        Serial.println("Error Sending Message...");
    }
    delay(100);   // send data per 100ms
}
 
/*********************************************************************************************************
  END FILE
*********************************************************************************************************/

linuxのパッケージ探すところ

リポジトリにない時に探してみるところ。
一番上の以外は安全性はよくわがんにゃい。





おまけ



MCP3208-CI/PとRaspberryPi3でAD変換

RaspberryPiにはアナログ入力ポートがありません。
なのでMCP3208-CI/Pというアナログ-デジタル変換ICを使ってアナログ値を読み取ります。
MCP3208-CI/PとRaspberryPiとの通信にはSPI通信を使用します。
RaspberryPiのセットアップは終わってるものとします。


Ubuntuで一つのNICに複数のIPアドレスを割り当てる

IPエイリアスっていうらしい。

TCP通信と非同期通信

マルチコアならスレッド作ってもいいのかな?
シングルコアならselectかpoll?
割り込みとかコールバック関数とか使えないの?



C++ならboostのasio使うか?

pythonならasyncioかthreadingか?
threading

asyncore?

pythonのいろんな非同期処理

pythonのいろんな非同期通信方法





TCP


UDP




非同期




ソケット通信