トップページ 組込みソフト PICマイコン PICの開発環境 MikroC Pro for PIC

MikroC Pro for PIC                        2010/2/8更新
 ソースブーストCで機能の低かったfloatの演算、sprintf,配列の制約がなさそうなのとエディタがVisual Studio風だったのでこれはいいかも....と思いました。ソースブーストCの商用利用可能なプロフェッショナル版が19800円なのに対し25000円なのでほぼ値段的には同じと思い、これを購入しました。宅配便で届いたのはこれだけ!

CD1枚とライセンスのA4用紙だけ。Webではパッケージらしい写真がのっています。
CDには制約解除のプログラムがはいっているだけ。プログラム本体などはすべてWebでダウンロードしてくれということらしい。25000円のソフトを買ったという実感はまるでなしです。
 気をとりなおして、ソースブーストCで作成したソースをMikroC Pro for PICでコンパイルが通るように修正します。ソースブーストCで18F4550を使いました。MikroC Pro for PICでは、18F2550を使います。
なんだこれは!?
突然エディタでこんな表示が....

こんなソースは書いていません。勝手に変な括弧が表示されています。
普通は、こんな風に正常に表示してます。

何のことかわからず(こんなのが最初にわかる人はいませんよね)調べてみると、このエディタではカーソルが括弧のところあると対応する括弧を強調表示してくれる機能があります。正しい表示はこうなります。

どうもエディタのバグらしいと思います。不正括弧表示のifの前にタブが入っています。タブによる括弧の文字位置を本来より4文字分前に強調表示しているようです。
この括弧の強調表示をしない設定があること見つけました。この機能を使わないに設定すると括弧の強調表示はなくなります。
しかーーーーーーし、
ビルドをする
IDEを立ち上げる
とこの設定は無視されて迷惑な括弧の強調表示が復活してしまいます。

これではタブが入っているソースを書くことができない!
ということになります。仕方なくタブは使わないようにしました。タブは4文字のスペースに変換されるように設定しました。
short が8ビット
 呼ばれない関数があるので調べてみた結果、
shortは8ビット
で処理されています。
16ビットはintだけです。
int はCPUに依存しますから、32ビットになったら16ビットを表現する型がなくなってしまいそうです。
ちなみに、
ソースブーストCは16ビット
CCS Cは何と1ビット
この世界では型が独自に定義されているようですね。
Windowsのソフト開発と違い型はよく見ないと危ない!
char型のポインタがだめなようだ!
 今まで動いていたソフトが急にまったく動かなくなるという現象があり、前後の修正を見ても不具合部分がまったくわからず。時間をかけて調べてみるとcharのポインタに引用符号で記述をするとまったく動かないHEXファイルになるkとが判明しました。不具合のおきるサンプルは以下にようになります。
void main()
{
    int a;
    char buf[32];
    char szDown[] = "key douwn\n";
    char szUp[] = "key up\n";
    
    porta = 0xff;
    trisc = 0x00;
    portc= 0x02;
    strcpy(buf, szDown); //これはOK
    strcpy(buf, szUp); //これはOK
    strcpy(buf, "key douwn\n"); //これはNG
    strcpy(buf, "key douwn\n"); //これはNG
    while(1)
    {
        portc ^= 0x02;
        delay_ms(1000);
    }
}
上記はportcのbit1に接続したLEDを1秒ごとに点滅させるプログラムです。
//これはNG
と記述した部分があると動作しなくなります。
strcpyで szDownのように配列で定義した引数を指定すれば問題はおきません。
問題がおきるのは、"key douwn\n"のように引用符号で括った場合におきます。
さらに条件があります。
strcpy(buf, "key douwn\n");
が一箇所だけしか使われてなければ問題はおきません。2箇所以上使われていると問題が起きる可能性があります。
さらにもうひとつ条件があります。
strcpy(buf, "OK\n");
のように文字数が少ないと問題がおきません。
まとめると、
ある文字の長さ以上の引用符号で括った関数が2つ以上あると動作しないHEXファイルができてしまう。ある文字の長さまで調べる気にはなりませんでした。それより引用符号を使っている部分をszDownのように配列で定義して書き直しました。
結論として
何とかソースブーストCで開発したソースをMikroC Pro for PICで書き直し動作させるkとができました。思った以上の時間を要しました。(2~3倍)

エディタがひどすぎます。
コンパイラも怪しいです。
このMikroC Pro for PICを買って失敗だったかなと思っています。
本来のUSB関係のソフト開発でどうなるか試してから、このコンパイラをやめるかどうか考えます。