[H8] 電圧降下に注意

 ハードウェアのプログラミングをしていると、まったく同じプログラムなのにまったく同じ状況で違う結果がでるということがよくあります。理由としては
  • 熱暴走
  • 電力不足による電圧降下
  • ノイズ
などがあります。
今回ハマってしまったのが、電力不足による電圧降下……。与えられた回路だったので気がつくのに時間がかかりました……。マイコンは意外と電力を食います。これからは気をつけようと再認識しました。
コンピュータ > エレクトロニクス | - | trackbacks (0)

[H8] 時限爆弾ROM

 マイコンの ROM は書き換え可能な回数が100回〜500回程度と非常に少ないのです。もともと、大量生産して一度書き込んだ後は二度と書き込まないという用途を主眼にしているので当然なんだけれども、現在デバッグをしている身としてはもうちょっと増やしてほしいものです。(^_^;)
 100回制限で現在55回目、あと45回でプログラムが完成するかヒヤヒヤものです。
コンピュータ > エレクトロニクス | - | trackbacks (0)

[H8] モニタプログラム

 マイコンのプログラミングをしているときは、何度もROMに書き込むとROMが壊れてしまうので、RAMにプログラムを書き込んでデバッグすることが多いのですが、それを手助けしてくれるのがモニタプログラムと呼ばれるものです。
 モニタプログラムを一度ROMに書き込めば、RAMにプログラムを置いただけでプログラムが可能になります。ただ、モニタプログラムによってはROMに書き込むのと同じプログラムではいけない場合があるようです。
 Yellow soft などの高度なデバッグ環境がパソコンにあれば ROM 用と RAM 用のプログラムを簡単に切り替えられるのですが、通信ターミナルでモニタプログラムを利用する場合はリンクする方法を変えなければなりません。
 ROM 用の場合は先頭アドレスからプログラムを書き込めますが、初期化プログラムが最初に起動するようにリンクしなければなりません。一方、RAM 用の場合は初期化プログラムはモニタプログラムに入っているので、プログラムだけを RAM のアドレスに入れる必要があります。この時のアドレスはモニタプログラムに依存するようです。
 モニタプログラムの利用には、いろいろ気をつけなければならないことがあるようなので注意しましょう。
コンピュータ > エレクトロニクス | - | trackbacks (0)

[H8] リンクエラー?

 H8/3052 マイコンで、
void hoge(){
  …
}

int main(){
  …
  hoge();
}

では動かないのに、

void hoge();

int main(){
  …
  hoge();
}

void hoge(){
  …
}


だと動いた。リンク時にmain関数が前に来てないのだろうか??
コンピュータ > エレクトロニクス | - | trackbacks (0)

[H8] シリアルポートレジスタ

 H8/3052 マイコンで、

while(1){//無限ループ
  //SCI0は送信可能か?
  if(SCI0.SSR.BIT.B7){
    //何文字目を送るか?
    switch(i){
    case 1:
      SCI0.TDR='a';break;
    case 2:
      SCI0.TDR='\r';break;
    case 3:
      SCI0.TDR='\n';break;
    //送信終了
    default:
      i=0;
    }
    i++;
  }
}

 と書いて、シリアルポートでaという文字を何度も転送するプログラムを書いてみました。ところが、全く送信できなかったのです。そこで、いろいろな人の書いたプログラムを見てみると、

while(1){//無限ループ
  //SCI0は送信可能か?
  if(SCI0.SSR.BIT.B7){
    //何文字目を送るか?
    switch(i){
    case 1:
      SCI0.TDR='a';break;
    case 2:
      SCI0.TDR='\r';break;
    case 3:
      SCI0.TDR='\n';break;
    //送信終了
    default:
      i=0;
    }
    i++;
    SCI0.SSR.BIT.B7=0;
  }
}

とステータスレジスタを手動でリセットすると直るとのことでした。Σ(゜O゜;
 状態を表すレジスタに書き込むなんて、なんて汚いソースだろう……。
コンピュータ > エレクトロニクス | - | trackbacks (0)

統合開発環境ってすばらしい

 以前、M16C というマイコンのプログラムを作って、液晶ディスプレイドライバやロボットアーム駆動回路を作ったことがありました。そのときはかなり便利な統合開発環境がついていて、コンパイル、リンク、RAMへ転送を一括してやってくれたので非常に楽でした。
 今回、H8 の開発をする機会があったので参加してみたのですが、統合開発環境がいかにありがたいか身にしみました(^_^;)。コンパイル、リンクを BAT ファイルで一括できても、コンソールベースで不便だし、それぞれが別のソフトだから最後の最後でエラーが起きてもどこが原因かわからない……。やっぱり統合開発環境って便利ですね……。
コンピュータ > エレクトロニクス | - | trackbacks (0)

指紋認証の恐怖

 「犯罪は削りすぎると尖る」
 これは、ヤミ金融を『削った』ら振り込め詐欺になってしまったように、犯罪の土壌がある中で、軽い犯罪を法律できびしく取り締まると、犯罪数は減るけども悪質化を招くという意味です。
 たとえば、ひったくり。最近はひったくり防止のために、自転車のかごにカバーをつける人が増えてきました。これで、ひったくりの件数はかなり減り、犯罪を『削る』ことに成功しました。しかしこれは自転車をこかせたり手に持ってる荷物を強奪するへ『尖る』可能性をはらんでいます。
 近年、鍵に変わるセキュリティとして注目をあつめているバイオメトリクス(生体認証; biometrics)というものがあります。これは、指紋、虹彩、血管構造を鍵の変わりにするというものです。しかし、これも犯罪を『削る』ことができましたが、『尖らせ』てしまったようです。
 BBC のニュースの Malaysia car thieves steal finger という記事に、‘chopped off a car owner's finger’という文がありました。 車両強盗は指紋認証で開く車を盗むために「所有者の指を切断した」ようです。指紋認証によって車の窃盗は格段に減りましたが、少数ながら悪質な事件を招いてしまったようです。
 みなさんは、犯罪に会う確率は高いけど被害は軽いのと、犯罪に会う確率は低いけど被害は重いという二者択一を迫られた場合どちらを選びますか?
コンピュータ > エレクトロニクス | - | trackbacks (0)

電話とカメラ

 もしあなたが固定電話の電話機を高さ1mの場所から落としてしまったとします。それで電話機が壊れたら製造会社に文句を言いますか?ほとんどの人は自分に責任があると感じ、文句を言わないでしょう。同様にカメラを高さ1mの場所から落として壊してしまっても、文句を言う人はあまりいません。
 しかし、もしカメラつき携帯電話を高さ1mの場所から落として壊れたらどうでしょう?多くの人がこの程度で壊れるなんておかしいと感じることでしょう。
 技術者サイドから見るとカメラつき携帯電話は、電話機とカメラの機能を両方持ち合わせている上に、小型化、省電力化した超精密機器であり、これら3つの中では最も壊れやすいものです。しかし、顧客はそう思ってくれない...。ここで技術者は涙ぐましい努力をしなくてはなりません。
 当然と思っている電気機器の耐久性の裏には、それを支える技術者の努力がつまっているのです。
コンピュータ > エレクトロニクス | - | trackbacks (0)

トランジスタ技術4月号の付録

CPLD や FPGA がエレクロニクス情報誌の付録になるようになってから、早2年。ついに、トランジスタ技術4月号で開発ツールつきの汎用マイコンが付録になりました。
もはや雑誌の付録なんだか、雑誌が付録なんだかわかりません。
早速購入しようと思いますが、使い道がみつかるかどうか...。
付録の CPLD は組み合わせ回路が必要な場面が思い浮かばず使えないままだし、FPGA は不揮発性書き込みチップがほぼ入手不可能...。
今回も、何か落とし穴があるんじゃないかと心配です...。
コンピュータ > エレクトロニクス | - | trackbacks (0)