2012年8月29日水曜日

基板の動作確認

手マウントした1枚目の基板をいよいよ動作確認です。

電動窓の方はちゃんと動きました。
リモートで開閉動作ができています。


床暖房の方は最初ちょっと変な動作をしていました。
何回かon/offをするとERROR7と表示されて床暖房のリモコンが効かなくなってしまい分電盤で電源を一度落とさないと復帰しません。
どうしてか悩みましたがマニュアルを調べてみるとERROR7とは『HA端子に規格違反の信号が入力された』エラーだそうです。
debug用にプログラムのlogを出しすぎていたためHA端子のタイミングが遅くなってしまったようです。logをoffしたらちゃんと動きました。

動作ステータスも最初読めなくて四苦八苦してましたが、C compilerのbugのようです。
以前の手配線基板での実験はMacBookProのMountenLion LLVM3.1でISコマンドの読み取りを

    int d = 0;
    int m = (res[4] << 8) | res[5];
    int p = 7;
    if(m) d = (res[p++] << 8) | res[p++];


のような書き方で書いていたのですが、ちゃんと動作してました。
常時サーバーを立てる前準備として古いCoreSoloのMacMiniのSnowLeopard gcc-4.2では最後の行の
    d = (res[p++] << 8) | res[p++];
の部分がちゃんと解釈されず
    int d = 0;
    int m = (res[4] << 8) | res[5];
    int p = 7;
    if(m) {
      d = (res[p] << 8) | res[p+1];
      p+= 2;
    }
のようにp++を使わないで書かないと動作しませんでした。
debug用にprintfをいれてdの値がおかしいことがわかった段階で、以前仕事でgccを使っていて同じ現象を見たことを思い出して気が付きました。
これを修正したところちゃんと動作ステータスも読めるようになりました。



0 件のコメント:

コメントを投稿