パナソニックのMN101というマイコンを使いたいのですが、特殊レジスタの定義方法がよくわかりません。
今までルネサスのマイコンを使っていて、ルネサスの方は#pragma addressと共用体をつかってバイトだけじゃなくてビット単位でレジスタに読み書き出来たのですが、パナソニックは#pragma addressが使えません。
サポートページでダウンロード出来る定義ファイルはバイト単位でしか読み書きできませんでした。
#pragma addressを使わずにビット単位で読み書きする方法を教えてください。
共用体で例えばPort1の中の1ビットをPort1.bit.b1みたいに読み書きする方法はわかったのですが、ルネサスのようにそれにP1_1と名前を付けて扱いたいです。
No.4
- 回答日時:
ルネサスの場合、コンパイラでサポートされて、マニュアルにも載っているので安心ですが、そうでないコンパイラで無理にやるのは危険だと思います。
インライン関数やマクロとかで妥協するのが無難ではないかと思います。
No.3ベストアンサー
- 回答日時:
Port1.bit.b1 というのが、メーカーの提供しているファイルに
定義されていればまず安全でしょう。
さて、 P1_1 という記述で、Port1.bit.b1 にアクセスするため
には、単純に、
#define P1_1 Port1.bit.b1
とするだけです。
ルネサスのものも、#pragma address の指定はビット演算とは
直接関係ありません。(単に、固定アドレスであることを明示
しているだけです)
ルネサスの定義ファイルの中でも、
union byte_def p1_addr;
#define p1 p1_addr.byte
#define p1_0 p1_addr.bit.b0 /* Port P10 bit */
のように指定されているのがわかると思います。
No.2
- 回答日時:
#SFRの定義じゃなくてSFRへのアクセス方法の定義、ですよね?
> 共用体で例えばPort1の中の1ビットをPort1.bit.b1みたいに読み書きする方法はわかったのですが、ルネサスのようにそれにP1_1と名前を付けて扱いたいです。
質問の目的がそこだけなら、普通にdefineすればいいのでは。
#define P1_1 (Port1.bit.b1)
というふうに。
#ってHEWのSFWもビット単位アクセスは同じような共用体使ってたような……
No.1
- 回答日時:
ビット単位でレジスタにアクセスする一般的な方法はありません。
パナソニックのマイコン用のコンパイラは何を使っているのか知りませんが、(私が使ったことがある)GCCの場合、ビットフィールドを使ってレジスタにアクセスするのは危険です。
ビット演算とシフト演算を駆使して操作を行うようにしてください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(コンピューター・テクノロジー) PIC16F1シリーズマイコンのNCO機能について 1 2023/04/18 08:41
- Visual Basic(VBA) Excelのマクロについて教えてください。 作業フォルダ内に2つのファイルがあります。 このファイル 2 2023/07/09 13:40
- システム 外付けHDDの初期化について 4 2023/03/05 21:19
- 政治 私の発明した「二階建て漢字」は使えるでしょうか? 3 2023/02/08 16:40
- その他(プログラミング・Web制作) Visual Studio Code 関数の使い方について 3 2023/05/31 13:15
- システム 外付けHDDの初期化について 4 2023/03/05 20:00
- UNIX・Linux VirtualBox ゲストOSにPC内蔵HDDのパーティションをマウントする方法は? 2 2023/05/06 22:52
- その他(コンピューター・テクノロジー) 量子コンピュータの動作原理がわかりません。同じビットが、1でも0でも有って良いだろうか? 3 2023/02/04 03:20
- 仕事術・業務効率化 効率的な勉強方法(分野問わず)を教えてください 1 2023/08/16 01:33
- au(KDDI) 特定の画面を見るとスマホが固まります ご覧頂き有難うございます。 特定のページを見るとスマホが固まり 1 2023/08/21 19:29
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
応用情報技術者試験の令和元年...
-
インクリメント演算子のみを用...
-
右ビットシフト
-
Windows formアプリで データグ...
-
Linux Cプログラミングを学ぶた...
-
プログラミングについて。 1つ...
-
Stuck
-
Notepad++の関数リスト表示でC...
-
Linuxでの開発環境構築や設定の...
-
[C言語]fputsとfprintfの違い
-
Notepad++の関数リスト表示の変...
-
システムエンジニアの適正について
-
どちのほうがすきですか?
-
gccを行ってもexeファイルが生...
-
c言語
-
C言語 配列と関数の練習問題
-
こんなことてしますか??
-
C++6.0でのresource.hについて
-
c言語
-
MACで動く実行ファイルをWindow...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語 配列と関数の練習問題
-
システムエンジニアの適正について
-
[C言語]fputsとfprintfの違い
-
C言語をコンパイルするとコンピ...
-
mallocについて
-
どちのほうがすきですか?
-
ArduinoのジャイロモジュールMP...
-
大量のデータを読み込んで表示...
-
gccを行ってもexeファイルが生...
-
VisualStudio2022でC言語プログ...
-
C言語 列挙型(enum型)変数について
-
こんなことてしますか??
-
C言語の関数と配列に関する質問
-
Linuxでの開発環境構築や設定の...
-
質問失礼します。 プログラム言...
-
MACで動く実行ファイルをWindow...
-
WindowsのCapsLock(キャップス...
-
これなにがちがうんですか??
-
卒業研究でよく分からないとこ...
-
gcc13.2のバグ?
おすすめ情報