なんとかなるさね

マイコンをネタにブログを始めてみました


スポンサーサイト 

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

--/--/--   blog-entry-   category: スポンサー広告

go page top

Arduino IDE|GadgetRenesas基板用IDE4GR 1.6.5(のようなもの)を作るには? 考え直し中(3) 

2つ前のエントリでSNShieldのサンプルプログラムがArduino IDE 1.6.7でビルド出来なかった件は、サンプル
プログラムのコメントにあるように、Wire、SPI、SNShieldの各ライブラリをそれぞれインポート操作すれば
良いのですが、Arduino IDE(あるいはIDE4GR)に同梱されているサンプルプログラムでそれをしないとビルド
出来ないというのは、どうも今ひとつな気がしなくもないところです...




逆に、PicalicoFreeライブラリのインポート操作では不要なヘッダファイルがインクルードされてしまうので、
こちらはutilityサブフォルダに移しておいた方が良いような気がします。(若干ソースの変更も必要ですが。)

現状では必要なPicalicoClass.hだけでなく不要なPicalicoFree.hもインクルードされてしまう



PicalicoFree.hをutilityサブフォルダに移しておくとPicalicoClass.hだけがインクルードされる



ファイル: PicalicoClass.h
変更内容: 赤字の箇所を追加

#include "utility/PicalicoFree.h"

追記 : メモ

3週間ほど後になってから、PicalicoFreeのサンプルプログラムで以下のようになっているインクルード文は、
inoファイルのスケッチの慣例とは、ちょっと違っていたことにようやく気付きました。

#include <Arduino.h>
#include "PicalicoClass.h"


inoファイルのスケッチの慣例では、以下のようなインクルード文で済ましてしまう方が良いような気がします。

#include <PicalicoClass.h>

ですが、IDE4GR 0.6.1と今作ろうとしているIDE4GR 1.6.5/1.6.8(のようなもの)で試してみると、IDE4GR
1.6.5(のようなもの)では、今回のエントリのものの場合は問題無かったのですが、5つ後のエントリのものの
場合にはArduino.hをインクルードしてやらないとコンパイルエラーになってしまいました。(実は、最初に
書いた時うっかり5つ後のエントリのものを使ってしまったのですが、調べ直していて今回のエントリのもの
ではコンパイルエラーにならなかったことが分かりました。)


エラーメッセージ:
C:\Users\UserName\AppData\Roaming\Arduino15\packages\GadgetRenesas\tools\ide4gr\0.6.1/hardware/tools/gcc-rl78/rl78-elf/bin/rl78-elf-gcc -IC:\Users\UserName\AppData\Roaming\Arduino15\packages\GadgetRenesas\tools\kurumi_sketch\1.12.0/src/RLduino78/libraries -IC:\Users\UserName\AppData\Roaming\Arduino15\packages\GadgetRenesas\hardware\rl78\0.1.0\cores\arduino -IC:\Users\UserName\AppData\Roaming\Arduino15\packages\GadgetRenesas\hardware\rl78\0.1.0\variants\gr_kurumi -IC:\Users\UserName\AppData\Roaming\Arduino15\packages\GadgetRenesas\hardware\rl78\0.1.0\libraries\PicalicoFree -Os -MMD -fno-function-cse -funit-at-a-time -falign-jumps -fdata-sections -ffunction-sections -fno-cprop-registers -fsigned-char -g2 -g -DREL_GR_KURUMI -DARDUINO=100 -DWORKAROUND_READ_MODIFY_WRITE -c -x c++ W:\Temp\UserName\build3628555171575444863.tmp\sketch_apr24a.cpp -o W:\Temp\UserName\build3628555171575444863.tmp\sketch_apr24a.cpp.o

In file included from sketch_apr24a.ino:1:0:
C:\Users\UserName\AppData\Roaming\Arduino15\packages\GadgetRenesas\hardware\rl78\0.1.0\libraries\PicalicoFree/PicalicoClass.h:39:3: error: 'uint8_t' does not name a type
   uint8_t nbr        :6 ;             // a pin number from 0 to 63
   ^
C:\Users\UserName\AppData\Roaming\Arduino15\packages\GadgetRenesas\hardware\rl78\0.1.0\libraries\PicalicoFree/PicalicoClass.h:40:3: error: 'uint8_t' does not name a type
   uint8_t isActive   :1 ;             // true if this channel is enabled, pin not pulsed if false
   ^
C:\Users\UserName\AppData\Roaming\Arduino15\packages\GadgetRenesas\hardware\rl78\0.1.0\libraries\PicalicoFree/PicalicoClass.h:55:5: error: 'uint8_t' does not name a type
     uint8_t attach(int red, int green, int blue);
     ^
C:\Users\UserName\AppData\Roaming\Arduino15\packages\GadgetRenesas\hardware\rl78\0.1.0\libraries\PicalicoFree/PicalicoClass.h:56:5: error: 'uint8_t' does not name a type
     uint8_t attach(int red, int green, int blue, int interval);
     ^
C:\Users\UserName\AppData\Roaming\Arduino15\packages\GadgetRenesas\hardware\rl78\0.1.0\libraries\PicalicoFree/PicalicoClass.h:58:23: error: 'uint8_t' has not been declared
     void setActiveLed(uint8_t num, int led);
                       ^
C:\Users\UserName\AppData\Roaming\Arduino15\packages\GadgetRenesas\hardware\rl78\0.1.0\libraries\PicalicoFree/PicalicoClass.h:67:5: error: 'uint8_t' does not name a type
     uint8_t picalicoIndex;
     ^
C:\Users\UserName\AppData\Roaming\Arduino15\packages\GadgetRenesas\hardware\rl78\0.1.0\libraries\PicalicoFree/PicalicoClass.h:54:24: error: 'LOW' was not declared in this scope
     Picalico(int led = LOW);
                        ^


後追いで調べ直してみたところ、以下の2つの要因が絡んで5つ後のエントリのもののIDE4GR 1.6.5(のような
もの)だけコンパイルエラーになってしまうようでした。

* GR-KURUMI e2studio(V4)用スケッチ環境 V1.12とIDE4GR 0.6.1でPicalicoFree.hの内容が微妙に異なる

→ IDE4GR 0.6.1では#include "Arduino.h"の行が追加されている

* Arduino IDE 1.6.5とArduino IDE 1.6.8(1.6.6以降?)でinoファイル→cppファイルの変換処理が微妙に異なる

→ Arduino IDE 1.6.8(1.6.6以降?)では変換処理が#include "Arduino.h"の行を補う位置が先になっている

具体的には以下の通りでした。

1つ目に関しては、以下のように#include "Arduino.h"の行が追加されていました。

GR-KURUMI e2studio(V4)用スケッチ環境 V1.12の場合

#ifndef OITcodec_PicalicoFree_h
#define OITcodec_PicalicoFree_h

    bool PCFsendNum(int num, int *array); //数字

途中省略

#endif // OITcodec_PicalicoFree_h


IDE4GR 0.6.1の場合

#ifndef OITcodec_PicalicoFree_h
#define OITcodec_PicalicoFree_h
#include "Arduino.h"

    bool PCFsendNum(int num, int *array); //数字

途中省略

#endif // OITcodec_PicalicoFree_h


2つ目に関しては、以下のように変換処理が#include "Arduino.h"の行を補う位置が先になっていました。

Arduino IDE 1.6.5の場合

#line 1 "sketch_apr26a.ino"
#include <PicalicoClass.h>

#include "Arduino.h"
void setup();
void loop();
#line 3
void setup() {
                                          

}

void loop() {
                                                

}


Arduino IDE 1.6.8の場合

#include <Arduino.h>
#line 1
#line 1 "E:\\tools\\micom\\Arduino\\sketchbook6\\sketch_apr26a\\sketch_apr26a.ino"
#include <PicalicoClass.h>

#line 3 "E:\\tools\\micom\\Arduino\\sketchbook6\\sketch_apr26a\\sketch_apr26a.ino"
void setup();
#line 8 "E:\\tools\\micom\\Arduino\\sketchbook6\\sketch_apr26a\\sketch_apr26a.ino"
void loop();
#line 3
void setup() {
  // put your setup code here, to run once:

}

void loop() {
  // put your main code here, to run repeatedly:

}


追記 : メモ

あと、PicalicoClass.hというヘッダファイル名ですが、色付けされないので何か違和感を感じていたのですが、
インスタンスのクラス名(というか色付けの対象となるキーワード)がPcalicoとなっていましたので、ヘッダ
ファイル名としてはPicalico.hの方が良いような気がしなくもないところです。(ライブラリ名もPicalicoFree
ではなくてPicalicoの方が良いような気がしなくもないところです。)

関連記事

2016/04/03   blog-entry-752   category: Arduino Lib & CrossGCC

go page top

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。