ブログ「サイバー少年」

ブログ「サイバー少年」へようこそ!
小学六年生ごろからプログラミングを趣味にしている高校生のブログです。
勉強したことについての記事などを書いています。フリーソフトも制作、公開しています。
(当ブログについて詳しくは「ブログ概要紹介」を参照)

サイバー少年が作ったフリーソフトは「サイバー少年の作品展示場」へ

PICマイコン購入!

昔、AsaBonさんやRaldyさんが組み込み開発についての憧れを記事に書いていたことがありました。

私自身も半年以上前ですが、記事「組み込み開発やりたい」で憧れを語っていました。

というわけで!


興味本位で、PICマイコンとライタと秋月で購入しました。

その記事では、
「PIC等だとアセンブリ言語の開発になって難しいから.NET Micro Frameworkでやりたい」
と言っていたのですが、なんかPICにしました…。

アセンブリ言語なんて触ったことないですね…。

しかも、PICのメモリはプログラム領域とデータ領域が分かれていると聞きます。


しかも、アセンブリ言語を使えるのかという問題に加え、

ハードウェア設計が出来るのかという問題がありますね。

これは、アセンブリ言語を覚えるなんて問題よりも重大です。


要するに、マイコンを使うには電子工作の前提知識が必要なわけです。

…私は抵抗で躓いております(笑)

スキル的には、本来なら半導体部品も使いこなせる状態が理想なんでしょうね。


…ぶっちゃけ、やり方が全然分からずに挫折する可能性が高いです。

PICライタが高くて、合計5000円ほど使ったのですが、失敗した買い物になるかも知れませんね。


まぁただ、失敗という学習と思えば…。

あまり自分に期待はしておりませんが、とりあえずチャレンジしてみます。

tag:

コメント

僕も以前からやっているんですが、ハードウェアの所が難しいんですよね…
ちなみに、今使ってるのはPICではなく、AVRです。ほとんどのモデルでCが使えたりするのが便利

  • 2013/07/07(日) 08:48:02 |
  • URL |
  • gear #-
  • [ 編集 ]

Re: gear

AVRマイコンですか~。
ハードウェアは本当に難しいですよね。
まず電気の性質から理解しなければならないですからね。

いや~、私がPICを選んだ理由はマイコンが安いからなんですが、難易度のことを考えるとArduino、そしてArduino互換のNetduino(C#で開発可能)でも良かったんじゃないかと思います。

主にPICはアセンブリ言語での開発ですからね…。

おぉぉぉぉ~!
うらやますぃ~!

とりあえず僕はマイコンへのプログラムの書き込みを勉強したら、電気回路についてもちょこっと勉強してなんか夏休みに作ってみたいですね!

  • 2013/07/08(月) 22:01:20 |
  • URL |
  • 表記なし #-
  • [ 編集 ]

Re:

名前が書いてありませんが、初めてお会いする方かな。
夏休みの工作というと、ロボットなんて良さそうですよね~。

ただ今日、荷物が届いて、ちょっとやってみたのですが、難しいですね。
やっとIDE入れましたが、アセンブルは出来ませんしライターは認識出来ませんし…。
今までのソフトウェア開発での知識は、全く通用しませんでした…。

とにかく、そちらも頑張ってください。

アセンブラは、また、違った知識が必要ですが簡単です。
レジスタやCF,ZF,POPが基礎になるかと思います。
命令が少なく、少なすぎて、自作する必要が増え、コードがながくなる傾向にあります。
掛け算や、割り算の自作など。。。
ただ、勉強すれば、あ~Cの++インクリメントは、アセンブリを真似てあるんだとか、そう言うのは判るようになると思います。
他にも、メモリ空間やIOに付いて判ってきます。

最近は、Cでもできるようになっているので、そっちで勉強するのもありかもしれません。
ttp://www.ee.fukui-nct.ac.jp/~yoneda/data/C/a_07.htm

足の数がなんで、この本数なの?とか。
16bitって、レジスタやセグメントの、、、以下ry
とりあえず、ハードの仕組みがわかるようになれますね^^。

  • 2013/07/11(木) 14:47:13 |
  • URL |
  • 通りすがり #EBUSheBA
  • [ 編集 ]

Re: 通りすがり

なるほど~アセンブラも色々あるんですね。
そういえばADDしかないやつだと掛け算、割り算は自作ですよね。
浮動小数点数型の自作なんてしたら身になるかも。

アセンブリ言語の学習も役立つので、やってみたいと思いますが、PICマイコンだとプログラムの動作を目で見るのが困難なので、x86パソコン用のアセンブラを組むほうがとっつきやすくて良いかなと思えてきました。

PICマイコンだとLED光らせるだけでも面倒くさそうですし…。
おっしゃって頂いたように、Cのコンパイラもありますので、PICはC言語でやるほうがいいかな…と。

そもそも、もうPICは諦めかけています(笑) 早すぎ!

>そもそも、もうPICは諦めかけています(笑) 早すぎ!
せっかく買ったのに、もったいない><
せめて、ピカピカと点滅くらいまで、やってみるとか。。。

掛け算や、割り算は、低級のマイコンだと、自作したほうがいいです。
アセンブラには、命令を実行するときに、必要クロック数というのがあります。
クロック数=CPUを占有する時間みたいなものです。
例えば、足し算だと、クロック2、ビットシフトだと、クロック2、掛け算だと、クロック70とかと言う感じで決まっています。
掛け算のクロックは、非常に大きいのです。
例えば、最初から、4倍ときまってる計算は、ビットシフト2回ですます。
これだと、クロック4(シフトを2回する(同じ命令を繰り返す場合3というのマイコンもあります。ここでは簡単に2倍にしています))です。
掛け算を使うと70なので、なんと、17倍遅いと言う事になります。
こんな感じで、アセンブラというのは、クロック数やらメモリを気にしながら扱う言語となります。
WINでは、MASMになると思いますが、1ドット色を変えて点滅させるのは、大変ですよ。
参考 8086アセンブラのクロック&命令について。
ttp://hp.vector.co.jp/authors/VA003988/asm.htm
ttp://software.aufheben.info/kouza/beginner/kouza_asm.html

  • 2013/07/13(土) 22:18:58 |
  • URL |
  • 通りすがり #EBUSheBA
  • [ 編集 ]

Re: 通りすがり

もったいないんですけどね~。
まず書き込み方法で挫折したもので…。

掛け算の必要クロック数ってそんなに大きかったんですか!
整数×整数なら足し算の繰り返しでいけそうですが。
そういえば浮動小数点数の足し算って普通より遅いのだろうか。FPUがあるしなぁ。

しかし、そうなってくるとビットシフトは偉大ですよね。×2^nは簡単ですね。
右シフト時に小数部が切り捨てられるのは玉に瑕ですけども。
あれ、固定小数点数なら問題ないのではないか。

よくよく考えてみると、色んな疑問が生じますね。

あと、LEDを光らす場合プログラムは簡単、でもそのLEDの接続がむずい。
パソコンのディスプレイは超簡単に接続できるが、プログラムがむずい。

どうにかならないものでしょうかね…。

ああ、回路の製作は、ブレッドボードを使います。
ttp://jsdiy.web.fc2.com/avr_7segclockbb/
ttp://www.marutsu.co.jp/user/begin_pic.php
ライタについても、上記にかいてあるかな。
これで、わかればいいんだけど。

あと、ビットシフトした時に切り捨てられた値は、CFに入っています。
CF=キャリーフラグと読みます。
似たようなものでZF=ゼロフラグもあります。
ttp://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1178330196

浮動小数点のクロック数は遅いですね。
少なくとも、100クロックは、越えます。
ttp://rakasaka.fc2web.com/delphi/numop.html

アセンブラで10進の演算はむずかしいですね。
小数点がからんでくると、とくに。
コンパイラor言語のバグ?だったのか、
昔のソフトには、0.9+0.1ができないバグがあって、
エクセルでの計算結果が0.9999になってることがありました。
小数が入る計算は向いてませんね。
今でもあるようで。。。
ttp://blogs.yahoo.co.jp/fyodol_patrichev/49873400.html

  • 2013/07/14(日) 20:59:25 |
  • URL |
  • 通りすがり #EBUSheBA
  • [ 編集 ]

Re: 通りすがり

ありがとうございます。書き込み方法が分かりました。
私が買ったライタはMPLAB Xに対応していなかったようで、MPLABなら対応しているのですが、MPLABは起動しなかったのです。
環境変数を一時的にいじって、テンポラリフォルダのパスを1バイト文字だけにすることで起動できました。

ブレッドボードは買ったのですが、問題は繋ぎ方ですよね。
ブレッドボードの仕様や、その他、電子回路を繋ぐ時の注意点など、まぁ勉強していけたらいいなと思います。

LEDを光らせるだけなら、増幅はいらないと思うので、簡単だと思いますが。(マイコンは+5Vだったか。)

浮動小数点数の計算、すごい遅いですね。
FPUがあるから速く計算できるだろうと思っていたら…。
コンピュータって実数が苦手ですよね。
10進数で管理するdecimal等の型ならやりやすいんですけどね。

コメントの投稿

トラックバック

トラックバック URL
http://cyberboy6.blog.fc2.com/tb.php/282-62a821df
この記事にトラックバックする(FC2ブログユーザー)

当ブログをご利用(閲覧等)になる場合は必ず「当ブログの利用規定」をお守りください。