忍者ブログ
RoboCup Junior Japan Rescue Kanto OB

             2005~2013
[1]  [2
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

今日は一年生がたくさん来てくれましたね。

見学、検討中の人を含めると10人以上来てくれたのではないでしょうか。


今日の部活もPIC16Fの続きでした。

今日はPWMです。

えっ、今更!?と思うかも知れませんが、僕はHI TECコンパイラの使用経験がないので

当然PWMHI TECではやったことがないのです。


という訳なので今日初めてHI TECPWMをやってみました。


といっても、PWM自体は他のコンパイラで腐る程やっているので大丈夫・・・と思っていたのですが

また爆弾に引っかかりました。


今回の爆弾はPWMのモードです。

普通のPICだとPWMというとCCPピンというピンを使うのですが、

16F1939ではその他にECCPというピンがあったのです。

どちらのピンもPWM等のパルス制御に用いられるモジュール用のピンなのですが、

ピンの名前が違うだけあって、微妙に仕様・・・というよりレジスタが異なります。

1939にはCCPは2つ、ECCPは3つ、それぞれピンが搭載されています。

なのにPICのピン名の表記が

ECCP1
ECCP2
ECCP3
CCP4
CCP5

と、何故かナンバリングが繋がっているのです。

これに騙されてPWMが動きませんでした(笑)

番号繋がっている上に名前が似てるから、CCPかと思ってCCPのレジスタ使ってたら、思いっきりECCP使ってました。

そりゃ動かないわけだ。ついでのにクロックの設定もミスってたので凄まじいことになっていました。

という訳で今日の16F19XX シリーズの落とし穴は、CCPモジュールとECCPモジュールのピンの名称です。

まぁPICですから落とし穴はつきものです。

さてと、次は何を発見することになるのでしょうか・・・。


それにしても今更ですが、標準で入力がアナログになっているっていうのも、ユーザーには常識ですが、初見からみたら完璧に落とし穴ですよね。


(^・ω・)ノ RadiumProduction in RoboCup Junior
最近はPICだと、16F19XXシリーズしか使っていないような気がします。
32MXはなかったことになりましたからね・・・

部員にもオススメしちゃいましたのでちょっと紹介しようかと思います。


まずはコンパイラですが、基本的にハイテックを使うのが一般的なようです。

僕もハイテックで書いてますので16Fに関してはそれで統一しちゃいましょう。

さて、新しい新しいとは言っていますが、実際になにが違うのか。

まずはその辺りの話をしていこうと思います。


基本的には、プログラム視点だと古い三桁台も四桁台も対して変わりません。

まぁ同じコンパイラ使っていますから当たり前ですね。

でも、ハードウェア視点で見ると、違いが躊躇に出てきます。

なのでプログラムでも、ハードが関係する部分においては、多少の違いが現れてきます。


まずは動作クロック

CPUで何Gの・・・とか言っているアレと同じです。

クロックというのはパルス波、つまり周期的な電気信号なので、信号を発生させる発振子という物が必要になります。

三桁台の場合、その発振子を外部につけてやる必要があるのですが、

四桁台の場合は発振子は内蔵されているので必要がありません。


また、クロックは勿論大きいほうが性能は高いです。

処理速度でモロに関わってくる部分ですからね。

これも、三桁台は最大20MHzですが、四桁台は最大32MHzとなっています。

また、三桁台だと、一つの処理を行うのに4クロック必要になりますが、四桁台だと1クロックで済みます。

つまりこの違いだけでも処理速度に四倍の差があることがわかります。


次はプログラムの書込みについて

三桁台の場合・・・

というより普通のPICはプログラムの書き込みにPGDというピンとPGCというピンを状態で使用していました。

仕組みは勿論四桁台もかわらないのですが、何故か四桁台だけそのピンの名称のみが変更されているのです。

PGDはICSPDATというピンに、
PGCはICSPCLKというピンに、

それぞれ変更されています。

これはこのPICの書き込みに使われている通信がICSPというので

わざわざわかりやすい名前に改名したようです。


そして次は通信の際のピンの設定について。

基本的に、通信を行う際にも通信に使うピンは入力か出力かのどちらかに設定しないといけません。

只、その設定をどちらにするかが同じ通信でも三桁台と四桁台で変わってきます。

これが結構で間違えると通信ができない訳なのですが、通信自体のプログラムは同じなのに

ピン設定だけ違うということになりますので、しっかりデータシートを読まないとわからないのです。

落とし穴ともいうべき仕様変更ですね。


まぁ大まかに今、僕が知っているのはこのくらいでしょうか。

結構知らないと根本的にプログラムが書けなくなるような事項がほとんどなので、

16Fの四桁台を使うことがあれば以上の点に注意して頂けると非常に楽にプログラムが書けるかと思います。


という訳で、今回の記事はこの辺で。

次回は・・・なににしましょうか・・・

(^・ω・)ノ RadiumProduction in RoboCup Junior
今回はPICの種類についてです。

今まで話題に出てきた16Fとか24Fの違いについて説明することになります。
 

まず、PICには8bitのものと16bitのものと32bitのものの三種類があります。

これはパソコンでいうところの32bitCPUか64bitCPUかの違いに相当します。

これは基本的にはレジスタ等のビット数の違いに反映されています。

また、基本的にビット数が大きい程高性能になっています。

 
次にファミリーについて説明します。

PICの型番はそのほとんどが最初二桁が数字でその次がアルファベット、そしてその後に数字が並んで

最後に場合によってはアルファベットがくることがあります。

この最初の二桁+アルファベットのことをファミリーと呼びます。

ファミリーはPICの種類をそのまま示すもので、これによって使用するコンパイラなんかも変わってきます。


このファミリーのなかで今一番メジャーなのはアルファベットの部分がFになっているPICです。

これはフラッシュメモリが搭載されているPICで、プログラムを何度でも書き換えることができるものです。

逆にCと書いてあるものは、一度プログラムを書き込んだらもう書き換えが出来ないので注意しましょう。

ものによっては紫外線で書いたプログラムを消して、また書き込めるようになるものもありますけど・・・


このフラッシュメモリが搭載されている種類だと、

10F
12F
16F
18F
24F
24H
DSP30F
DSP33F
32MX

 
まぁこの辺りが主な種類でしょうか。

10Fと12Fは極小規模のPICなのでうちの部では使っていません。

また、18Fも主にUSB用のPICとして作られている節があるので使っていません。

DSPとついているものはDSP機能が搭載されている種類で、割りと高性能ですが、

ちょっと秋月価格的にお高いのでこれもあまり使いませんね。

という訳なので、うちの部では16Fと24F、あとは24Hと32MX、大体この4つを利用しています。



因みに先程のbit構成で分けると、

18F以前のPICが8bit構成、24Fと24HとDSP30,33が16bit、32MXが32bit構成になっています。

図にするとこのような感じになります。
主なフラッシュメモリ搭載のPICの位置づけです。32MXだけ32bitなので孤立しています。

このようにPICには様々なファミリーが存在して、それぞれに特徴があって用途が変わってきます。

そしてそのファミリーの中でまた、色々な種類のPICがある訳です。

といっても同じファミリーのPIC同士なら内部構造はほとんど同じで、

違う点といったらピンの数とか、ピン配置といったことぐらいしかありません。


なのでコンパイラも同じものが使えますのでほとんどプログラムを流用することができます。

16F、18Fの場合は新しい4桁台のやつはちょっと他と違いますけど・・・


逆に違うファミリーだと、同じPICとはいえ、色々異なる点が多いので注意したほうがいいかと思います。


因みに僕がいま使っているのは16F1939なので左の緑の四角の中の青い丸、16FファミリーのPICです。

新しい4桁台のPICなのでちょっと古い16Fと命令の方法が違ったりするのでややこしいですね。

とりあえずPICの種類に関してはこんなところでしょうか。


結構数が多いのでどれを使えばいいか悩みどころだとは思いますが、迷ったときはまず16F を使えば間違いないと思います。


または24Fの一番ちっさいのを使うか。2つに1つってところですかね。

でも新規でPICをはじめるなら、安くて性能の良い16Fの4桁シリーズをお勧めします。

新しい分ちょっとデータが少ないですが、基本的なところは旧16Fと変わらない筈なのであまり困りはしないと思います。


という訳で今日の記事はこのへんで。PIC系列は今後も頻繁に更新されると思いますので宜しくお願いします。


(^・ω・)ノ RadiumProduction in RoboCup Junior
実は部活用に急いでデータベースを確立したいので

結構な速度で目次に投入する必要のありそうな記事を書きたしていたりします。


今日はその中でもPICのコンパイラについてお話ししましょう。

コンパイラについては以前にもあちらこちらで記述しているかと思うのですが、コンパイルは翻訳機なので

C言語を機械語に翻訳してくれます。でも、パソコンに対して使う命令とPICに対して使う命令って勿論違いますよね?

だとしたらそれに応じて翻訳機、つまりコンパイラも変える必要があるのです。


一般的なC言語だと、gccとかccとかborlandが定番ですけど、PICだとどうなるのでしょう。

実はPICの場合、ファミリーごとにコンパイラが分かれています。

つまり、16Fだとこのコンパイラ、24Fだとこのコンパイラ、という風になっているというわけですね。


とりあえず今はうちの部で基本的に使われているコンパイラについて紹介します。

まず最初に紹介するのはHI-TECH C、どっかの会社と同じ名前ですね。

これはMPLABインスト-ルの際についてくるコンパイラです。

PICのコンパイラとしては恐らく一番標準的なもので、大体今のPICなら殆どのPICはこれで対応できるはずです。
現在はPIC10、12、16、18ファミリーまでしか対応していないようです。また、16までと18でも分かれているようです。

只、基本的に定義されている関数がちょっと少なめなので初心者にはちょっととっかかりにくいかもしれません。

このコンパイラでは基本、「レジスタ」というものを直接操作することで命令を行なっていくようになっています。

NXCとかだと、このレジスタに直接触れる機会はなく、基本的に関数を通してレジスタの中身を操作しています。

つまり、元々NXCとかに定義されている関数のほとんど(モーターを回したり、センサーを読んだりするもの)は

このレジスタの操作を関数にまとめたものということになります。

まぁレジスタってなんなんだ!?という話はまた今度にして、とりあえずそういうものだという理解をしておいてください。

Lite版は此方からダウンロードできます。


そして説明するのがMPLAB C Compiler for PIC24 MCUs and dsPIC DSCs。

ちょっと前までC30っていう名前のコンパイラでした。

このコンパイラはMPLAB C というコンパイラの一種でPIC24F、24E、24H、DSPIC30F、33F、専用のコンパイラです。

上で挙げたPICの場合、HI-TECH Cでプログラムを作るよりも、此方で作るほうが楽なので使っています。
追記:今のHI-TECH Cコンパイラは上で挙げたPICは使えないようです。

此方はHI-TECH Cのようにレジスタをあまりいじらなくていいように

NXCみたいに関数が作られている仕様になっているんですけど・・・

このコンパイラの関数は色々と信用がおけないのでやっぱりレジスタをいじったほうがいいと思われます。

これはLite版はフリーコンパイラで、此方の方でダウンロードできます。


最後に紹介するのがMPLAB C Compiler for PIC32 MCUs。

これもMPLAB Cコンパイラの一種です。これはPIC32MX専用となっています。

現在、他に32MX対応のコンパイラが無いのでC言語で32MXをするならこれしかありません。

とりあえず今回紹介したコンパイラの中では一番使える関数が多いというのが特徴でしょうか。

でもわざわざ32MXを使うような人は基本的にPICには精通している人のはずなので、

わざわざ関数を使うようなこともないでしょう。恐らく殆どの人がレジスタで済ましているはずです。

このコンパイラもフリーなので、此方からダウンロードすることができます。


とりあえず今うちで使っているコンパイラは以上3つだと思います。

今回紹介したのは全てMicrochip社の純正のコンパイラですが、他にも色々とコンパイラは存在します。CCSとか・・・。

因みにCCSは事故コンパイラで有名なので余り推奨は致しません。ホントのホントに初心者用ですね。有料だし。
あまり色々させるとあの子はバグります。例えるなら・・・NXT-G的な。


まぁこんな感じでこのようなコンパイラを使ってPICではプログラムを書いていくことになります。

このブログでもこの先、PICによるプログラムを記述する場合があるとは思いますが、

勿論コンパイラによって微妙に命令などが違ってきますので(Microchipのはどれもあんまり変わらないけど・・・)

どのコンパイラのプログラムなのかは注意して頂いた方が宜しいかと思われます。


という訳で今回はコンパイラの話でした。それではまた。


(^・ω・)ノ RadiumProduction in RoboCup Junior
使っているPICは16F1939。新しいシリーズの16FのPICです。

とりあえずコイツを2台乗せで行ってみようと思います。

今こんな感じになっていますね。PIC以外殆ど何もありませんが、この基盤はこれで殆ど完成しました。
PICのメイン基板です。一応これで完成ですが何も無いです。

まぁメイン基盤にこれ以上載せるものも、載せる場所もありませんけど・・・。

このソケットにPICを2つのっけてI2Cで相互通信をする予定です。

本当はI2Cなんて使う予定はなかったのですが、何故かこんなことに。
SPIでさくさくーっとやる予定が、SPI用のピンとI2C用のピンがブッキングしてしまっていたので仕方なく・・・。

しかも使いたいセンサーのbpsがものによって違うので、いちいち変更しなくてはいけないという面倒くささも問題です。

思ったより事故な仕様になりそうな予感がバリバリですが、まぁいつもなんとかなっているので今回もなんとかなるでしょう。

後はこの基盤はコア用のコンデンサを付けるのと、端子を接続するだけで完成です。

そして最後にセンサー基盤を上につけて・・・回路は完成です!


それにしてもこの回路群。作ったはいいけど一体何に使おう・・・。


(^・ω・)ノ RadiumProduction in RoboCup Junior
この前、Microchip(PICの会社)のサイトが新しくなりました。

それでその時に気がついたのですが、


MPLAB'X なんていう見たこともないけど、どっかで見たことあるようなモノがリリースされていました。
MPLABXのロゴ。本家サイトより直接URLコピです。
ココ!http://www.microchip.com/pagehandler/en-us/family/mplabx/

要するにアレです。MPLABの次世代版ですね。勿論どんなものか気になりますけど・・・

まぁ初モノには当然事故がつきもの、いきなり使ってみるのは怖いですよね。

という訳で、電気通信部のPCにインストールしてみました。




・・・というのは嘘で入れたのは電気通信部の部長さんです。バックアップのついでに入れたんだってさ。

まぁ面白いものなのでみんなで電気通信部のPCの前で色々やってみました。


それでやってみての結論ですが、

・重い

・何故かよくわからない段階でいちいちソースをロードし始める

・ソースエラーをパッシブで表示してくれる

・プロジェクトの生成が楽

・何故かHitecコンパイラの_delay関数がPROじゃないと使えなくなってる。←X関係ない

MPLABよりは安定はしてるけどホントに書き込めているかは謎



まぁ今のところこんな感じで有耶無耶な結果に終わりました。まぁ僕は見てただけですから・・・。

と、言う訳でちょっとよくわからない仕様の面もありますが、

便利「そうな」機能便利とは限りませんよ!がいっぱいついた結果、ちょっと重くなったよね。って感じでしょうか。

僕はいつもPICは(も)09年時代のネットブックで書いているので、

僕が使うとなるとちょっとスペック的に残念かもしれません。MPLABですら怪しいですから・・・。


まぁもうちょっと電通の様子を見て、使えそうなら自宅のi7にでも入れてみようと思います。

この件に関してはまた何がありましたら、どんどん掲載していく予定です。

それでは今日のところはこのへんで。


(^・ω・)ノ RadiumProduction in RoboCup Junior

前にPIC16FI2Cの実験をしているという話を致したと思います。
 
 
昔24Fで何事も無くできたので、テストがてらに・・・なんて思っていたのですが、
 
何故か全然出来なかったんです。
 
その謎が今日、データシートを読み返してわかりました。
 
一口にPICと言っても、18F以前のものと24F以降のものでは内部構造が全然違っていて、
 
I2Cの部分でもそれは躊躇に現れています。
 
というのも、I2Cの通信に使われるSCKとSDAというピンがあるのですが、18F以前だとこれは
 
マスターモードの場合は両方出力に、スレーブモードの場合は両方入力にする必要がありました。
 
それに対して、24F以降のPICでは、どちらのモードでも入力にする必要があります。
 
 
それで今回、僕が使ったのは16F1939。16Fなので当然前者になる・・・と思っていたのですが、
 
データシートを見るとなんと後者だったのです。
 
どうやら最新式である16F18xxシリーズと16F19xxシリーズのPICは新しい方の規格を採用しているらしく、

両方とも入力にする必要があるようです。

設定を変更したら何事もなかったかのように通信を成功させてくれました。全く・・・

 
今回の件にしても・・・やっぱり最新式16F達は今までの16Fとは別物と考えるべきなのでしょうね。常識通じないよこの子達・・・
 
やっぱり謎だらけです最新式16F。
 
まぁ謎の数で言えば24Fに勝るPICはないのでしょうけど・・・

なんてったって一般に知られているものだけでも、
 
UARTなどの数多くの関数の類が揃いも揃ってバグってるし、IrDA勝手に使ってるし!
ADコンバーターに関しては関数自体がダミーだし、ヘッダだけ・・・
挙句RA3ピンだったかな。強制常時H出力でちゃってるし。これ一番意味不明!

なんて具合です。
 
今思えば32MXが一番まともだったような・・・気がします。イネーブル機能してなかったけど

 
そんなPICの一日でした。ロボットやってねぇ!

 
(^・ω・)ノ RadiumProduction in RoboCup Junior
今日は健康診断がありました。

そして今日はおもいっきり寝坊をしたので、今日の活動はそれで終わりました。

なんか、全然ロボット触っていませんね。殆ど何も変わってない・・・。

プログラムに至っては、昨日坂のプログラムを修正しただけで、後はブロック大会から何も変わっていません。


まぁ正直なところ帰る変えるところもあまりないというのが現状なんですけど・・・。


話は変わりますが、今週の日曜日に秋葉に行った際にこれを買って来ました。
PIC16F1939、新しく製造された16Fシリーズの中の一つですね。
PIC16F1939です。

40ピンで170円。まぁまぁ安いPICですよね。これを2つ買ってきました。

16Fといっても最大クロック周波数32MHz、アナログピンが14個、CCPピンが5個搭載されているので

十分ロボットに使う分には問題ない仕様だと思います。SPIとI2Cが一つしか無いのは残念だけど・・・


とりあえずI2CPIC同士の相互通信をやってみようと思います。

I2Cは以前にもやったことがあるので、普通に使えるものなのですが、

今回、プログラムコンパイラを初めて使うものに変更したので確認も込めてという形でやってみます。

まぁ明日中には終わるのではないでしょうか。

そんな感じで今日はこのへんで。

ではまた次回~。


(^・ω・)ノ RadiumProduction in RoboCup Junior
FDD・・・フロッピーディスクドライブ。

昔は僕も使っていましたが、

フロッピー自体前時代的なので今では殆ど使われませんね。
実は校内無線が導入される去年までロボカップ部は外とのデータ交換にコレを使用していたりしていたんですが・・・

まぁその主な理由は保存できるデータ容量の少なさ。

基本的に1Mbyteが限界です。今の時代だと下手したら写真一枚入らない容量ですよね。

そんな訳で殆どつかわれることがなかったのですが・・・


エコだとかもったいないの精神なんかに則って、こういったFDDやブラウンTvのように、

性能で劣る旧世代の電子機器の新しい使用方法を模索しようという動きが何年か前から起こっています。


そんなFDDですが、こんな使い方をするなんて・・・と思わせるような使い方をしている人を発見しました。

・・・楽器?

どうやらFDD8台を使用して曲の演奏を行なう動画のようです。

この手の動画は他にもたくさんあって、あちらこちらのサイトで紹介されているようですね。

それでこれ、なにをどうやってやっているのかというと、

普通はPCに繋いで専用のソフトで演奏していると思いますよね?

ところがこれ、実はフロッピーディスクの磁気ヘッドを直接制御しているんです。

何で?勿論マイコンでです。

要するにコレ、PICでできちゃうんです。

ドライブの種類によってだせる音階が違ったりするんだそうです。だから動画のFDDは全部種類が違うのか・・・

音楽の方は当たり前ですが、MIDIに変換するのが一般的なようです。MIDIであればPICでも十分に扱えますからね。

只、PICのプログラム・・・というより、この場合、出せる音階がハードによって決定されてしまうので

汎用性のある媒体を作ろうと思ったらMIDIのデータの編集作業が必要になってきてしまいます。

ちょっとその辺が判る人でないと少々めんどくさいかもしれませんね。



因みに磁気ヘッドの制御によるものなのでHDDでも同じことができすはずですよね。まともな音はならないでしょうけど。

MIDIの操作さえ出来ればそこまでムツカシイ制御ではないはずので、みなさんも試してみたらどうでしょうか。

という訳で今日の記事はこのへんで

関連
ブロックなロボット
セグウェイって履くものだったんだね。
いや速すぎるでしょコレ。ミニ四駆とはなんだったのか・・・


(^・ω・)ノ RadiumProduction in RoboCup Junior
という訳で今日も昨日の続きです。

今日はPWMの周波数の設定を行いました。なんか一日これだけで終わってる・・・。

なんでこんなことをしているかというと、モータードライバの回路の中でフォトカプラという部品を使用していまして、

その部品が余り高周波のパルスに対応していないんですね。

なのでデータシートから算出した計算値を基にPWMの周波数を決める作業兼耐久テストを行いました。



耐久に関してですが、5分10分程度の動作ではモータードライバの温度も安定、問題なく動作することがわかりました。

それ以上の長時間の駆動を行うには、とりあえずソケットの交換が必要ですね。今は押さえていないと回りませんから・・・。

そしてだいたいPWMの周波数も決定しました。ちゃんとduty比を変えてやるとモーターの速度が変わります。


とりあえず今日出来たのはそんなところ。特に可もなく不可もなく、普通に一日終わりました。

まぁここ最近レポートで徹夜続き(みたいなもの)ですからそんなにあれこれ出来ませんよね・・・。


と、言う訳で一先ずこれで一段落。やっと一息つけそうです。


今日は・・・ねるぞー!

それでは今日はこのへんで

(^・ω・)ノ RadiumProduction in RoboCup Junior
昨日の続き。

内容は、例のモータードライバモーターを動かそう。ということで

昨日配線を行ったので今日はプログラムですね。

まぁとりあえずPMWで制御をしてみましょう。ということになったのですが、問題発生。

32MXでのPWMの使い方は普通にわからない(笑)


という訳で色々調べてみたのですが、


なんと優しいことに関数がありました。

普通こういうのってレジスタを直でいじりますよね・・・。関数があるなんて・・・

といっても僕個人としてはレジスタいじるほうが楽なんですけどね。

今回はせっかくあったのでこのPWM用の関数を使って見ることにしました。

確かOCxOpenって関数だったかな。
OpenOCxでした。

とりあえずそれを使ってみることに。


それで、(途中寝落ちしたけど)プログラムができて、動かしてみたのですが、

あれ?動かない・・・?

・・・これはまずい!ということで原因を探したのですけど、これまた酷いところに・・・

というのも、ちょっとコードを引っ張って見たんです。

そしたらなんと・・・。






動きません。

今度はちょっとコードの端子の部分を押してみました。

そしたら・・・

動きません。

じゃあ今度。逆にちょっと端子を浮かせてみます。







ぶいーん。

・・・?コード事故った?

という訳で線を差し替えてみます。




・・・


動きません。

端子の部分を押してみます。

動きません。

じゃあ今度。逆にちょっと端子を浮かせてみます。





ぶいーん。


・・・



その後色々やって見ましたが、その結論。

端子のソケットが不良品である。

ツメがついていて絶対に接触不良なんか起きないような仕様なのにその部分で不良してるんですもん。

そもそも普通に挿すとつながらないってどういうことだよ・・・。

という訳で不良品を掴まされた。という結論に至った残念な一日でした。


それでは今日はこのへんで。この記事PICあんま関係ないね。

(^・ω・)ノ RadiumProduction in RoboCup Junior
とりあえず今日は液晶、つまるところのLCDの搭載と、モータードライバ用の端子をPIC基板に接続

それだけで終わりました。残念ながら今日も時間不足で・・・。

どちらにせよ、プログラムには暫くまともに手をつけていないのでどうなることやら・・・。


さてと・・・こんな感じでまともにプログラムがかけるのかな・・・?


とにかくまともな動作できる程度には持って行こうと考えてはいますが、どうなるかなぁ・・・


全くどうなるか想像をつかないPIC32MXでした。そもそも何を作るか決めてないし・・・

それでは今日はこのへんで


(^・ω・)ノ RadiumProduction in RoboCup Junior
急遽予定を変更して本日行なう事になったPIC講習ですが・・・

・・・3回目にして既に◯◯な人と××な人の差が3段階ぐらいついてしまっているような・・・。


今日の内容は、PWM、pulse width modulationです。

本当なら単純なLEDの出力とスイッチの入力をやる予定だったのですが、

参加者の過半数が昨日の時点で(というより昨日)終わらせてしまっていたのでこれまた急遽予定が変更されました。

PWMとはpulse(パルス) width(幅) modulation(変調)の名前の通り、パルス変調の方式の一つですね。

出力する矩形波のデューティ比、つまり1波長におけるHighとLowの比率を可変させる変調方式です。

まぁこの話は以前に記事にも結構書いてあるような・・・もう一年近く前だね。

詳しくないけど詳しくはそちらの方に書いてあるっぽいです。


まぁそういう訳で、今日はPICPWMを制御をやってみようということで、

余り時間もありませんでしたが、ひと通りのPWMの説明を行いました。

でも結局、周りは寝てたり死んでたりだったので、まともに受講した人は一人しかいませんでしたけど。

ま、そのひとりさえできれば後僕が教える必要はないのでいいっちゃいいのですけど・・・。


という訳で、今日は時間の関係上説明だけに終わってしまったので課題として、

PWMを使用してLEDをじわじわと光らせーじわじわと消してー(以下無限ループ)」というプログラムを作らせることに。


まぁそこまで難しくはないですから、テスト明けにでもちょちょいとやれば出来る内容でしょう。


という訳で一年生諸君は頑張ってね。ということで。

それでは今日はこのへんで。

(^・ω・)ノ RadiumProduction in RoboCup Junior
掘りだして、見なおして、出なおして、


昨日、再びPIC32MXプログラムを書いてみました。

と・・・いっても、昔作った回路がちゃんと生きているのかを確かめるために、

一先ずは、単純にLEDを点灯させるプログラムを作ってみることに。


まぁプログラムはすぐ・・・できたのですが、動かしてみると待っていたかのように異常が発生。

なんていうか・・・LEDがつきません。

あまりにPICをやらなかったせいでPICができない子になっちゃったのか!?と焦ってみたものの、

ちょっと回路を見てみると、とんでもないことに気が付きました。


それLED逆・・・orz

アノードカソードが見事に逆に突き刺さっていました。某◯◯◯◯部に回路外注して貰ったから確認してなかった・・・。

っていうか以前にこの回路を使ったときは、いったいどうしていたのでしょうね・・・謎だ・・・。


という訳で、予想通り(?)回路がちゃんとしてなかったので(破損とかの方を心配したんだけどなぁ・・・)

LEDはつくはずもない・・・と。付け替えたらちゃんと点灯しました。


自分で作ってないとはいえ、これは酷い・・・。気づけよー。

そう思った昼下がり(をちょっと過ぎた辺り)の一時でした。


(^・ω・)ノ RadiumProduction in RoboCup Junior
さて、今から2、3年ほど前の話になるのですが、PICに新しいシリーズができまして、

それがPIC32MXと呼ばれるPICです。

当時、このPICは日本では販売されていなかったのですが、

なんでだろう。2010年の春先にわざわざそれを輸入して回路を作ってしまったことがあるんです・・・

でも、なんていうか・・・シンガポール世界大会が決まった影響で、そっからすっかり放置してしまったのですね。

それからもう2年が経過しようとしています・・・。

と、言う訳で。

2年ぶりにPIC32MXを今日触ってみました。と言うより掘り出した?

どうやらこのPICPIC単体では今でも日本国内では発売されていないようですね。評価ボードならあるみたいだけど・・・

なんか結構貴重なものっぽいですね。大事にしないとね!


ところが問題がひとつ(どころか沢山)浮上しまして、

まず電源がどれだかわからない。(っていうか回路がどうなってるんだコレ(笑))

そしてコンパイラが見つからない。

そもそもPIC自体久しぶりなので、若干忘れている。


という訳で、今日は記憶を手繰り寄せていたら終わりの時間になってしまいました。(泣)


さてと、この回路は一体電源に何Vをつないだらいいんだろう。

とりあえず明日もっぺんトライしてみます。ダメならダメで・・・どうしよう?

それではまた


(^・ω・)ノ RadiumProduction in RoboCup Junior
ちょっと事情があってちゃんとした講習ができなかったので、今日は部室で規模を小さくして行いました。


なんか人数もへってるような・・・気のせいだよね。


今日は、とりあえずPICに触れてみようということで、

ブレッドボードを使って、PICの最小構成回路を作成するという内容でした。


電源回路とPICを繋いで、コンデンサ入れて、プログラム書き込み用端子を接続する。これだけの簡単な作業です。

特記するようなことがあまり無いような・・・そんな感じで今日は終わりました。

どうやら水曜日はもう授業があと1,2回しかないようなので、あと1,2回で講習を終えないといけないのですが、

・・・むり(笑)

これは・・・少し巻きでやっていくしかなさそうですね。

とりあえずプログラムの宿題っぽいものをだしたので、来週はその答え合わせから入ろうと思います。

来週はアナログ入力とPWMぐらいはできたらいいなぁ。なんて感じです。

そんな感じで今日はこのへんで。次回はまた来週です。

(^・ω・)ノ RadiumProduction in RoboCup Junior
という訳で今日から水曜日にPIC講習を行うことになりました。


といっても・・・正直なにも考えていなかったので、今日はガイダンスで終了しました。

結局、PICって何って話をしようと思ったらコンピューターの歴史の話になって、

そっからコンパイルの話に飛んで、PICの分類なんて話をして、

MPLABを落として、

終わりました。


・・・何もしていないような・・・


とりあえず来週は実際にPICの回路を作ってプログラムがかけるといいなぁ。

それでは。


(^・ω・)ノ RadiumProduction in RoboCup Junior
先程、PICが一個お亡くなりになりました。


死因ですか?えっと・・・


はんだごてで思いっきり頭から焼いたことによる焼死・・・でしょうか(苦笑)

ちょっと手が滑っちゃったんです。よくある。

やっぱり80Wは使うべきじゃなかったか。若気の至りってヤツですね(笑)

(^・ω・)ノ RadiumProduction in RoboCup Junior
随分前にMPLABの話をした際に

「次はプログラムかPICkit2かなー」なんて話をしてから早2か月半。

ようやくPICkit2の話です。


外観はこんな感じ。
PICkit2です。黒の外装がなkなかおしゃれです。
秋月だと大体3500円くらいで売っています。

今は3も出ているので結構安くなりましたよね。この前3も値下げしやがったし・・・馬鹿野郎><。

PCとの接続はUSBのminiBピン端子を使い、PICとは左下のピン端子で接続します。

こいつはプログラムのダウンロードのほかに、デバック、電源供給、あとはUARTの接続を行うことができます。

特にUARTは非常に便利で、PIC32MXを使っている自分でも、PICkit2を未だに使っている理由は

これといっても過言ではありません。3でプログラム書いて、2でUART、なんかシュールだなぁ・・・

この子たちはMicrochip純正商品なので、基本的に安定していて、

また、書き込み等も簡単に行えるようになっています。

今では珍しくもありませんが、発売当初はPICを基盤から取らずにプログラムの書き込みができる!

ってことでかなり話題になったものです。

つまりそれ以前はPICをいったん基盤から外して、

書き込み用の基盤に挿さないと書き込みというのは行えませんでしたからね。

消すのは赤外線照射だったり。そもそもプログラム一回しか書けなかったりもしましたし・・・


このPICkit2の登場はPICのそういった使い辛さを一気に解消してくれた、

いわばPIC史上最強の兵器だったのです。これによりPICユーザーが大量に増えた・・・はず(笑)

3にデバック機能が搭載されていないことから、今でも現役で使われている・・・

というより、その使いづらさ(2に比べて)がばれてしまったので、このご時世、

よほどのことがないと、3に乗り換えるという人はいないのではないでしょうか?
僕みたいに日本で未発売のPICを某シンガポールから輸入でもしない限り・・・

32MXは日本にまだない上に、2では書き込みできませんからね。これは仕方ないことです。


まぁそんなこんなで日本ではPICといえばコレ!ぐらい有名な書き込み機なんです。

じゃあ海外では?

実は海外では日本と違ってAVRやHSシリーズが主流なのでそもそもPIC文化があまりないのです。

ゲーム機でいうと任天堂とセガサターン位の違いでしょうか。


まぁ最近では日本でもAVRとHS増えてきましたよね。僕もH8やHSはたまに使います。

PICと違い、画像処理とかできそうな雰囲気があるので・・・

といっても僕が画像処理やるとしたらARMにいきますけどね(笑)


まぁそんな感じのものがPICkit2です。

使い方?時間がないのでそれはまた今度ということで。


因みにPICkit1はこんな感じ。2以降とは全然違いますね。
PICkit1です。一昔のマイコンの書き込み機はみんなこんな感じでしたね

(^・ω・)ノRadiumProduction in RoboCupJunior
PIC経験者にしかわからないような記事を唐突に書いてみようと思います。


最近、秋月電子でお目にかかるようになった PIC16F193Xシリーズと16F182Xシリーズ 。

16F1933
16F1936
16F1937
16F1938
16F1939 
16F1823
16F1827


この辺りがそうですね。

何れも今までの16Fシリーズとは格が違った仕様となっていますよね。


勿論、高スペック的な意味で。

僕が使ってみた感じだと、そこら辺の24Fや24Hよりいいんじゃないでしょうか?

再び16Fの時代が来てしまいそうですね。

それに格段に安い!

同じPICでも、秋月価格で

16F873 600円
16F1936 150円


同じピン数のPICなんだけどなぁ。しかも150円の方が圧倒的高性能。

こりゃ買わないわけにはいきませんよね。


でも、このシリーズ、ちょっと使おうと思ったら一瞬驚くんですよね。

なにかっていうと、ピンアサインを見ても、肝心なプログラム書き込みに使われるPGDPGCのピンが無いんですよ。


ということは・・・従来の方法では、書き込めない!?という風に考えてしまうんですよね。


でも実は普通にできます。しかもその方法は普通にデータシートにありますよね。

ちょっと目次の下の方を見ていくと・・・

ICSPというものがあります。これがもろにICDXやPickitXなどでプログラムを書くときのものなんです。

なのでここを開いてみると・・・

あらあら、ちゃんと接続方法まで書いてあるじゃないですか。

これによると、どうやらPINの名前が変わっただけみたい。

PGD→ICSPDAT
PGC→ICSPCLK

なんかめっちゃわかりやすい名前に変わってますね。

つまりは、PGDが28ピン、PGCが27ピンということになりますね。

あれ・・・この位置・・・旧シリーズと同じじゃないか?

なんだかんだ言っても旧型と互換性を持たせようとするMicrochipに乾杯です。流石すぎる・・・

という訳で今日はPICを使う際にはちゃんとデータシートを読みましょう。という話でした。


データシートも読まずにあっちこっちの板での質問が多かったですよ。世界各地のサイトで(笑)


それでは。


因みにPickit2は対応していません。



ICDシリーズ(通称ハンバーガー)かPickit3を使いましょう。

ICD2
ICD2です。2万円前後します。高いですね。でもこれがあると非常に便利ですよ。僕は持ってないけどロボコンにあるのでたまに使います。
ICD3
ICD3です。実物を使っている人を見たことがありません(笑)めっさ高いし。因みにハンバーガーの由来はこの丸い形とmicrochipのロゴが某ファーストフード店のそれに似ているからです。

Pickit3
Pickit3です。素材が2と違います。中にあるマイコンも違うので、2とは完全に別物ですね。これは持っていますが、とても安定して使いやすいですよ。UARTできないけど。






どうしてもPICkit2を使いたいのであれば、MIcrochipのサイトにあるデバイスファイルを落としましょう。

そうすればPICkit2でも使えるようになるはずです。



(^・ω・)ノRadiumProduction in RoboCupJunior
今まで、このカテゴリーでは、

PWMの説明

アナログとデジタル

・回路作成に必要なもの 材料 工具

電流、電圧、電力について

・抵抗の話 123

・コンデンサの話 1234

回路図について

・ダイオードの話 123


と、このように色々な説明をしてきました。

まぁまだまだ回路についての記事は沢山書けるもの(特に素子の紹介)があるのですが、


とりあえずそれは置いておいて、今回、ようやくPICについての話をしようと思います。
PICの例です。懐かしい黒歴史ですね
PICというのは講習でもやったように、Peripheral Interface Controllerの略で、


要するになにかというと、ちっちゃなコンピューター=マイクロコントローラー、所謂マイコンの一種です。
専門用語だとLSIの1種っていう扱いになるんですけど・・・めんどくさい!


まぁPICはその中でもちょっと性能は残念だけど、

資料も多くて使いやすく、安いことから世界中で(主に日本だけど)人気があるマイコンです。

マイコンというのは・・・電気で動いて、プログラムをPCから書き込むことで、色々な動作を行うことができる・・・

所謂RCXNXTの中の人、と言ったらいいでしょうか。そんな感じものです。人間でいう頭脳だね。


それでこのマイコンたちは全部、デジタルで動いています。

つまり電圧があるorない、これだけで全てのプログラムを電気的に表現して、動作をしています。


ちょっと難しいですね。まぁ要するにマイコンの中には沢山スイッチがはいっていて、

そのスイッチがついているかついていないか、これを内部で判断して別のスイッチを付けたり消したり・・・

ということを何千何万と行って動いているということです。実際はちょっと違いますけど・・・まぁこんなもんでしょう。


それで、そのスイッチの開け閉めを命令するのがプログラムと、まぁこんな感じです。

そうそう、PCとかでよく、クロックの周波数、とか聞きますよね、1.6Gとか2.4Gとか。最近は3G越えも珍しくないですよね。

あれはそのPCが一秒間でスイッチを開け閉めできる回数を意味しているのです。

つまりクロック数が1Gとかだと1秒間に10億回スイッチの開け閉めができるという訳です。

無論この回数が多くなればなるほどプログラムの実行の速度が速くなりますよね。

だからクロックが速い方がPCの動作は早いのですね。

まぁこのクロックというものは、もちろんマイコンにもついていて、

PICの場合だと大体8~120MHzくらいものがありますね。PCを比べると極端に遅いことがわかります。


また、古いPICだとこのクロックを生み出す発振子がPIC内部に搭載されていなかったりするので


このようなセラミック発振子を使ったりしていました。
セラミック発振子です。昔はよく使ったなぁ・・・因みにもっと精度のいいやつに、水晶発振子ってのがあります。時計などでは定番ですが、ちょっと問題があってPICではあまり使われません。
今のPICは発信子が内蔵されていますのでこれは必要ありませんね。 


そういった経緯があって今のPICは電源をつなぐだけで動作してくれるといっていいでしょう。

昔と比べて非常に簡単になりました。


まぁこれなら誰でも扱える・・・はず!


という訳で今日はPICについてさらっとお話ししました。


もうちょっと深いところはまた今度ということで


それではそれでは。

(^・ω・)ノRadiumProduction in RoboCup Junior
今日の講習会は、PICについての一連の開発の流れを紹介しました。

これでもう総書記様はPICについては完璧になってくれるでしょう。

という訳で部のPIC講習は今日で終了いたします。


詳しい内容は今度。

(^・ω・)ノRadiumProduction in RoboCupJunior
たまたま今日午後、秋葉に行ったのですが。

そんでたまたま、秋月に行ったんですね。

そしたらこんなものが・・・
PIC16F1938です。一体いつの間に出たんだか。

こんなPIC、みたことない。

初めて見る系列のPICが店頭にあったので買ってきちゃいました。PIC16Fって887までじゃなかったのか・・・ 


調べてみたら、どうにもPICを販売しているMicrochip社がつい最近、

新しいPICを短期間に何種類も市場に投入したことがわかりました。

つまり、これはその時に発売された新型のPICのひとつという訳ですね。道理で知らないわけだ・・・

もちろんまだ詳細なデータは調べていません。でも18F24FDS30FDS33F

さらには32bitのPIC32MXまで発売したというのに今更PIC16Fの最新機って・・・どうなんだろう。


でも大きな特徴は、とにかく安い。

今までの同サイズのPICと比べると、200円も安くなっています。

16F873と比べたら3倍以上値段が違いますよ・・・これは凄い・・・

まぁその分なんか性能が残念なんでしょう。どうせ16Fだし・・・

でもなんか面白そうなので、ちょっと遊んでみようと思います。


それでは。

(^・ω・)ノRadiumProduction in RoboCupJunior


P.sナメててスンマセン。やっぱりほかの16Fとは桁違いでした。

これ、普通に使えますね。

どうやら今日、4月4日は厄日のようなのです。

まず、朝起きると腹痛くなってるし、朝食が何故かないし、肩と腰と右足は異様に痛いし、

外に出ると花粉の量が多いのか鼻がずっと止まらない状態が続くし目は痒いし、

ノードの片付けやって部室いってNXTつけるといきなりLowBatteryでるし、

充電池だから充電に時間かかって調整全然できないし、替えの単3在庫切れてるし、

部活は午前中で終了だし、サッカーの方の回路がブートローダーごとクラッシュしたことがわかったし、

それで急遽買い出しに行って挙句秋葉で買い忘れするし電車来ないし、しかもそれで昼食べ損ねたし、

家に帰って落下事故で両手に切り傷、力入れると痛いし、足の小指の爪割れるし、

しかもその影響で基盤が一時真赤になるし、拭くの大変だし、

更に半田ごてまでコンセント刺さったまま降ってきて熱いし指膨れるし、

挙句何故かその周辺にいたカメラ床に落としちゃうし、今も指痛いし血出てるし、

そしてライントレースしないし、


とにかく今日は普段ならあり得ないほどの厄を被った気がします。4、4で縁起も悪いからかな?

大会での運の悪さも相当ですが、今日はそんなの超越するくらい運が悪いです。しかもミスも重なって・・・

逆に大会1週間前に厄日きて、ここ当面の厄を今日被ることができたからこれ本番超運強いんじゃないかな?

って開き直っちゃうくらい酷いです。

あーぁ。もう今日は寝たい。今すぐに寝たい。そんな気分です。

でもやらなきゃいけないこと。そう。クラッシュした基盤の復元です。


といっても壊滅状態(しかも原因不明)なので一から作り直すことに。

そして家に帰って1時間後・・・

こうなりました。
サッカーの方で使うメイン基盤です。割とシンプルに見えますが、コードをつなぐとジャングルになる予定です。
30分以内で作れたんでしょうけど、色々事故やトラブルやミスがあって1時間もかかってしまいました。

とりあえず真ん中に乗っているのがPICです。

型番は24FJ64GA002 世界大会でも使用したメジャーな24FファミリーのPICです。

この基盤にはこのICと電源回路(奥のやつ)しか載っていません。

後は全部センサー基盤とモータ基盤に搭載されています。


つまり一番単純なPICの回路といえるでしょうか。

プログラムの書き込みに関しましては、基盤前部の6ピンの端子にブートローダーを繋いで行います。

まぁ今書き込んでも、他に何もつないでいないので何をおきやしませんが。

という訳で、大会六日前にしてまさかのメイン基盤変更となった高専サッカーチームでした。

あ、ちなみに電源部にレギュレーターを乗せるつもりだったのですが、

まさかの買い忘れによりコンデンサ周辺に意味ありげな空間が生まれてしまっています。


それではみなさんオヤスミナサイ

(^・ω・)ノRadiumProduction in RoboCupJunior
カレンダー
05 2019/06 07
S M T W T F S
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
最新CM
[09/25 ONE RoboCuper]
[11/19 big]
[11/11 お馬さん]
[08/08 うまごやぐらし!]
[04/20 匿名(にさせてw]
かうんた
らじぷろ目次
らじぷろ検索機
プロフィール
HN:
Luz
年齢:
25
性別:
男性
誕生日:
1994/02/15
職業:
大学生
趣味:
ラボ畜
自己紹介:
初めまして。Luzと申します。
某大学の情報学科に入りました。のんびりと生活を送るのが今年の夢です。
めーる
radiumproduction☆yahoo.co.jp
※☆を@に変更して下さい。
バーコード

PR

忍者ブログ 2007-2018,Powered by Radium-Luz-Lα+-Rescatar in RadiumProduction [PR]


Related Posts Plugin for WordPress, Blogger...