atmega328p からの構造体と定義に少し問題があります。
次のコードがあります。
typedef struct {
char port;
unsigned char pin;
unsigned long timestamp;
} BUTTONS;
BUTTONS button_1;
BUTTONS button_2;
BUTTONS button_3;
BUTTONS* button[BUTTONS_ID_COUNT] = {&button_1,&button_2,&button_3};
void Button_init(void){
button[BUTTONS_ID_1]->port = PINB;
button[BUTTONS_ID_1]->pin = PINB4;
button[BUTTONS_ID_1]->timestamp = 0;
}
unsigned char Button_instantRead(int id){
//return PINB & (1 << PINB4);
return button[id]->port & (1 << button[id]->pin);
}
Button_instantRead()
ID 番号を指定するだけで任意のポートを読み取れるようにmy を使用したいと考えています。init 関数を使用して、どのピンがどのポートに関連付けられているかを設定します。しかし、何らかの理由でButton_instantRead()
関数を呼び出すと、スイッチを押しても 1 が得られません。
コメント行を使用してメインファイルで構成を試しましたが、すべて正常に動作しました。
私のreturn
ラインで何が間違っていますか?
いくつかのグーグル検索の後、char
おそらくポートを参照するのに適切なタイプではないことがわかりました。ポートのアドレスの最初の要素へのポインターの方が適していると思いますが、その方法がわかりませんし、答えも見つかりませんでした。