PageRXマイコンのCAN通信のWORDデータについてはじめまして、ODAと申します。CCを使ってプログラム作成にチャレンジして、つまずいております。//WORDデータRXにおけるWORDデータの処理方法がわかりません。事例として、動作確認済みのBYTEデータの送信プログラムを記載します。1){};ユーザーズマニュアルのメールボックスの説明に「DATA0~DATA3、あるいはDATA4~DATA7を32ビット単位で一度にアクセスすることはできません。DATA0~DATA1、DATA2~DATA5、DATA6~DATA7の3回、または、DATA0~DATA1、DATA2~DATA3、DATA4~DATA5、DATA6~DATA7の4回に分けてアクセスしてください。」と記入されていますので、WORDデータの処理も可能と考えますが、具体的なアクセス方法(プログラム)を教えて頂きたく、よろしく、お願い致します。勝手に下記の内容で、チャレンジしましたが、エラーとはなりませんが、正確なデータは送信できませんでした。13:41odawaraさん、こんにちは。NoMaYと申します。#CANについては知識がありませんけれど。C言語の標準的文法+CC-RX特有の__evenaccessキーワードで以下のように出来る筈だと思います。(なお、__evenaccessは無くても大抵は動くと思いますが、最適化レベルを上げた時に、複雑なソースで何かの拍子に動かないケースがあると怖いので、一応付けた方が良いと思っています。0x0123;自分が思うに、WORDアクセスが簡単に出来るようなiodefine.hになってないのは、歴史的な理由(RXマイコンの今のCANの回路の御先祖さまの回路が8ビットアクセスしか出来なかったとか)かなと思ったりしています、、、(iodefine.hの今のCANの構造体も御先祖さまの構造体の作りが継承されているとかかなと、、、)[追記]あと、今回は(たぶんリトルエンディアンだろうなと思ったので)関係の無い話だと思いますが、以下のスレッドも今後の何かの参考になるかも知れません。配列と構造体を共用体にしてエンディアンが逆さにならないようにするには?japan.renesasrulz.com/cafe_rene/f/002-2095199602/5680/thread[追記その2]歴史的な理由の他に、もう1つ思い浮かんだのですが、CANのルールにはWORDデータをWORD境界に配置することというものは無いのではないですか、、、つまりDATA[1]とDATA[2]でWORDデータを構成しても構わなくて、そうなるとWORD境界からのWORDアクセスだけ簡単に出来るようになっていても片手落ちですので、潔くBYTEアクセス出来れば良し、としているのかも知れません、、、ちなみに、上に書いたコードですが、DATA[1]とDATA[2]でWORDデータを構成している場合は使えません。23:36わわいです。CAN0.MB[0].DATA[0];まあ、これらの操作は、実際はマクロとか関数にまとめればいいかと。23:59odawaraです。NAKAさん、NoMaYさん、わわいさん、いろいろと教えて頂き、ありがとうございました。DATAを2Byteごとに書きたい理由は、2回のBYTEアクセスによって分解or合体させることも考えましたが、単にWORDデータを1回のアクセスで処理したかっただけの話です。ちなみに、RL78の場合は、わざわざ、2回のBYTEアクセスによって分解or合体させる必要はありません。最初に記入しましたが、送信バッファ・レジスタまたは受信バッファ・レジスタが充実していて、これらのHLレジスタを別々にして2個のBYTEデータとするか、HLレジスタを合わせて1個のWORDデータが対応可能です。RXのユーザーズマニュアルのメールボックスの説明につきましては、疑問が残りますが、RX初心者としては素直にBYTE処理した方が無難であると理解しました。教えて頂き、ありがとうございました。3:47odawaraさん、こんにちは。RXのユーザーズマニュアルのメールボックスの説明につきましては、疑問が残りますが、この疑問が残る点なのですが、こういうことではないだろうか、と私は思います。プログラムを作る人に向けてだけ書かれたものではなくて、iodefine.h(の構造体)を使わない人やアセンブラ言語を使う人(今は全てアセンブラというのはレアケースと思いますのでアセンブラ言語を併用する場合)も対象としている為、iodefine.h(の構造体)では簡単/素朴には出来ないことでも、マイコンのハードウェア上そういうことも出来ます、ということで記載されたものではないでしょうか。ありきで→)「それは出来ないのでは?ん?出来るのか?どうやって?」という戸惑いに繋がった、ということではないでしょうか。ユーザーズマニュアルで注意を喚起したかったのは、iodefine.h(の構造体)を使わない人やアセンブラ言語を併用する場合、きっとその人がついやってしまいがちな以下のアクセスはマイコンのハードウェア上出来ないですよ、ということですよね。「DATA0~DATA3、あるいはDATA4~DATA7を32ビット単位で一度にアクセスすることはできません。3:01NoMaYさん、odawaraです。RXのユーザーズマニュアルのメールボックスの説明の疑問点につきましては、おっしゃるとおりで、返す言葉もありません。丁寧な解説をして頂き、ありがとうございました。odawara:わわいですまあ、そもそもそこはそういうふうに作ってあるってことで、疑問にもとーが理屈に合わないとか言っててもしよーがないわけで。