2012年8月31日金曜日

PIC32MX220F032B-01 LEDチカチカ(+入力)をする


秋月にてPIC32MX220F032Bが220円と大変安価かつDIPにて32bitマイコンが手に入るようになりました.
折角なので,PIC16FシリーズだけでなくPIC32MXも遊んでみようと試みようと
後閑さんの『高速・多機能を実現する pic32mx活用ガイドブック
を購入させていただきました.
大変良くまとまっています.PIC32MXをC32コンパイラで使うなら手元に置いておきたい.購入するべきです.
しかしながらPIC32MX340F256H用に書かれたものであり,PIC16Fシリーズで扱っていたCCS-Cなどと異なり,単純なコピー&ペーストを行っただけではコンパイルエラーになったり正しい動作が行われなかったりしまてしまいました.
ここではPIC32MX220F032B用に書き直して紹介していきたいと思います.

注意:私の提供する情報を元に何らかのトラブルが生じても責任を負いません.

<今回行うこと>
とりあえず,PIC32MX220F032BにてI/Oの基本機能を扱えるようにしたい.
つまりLEDチカチカだけでなく,INPUTも行います.
INPUTのHigh Lowの状態によって点滅周期が変わるようにします.
ここでは,RB5(14番ピン)を出力に,RB13(24番ピン)を入力とします.

<対象者>
既になにかしらのマイコンを弄った経験のある方であることを前提とします.

<用意するもの>
LEDチカチカするためには以下の部品等が必要になります.揃えましょう.

  • パソコン(「MPLAB X IDE v1.30」と「C32 Cコンパイラv2.02」の環境で行いました)
  • PIC32MX220F032B(言うまでもないけど)
  • PICkit3(PICkit2でも書き込む方法があるらしい)
  • ブレッドボード(EIC-102が好きなのですが,単品で買える店が少ない)
  • ジャンパ線( EIC-102J付属品で良いと思う)
  • 抵抗 1k Ω(LED用),10k Ω(プルアップ用) 各1こ
  • コンデンサ 10uF 最低1こ (0.1uでも動作したが,「なし」では動作しなかった)
  • LED 1こ
<資料>
最新版を探してきたつもりですが,検索かけ直して入手する方が良いと思います.

<配線>
とりあえず,データシートの4ページの下を見てみましょう.
図1 PIC32MX220F032Bのピン配置
私の愛用していたPIC16F88とは異なり,AVDDやらVCAPやらがあります.
どうすれば良いのかさっぱりですね.そこでデータシート27ページを開くと,
図2 推奨する最小接続部品構成
本当はこの程度抵抗なりコンデンサなり付けなければならないようですが,たかだかLEDをチカチカさせるだけなのにここまでしなくてはならないと思うとなんだか面倒です.
そこで,図3に示すような構成で試したところ,特に問題なく動作しました.

図3 LEDチカチカにおけるPIC32MX220F032Bの最小構成
※左右端にある+ラインと-ラインはそれぞれ互いに接続されているものとしています. 
しかし,いくつかの部品を省いていますので場合によっては誤動作する可能性があります.
半透明で黄緑色に塗りつぶしている箇所にPICkit3の信号線を差し込みます.
ブレッドボードのピンアサインとPICkit3のピンアサインは一致しませんので気をつけてください.
私は専用のコネクタを自作し,図4に示すように接続して利用しています.

図4 PICとPICkit3との接続
<プログラム>
以下からソースコードをダウンロードできます.(リンク先にてCtrl+SでZIP保存)
https://docs.google.com/open?id=0B25yKH5pEApFdE9mdFg3dzUyN0U



/*********************************************************************
 *
 *      LEDチカチカ     by Taku MIURA
 *
 *********************************************************************
 * FileName:        main.c
 * Dependencies:    plib.h
 *
 * Processor:       PIC32MX
 *
 * Complier:        MPLAB C32
 *                  MPLAB X IDE v1.30
 * Company:         Microchip Technology Inc.
 ********************************************************************/

//      pin_1       <<MCLR>>
// pin_2       PGED3
// pin_3       PGEC3
// pin_4       RB0
// pin_5       RB1
// pin_6       RB2
// pin_7       RB3
// pin_8       <<Vss>>
// pin_9       RA2
// pin_10      RA3
// pin_11      RB4
// pin_12      RA4
// pin_13      <<Vdd>>
// pin_14      RB5
// pin_15      <<Vbus>>
// pin_16      RB7
// pin_17      RB8
// pin_18      RB9
// pin_19      <<Vss>>
// pin_20      <<Vcap>>
// pin_21      RB10
// pin_22      RB11
// pin_23      <<VUSB3V3>>
// pin_24      RB13
// pin_25      RB14
// pin_26      RB15
// pin_27      <<AVss>>
// pin_28      <<AVdd>>



#include <plib.h>
#include <stdlib.h>

// SYSCLK = 40 MHz (8MHz Crystal/ FPLLIDIV * FPLLMUL / FPLLODIV)
// PBCLK  = 40 MHz
#define SYSCLK  40000000L                      //システムクロック
#define SYSCLKdiv10MHz    (SYSCLK/10000000)    //ディレイ関数用


// Configuration Bit settings
// DEVCFG3:
#pragma config IOL1WAY  = OFF           // Peripheral Pin Select Configuration
// DEVCFG2:
#pragma config FPLLODIV = DIV_2         // PLL Output Divider
#pragma config UPLLEN   = OFF           // USB PLL Enabled
#pragma config UPLLIDIV = DIV_2         // USB PLL Input Divider
#pragma config FPLLMUL  = MUL_20        // PLL Multiplier
#pragma config FPLLIDIV = DIV_2         // PLL Input Divider
// DEVCFG1:
#pragma config FWDTEN   = OFF           // Watchdog Timer
#pragma config WDTPS    = PS1           // Watchdog Timer Postscale
#pragma config FCKSM    = CSDCMD        // Clock Switching & Fail Safe Clock Monitor
#pragma config FPBDIV   = DIV_1         // Peripheral Clock divisor
#pragma config OSCIOFNC = OFF           // CLKO Enable
#pragma config POSCMOD  = OFF           // Primary Oscillator
#pragma config IESO     = OFF           // Internal/External Switch-over
#pragma config FSOSCEN  = OFF           // Secondary Oscillator Enable (KLO was off)
#pragma config FNOSC    = FRCPLL        // Oscillator Selection
// DEVCFG0:
#pragma config CP       = OFF           // Code Protect
#pragma config BWP      = ON            // Boot Flash Write Protect
#pragma config PWP      = OFF           // Program Flash Write Protect
#pragma config ICESEL   = ICS_PGx3      // ICE/ICD Comm Channel Select
#pragma config JTAGEN   = OFF           // JTAG Enable
#pragma config DEBUG    = OFF           // Background Debugger Enable




void delay_us(unsigned int usec);
void delay_ms(unsigned int msec);

int main(void)
{

    //System Setting
    SYSTEMConfigPerformance(SYSCLK); //システム最適設定
    mJTAGPortEnable(DEBUG_JTAGPORT_OFF); //PORTA is used I/O, JTAG port must be disabled.

    mPORTAClearBits( BIT_4 | BIT_3 | BIT_2 | BIT_1 | BIT_0 );
    mPORTASetPinsDigitalOut( BIT_4 | BIT_3 | BIT_2 | BIT_1 | BIT_0 );
    ConfigCNBPullups(CNB13_PULLUP_ENABLE);//RB13をプルアップ
    mPORTBClearBits( BIT_5 );           //RB5をLowに
    mPORTBSetPinsDigitalIn( BIT_13 );   //RB13を入力
    mPORTBSetPinsDigitalOut( BIT_5 );   //RB5を出力

    mPORTBSetBits( BIT_5 );             //RB5をHighに
    delay_ms(2000);                     //2秒待機
    mPORTBClearBits( BIT_5 );           //RB5をLowに
    delay_ms(2000);                     //2秒待機

    while(1)
    {
        mPORTBToggleBits( BIT_5 );     //RB5の出力状態を反転

        if(mPORTBReadBits( BIT_13 ))    //RB13の入力状態がhighなら1
            delay_ms(500);              //0.5秒待機
        else
            delay_ms(250);              //0.25秒待機
    }
}


/**********************************
*  ディレイ関数 usec
**********************************/
void delay_us(unsigned int usec){
 unsigned int i, delay;

 delay = usec * SYSCLKdiv10MHz;
 for(i=0; i<delay; i++){}
}
/**********************************
*  ディレイ関数 msec
**********************************/
void delay_ms(unsigned int msec){
 unsigned int i;

 for(i=0; i<msec; i++)
  delay_us(1000);
}




MPLABにて,(メニュー),OpenProjectで解凍したファルダを選択し,
図5のようにPICkit3を接続した状態でこのプロジェクトに対して右クリック,Runを選択.
図5 MPLABにおけるRunの実行方法

これでコンパイルから書き込みまで行なってくれます.
ちなみに「Set as Main Project」を選択すると,キーボードのF6を押すだけでRunを実行します.
LEDが1秒周期で点滅し,RB13をジャンパ線でGNDに短絡させると0.5秒周期で点滅するはずです.

不明な点,ミスやご指摘等がありましたらコメント等で連絡ください.


ブログランキング・にほんブログ村へ

2012年8月29日水曜日

キャラクタ液晶を使用している皆さんへ



私は普段液晶モジュールを4bitモードで使用しています.
後閑さんの資料『C言語によるPICプログラミング入門』を参考にDB0〜3をGNDに接続していました.
これに疑問を持った方が以下のページで大変詳しく書いています.
最後まで目を通しておいたほうがためになるでしょう.

液晶表示モジュールを4ビットモードで使ったときの空きピン処理について
http://www.oct.zaq.ne.jp/i-garage/trbl/lcd4bit.htm

さんのツイートにて以上のことを知りました.

ちなみに『【改訂版】 C言語によるPICプログラミング入門』などといった最近の後閑さんの本ではオープンになっていることを確認しました.



ブログランキング・にほんブログ村へ

ブログ放置

ブログの更新とまってました..
8月上旬より花火大会やら皮膚病なら実家帰りやらロボコンの交流会やらで充実してました.
本来ならそれらの内容をブログにアップロードして公開するのがブログとの向き合い方なのでしょうが,放置していました.
私には向いていないかな.
本格的なブログを書こうとはしようとせず,気が向いたらメモ程度に残していきたいと思います.



ブログランキング・にほんブログ村へ

2012年8月5日日曜日

PCBCARTを利用する(3) -オンライン見積もり-

今回は, 基板発注のオンライン見積もりについて説明していきます.
ここでは,PCBCARTを例に挙げます.


注意:私の提供する情報を元に何らかのトラブルが生じても責任を負いません.

WEBページの著作権侵害について,グレーかもしれませんがページの一部を引用させて頂きます.


PCBCARTのURLはhttp://www.pcbcart.com/
上記URLアクセス後の画面の様子を図1に示します.
図1  PCBCARTホーム画面およびログイン入力フォーム位置
ページ左上にUserIDとPassword入力欄があります.
今までUserIDという表記がなかったため混乱しがちですが,ここに登録時のメールアドレスを入力してください.
Passwordは各自登録したものを入力し,赤丸のボタンをクリックしてください.

すると,図2に示すように入力フォーム位置にユーザ名とメールアドレスが表示されるようになります.
これで,ログイン完了です.
図2 オンライン見積もりページリンク
では,start quoteをクリックし,オンライン見積もりをしてみましょう.
図3に示すように,何やら書かれています.よく見てみましょう.
図3 見積りに関する注意事項


※私は英語が苦手なのでいい加減に訳します.
IMPORTANT NOTE BEFORE QUOTE 
見積りに関する注意事項

1. If need panelized board please select "Board type" as "Panel" and input board dimension as "Panel dimension",  if have file for single unit only please panelize it or contact us for panelization before order.
面付けが必要な場合には,オプションの「Board type」を「panel」に選択し,Panel Size(全体のサイズ)を入力してください.
個々の基板データを1つのパネルのデータにして提出してください.もしそれが厳しければ発注する前に別途連絡をください.
2. Please double check "Min. Tracing/Spacing", "Min. Annular Ring", "Smallest Holes" specification that completely match with provided PCB file, or it may have extra cost that delay the process.
パターン幅およびパターン間の最小間隔, ビアの最小リング幅 ,最小ドリル径の設定が本当に正しいかどうか,もう一度確認ください.
適した設定になっていない場合には,PCBファイルを訂正していただくかオプション追加料金を頂きます.
3. We will move Silk Screen if it on the pads or when necessary, if strictly could not edit Silk Screen, please check Silk Screen position before send file.
発注したデータでPADの上などといった不都合な位置にシルクスクリーンが存在する場合には,スタッフが製造上支障のない位置まで移動させていただきます.
4. For orders more than 3 Square Meter ( 32.3 Square Inch), Lead time will add 3-7 days depend on quantity.
1700m x 1700mmなどといった3平方メートルを越えるような発注に関しては納期が7営業日ほど伸びます.

初めて基板を製作する方は,1番の面付けについて何を言っているかわからないと思います.
2,3,4番は解説する必要がないと信じています.
どちらにせよ,オンライン見積もりの解説記事ですからここでの詳しい説明は省略します.
今回は基板1種類単品を何枚か発注することを前提に解説していきます.
(1番については別途解説記事を書く予定です.)


Options
Material: ガラスエポキシ基板のみ選択可能
Layers: 片面基板なら1 layer,両面基板なら2 layer
Material Details: Standard Tg 140Cを選択
Part Number *: 任意の見積り名前を記入
Board type: 
single unit
panel
Board Size (width):  mm 基板の横幅を記入
Board Size (height):  mm 基板の縦幅を記入
Quantity *:  pcs 基板の枚数を記入,次の画面で再変更可
Thickness (Finished Board): 基板の厚さを記入,1.6mmが一般的
Surface Finish: 
半田付け面の表面状態について
はんだメッキ,HASL -Hot Air Solder Leveling 通常はこれを選択
鉛フリーはんだメッキ,Lead Free HASL
ニッケル金メッキ,ENIG
銀メッキ,Immersion Silver
錫メッキ,Immersion Tin
フラックス,OSP
銅箔剥き出し,None

Copper Weight (Finished): 銅厚の選択.一般的には35um
Min. Tracing/Spacing: パターン幅およびパターン間の最小間隔
Min. Annular Ring: ビアの最小リング幅
Smallest Holes: 最小ドリル径
Holes Numbers: 合計ドリル加工数
Surface Mount: 実装面の指定.両面ハンダ付けする場合は2 side
Soldermask: ソルダーレジストの有無の指定.普通はBoth Sides
Peelable Soldermask: 一時的な(剥がれる)ソルダーマスク.通常はNone
Soldermask Color: ソルダーレジストの色.お好みで
Matt Color (only add to Green or Black): ツヤ消し有無.通常はNone
Silkscreen Legend: シルクスクリーンの有無の指定,通常は2 side(1 side).
Silkscreen Legend Color: シルクスクリーンの色の指定,通常は白色.お好みで
Gold Fingers: 金メッキ端子の有無.通常はNo
Gold Fingers Number: 金メッキ端子の数.通常は無記入
Gold Fingers Chamfer: 金メッキ端子の面取りの有無.通常はNone
Slots in Board: 基板スロットの有無.通常はNo
Slots quantity in board: 基板スロットの数.通常は無記入
Testing: 基板検査サービスの有無.Yesしか選択できない
UL Marking *: ULマークの有無.趣味ならNoで良い
Date Code Marking *: 製造日時表記の有無.趣味ならNoで良い
Lead Time: 納期の指定.12daysの方が若干安くなるCustom Time Belowで日数を延ばすと更に安くなる.
Special Requirement Note: 特記事項.通常なし
 QUOTE >> 
記入が済んだらQUOTEをクリックし,オンライン見積もりをする.
図4 見積り額
画面が切り替わると,図4に示すようなオンライン見積もり額が表示されます.
Price Matrixの欄内をクリックすると簡単に基板枚数を変更できます.
当たり前ですが,枚数が多いほど単価が安くなります.
この例では60枚注文すると単価が約200円となります.(1ドル78円換算)
(流石に60枚は多すぎるかもしれませんが..)
ADD TO CARTをクリックすると買い物カゴに追加されます.

いかがでしたか?設定項目が多いですが,混乱するような項目はほとんどなかったのではないかと思います.
趣味の工作でも市販品のような基板を発注できる時代になりました.




ブログランキング・にほんブログ村へ

PCBCARTを利用する(2) -ユーザー登録-

今回は, 基板発注について説明していきます.

ここでは,PCBCARTを例に挙げます.

基本的に英語での取引となります.
英語が苦手な方は心配するかもしれませんが,TOEIC350未満(当時)でも全く問題なく取引出来ました.
ひとまずオンライン見積り(その場で金額が表示)だけ行いたいという方もユーザー登録が必要です.

注意:私の提供する情報を元に何らかのトラブルが生じても責任を負いません.


WEBページの著作権侵害について,グレーかもしれませんがページの一部を引用させて頂きます.

PCBCARTのURLはhttp://www.pcbcart.com/
上記URLアクセス後の画面の様子を図1に示します.
図1 PCBCARTホーム画面およびユーザ登録ボタン位置
図1の右上の丸で示すRegisterをクリックします.



なにやら面倒くさそうな項目が沢山ありますが,何を入力すれば良いかわかれば難しくありません.


E-mail & Password メールアドレスとパスワード

E-mail * メールアドレス
Password * 任意の登録パスワード
安全のため,メールアドレスのパスワードと異なるものを使用する
Confirm password * パスワードをもう一度
Password hint パスワードのヒント
(例:What is your mother's maiden name? 母親の旧姓)
Password hint answer パスワードの答え
Billing Address 請求先住所

Title 男性はMr. ,女性はMs.(Mrs.)
First Name * 名をローマ字(例:Taku)
Last Name * 姓をローマ字(例:MIURA)
Company 入力しなくて良い
VAT No. 入力しなくて良い
Phone * 090始まりの例:+8190XXXXYYYY
Fax 入力しなくて良い
Address * マンション名 番地 町
City * 市や区 住所の書き方
State * Otherを選択(先に次のCountryを選択しておく)
Country * JAPAN
Zip code * 〒123-789なら123789
Shipping Address (leave empty if same as billing address) 入力しない

Title 入力しない
First Name * 入力しない
Last Name * 入力しない
Company 入力しない
VAT No. 入力しない
Phone * 入力しない
Fax 入力しない
Address * 入力しない
City * 入力しない
State * 入力しない
Country * 入力しない
Zip code * 入力しない
Designer contact information

Name 入力しない
E-mail 入力しない
Telephone 入力しない
PC Board Fabrication Personal Options

RoHS
Not Require RoHS Compliantを選択する
Dimension unit mmを選択する
Currency (USD or EUR) $を選択する
Deliver by 発注時変更可.
私の場合はひとまずDHLを選択し,FedEXで発注
Regional options:
Date format  お好みで.
上位2つはアメリカ表記,下位2つは国際表記 私はデフォルト
Time format お好みで 私はデフォルトにした
Currency
thousands delimiter
お好みで 私はデフォルトにした
Currency
decimal delimiter
お好みで 私はデフォルトにした
Provide more
inforamtion:
How do you
find our website
* GoogleかBlog
Do you want to
assemble your boards
in China?

Not want to assemble in Chinaを選択
Do you want to
source components
in China?

Not want to source from Chinaを選択


By clicking "SUBMIT" you are agree with our Terms & Conditions. 
 Submit 
利用規約に同意するならSubmitを一度クリックし,登録を完了させる.

画面が切り替わると登録完了です.
登録したメールアドレスに確認メールが届きます.





Gmail三浦琢 <miura.taku@gmail.com>


Thank you for signing up your account at PCBCART

sales@pcbcart.com <sales@pcbcart.com>2011年8月17日 23:52
To: miura.taku@gmail.com
Dear Taku MIURA,
Thank you for registering account in our PCB online quote & order shopping cart system. With your account, you can pre-setup your personnal and regional options like dimension unit, time or currency display format, also shipping methods.

Your profile details:
Billing Address

Title:Mr.
First Name:Taku
Last Name:MIURA
Company:Japan
Phone:+8190XXXXYYYY
Fax:
Address:XXXXXXXXXXXX
City:Nagaoka-shi,Niigata-ken
State:Other
Country:Japan
Zip code:9402141
Shipping Address

Title:Mr.
First Name:Taku
Last Name:MIURA
Company:Japan
Phone:+8190XXXXYYYY
Fax:
Address:xxxxxxxxxxxxx
City:Nagaoka-shi,Niigata-ken
State:Other
Country:Japan
Zip code:9402141

You can do online quote and order easily with your account, modify your profile or check order history in menu "My Account". If you had any questions please browse our "FAQ" or contact us at our support center, we are looking forward to providing our boards and services to you, thank you.

XXXX YYYY


PCBCART - PCB supplier from China
URL: http://www.pcbcart.com
Email to: sales@pcbcart.com
Phone: +86-571-87013819
(If you had any questions, please contact us by reply this email or go to our support center )






ブログランキング・にほんブログ村へ