2012年9月7日金曜日

PIC32MX220F032B-04 A/D変換(ADC)を使う


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

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


<今回行うこと>
PIC32MX220F032BにてA/Dコンバータ機能の基本機能を扱えるようにします.
今回はAN5(7番ピン)でアナログ値を入力し,値の情報をシリアル通信で送信します.
ADコンバータが機能しているかどうかターミナルソフト「Tera Term」で確認します.

  • AN5(7番ピン)でA/D変換(ADC)を行う
  • UART1(RX):RB13で使用(受信割り込み)
    • "a"入力で A/D値,"v"入力で電圧値の表示選択を行う.
  • UART1(TX):RB15で使用(printf出力)
    • 50msec待機ごとに(50msec周期ではない)A/D値or電圧値を送信
<対象者>
PIC32MX220F032BでUARTを使う(受信割り込み)(printf出力)を理解した方

<用意するもの>
  • PIC32MX220F032BでUARTを使う(受信割り込み)(printf出力) の環境
    • パソコン(「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こ
    • Tera Term などといった通信ソフト
    • 3.3VレベルのUSBシリアル変換ケーブル 
  • 半固定抵抗
    • 0~3.3Vを出力するものであれば何を使用しても構いません
<資料>
最新版を探してきたつもりですが,検索かけ直して入手する方が良いと思います.
<配線>
特別解説すべきことはありません.私は図1に示すような配線を行いました.
図1 半固定抵抗の接続

<プログラム>
以下からソースコードをダウンロードできます.(リンク先にてCtrl+SでZIP保存)
※前回と異なり,ボーレートが57600bpsになっています.
設定事項は後閑さんの『高速・多機能を実現する pic32mx活用ガイドブック』に書かれています.
ただし,丸コピすると他のアナログピンを持つI/Oピンが機能しなくなるトラブルに見舞われました.
PIC32MX220F032Bデータシートを眺めてみると,AD1PCFGレジスタが存在しませんでした.
AD1PCFGレジスタに何か書き込む指令を行うと不具合の元になります.
また,AN5;RB3のI/Oポート設定を入力にするのを忘れないよう気をつけてください.

// ADC Configパラメータ定義
#define AD1CON1R ADC_MODULE_OFF | ADC_FORMAT_INTG16 | ADC_CLK_MANUAL | ADC_AUTO_SAMPLING_ON |ADC_SAMP_ON
#define AD1CON2R ADC_VREF_AVDD_AVSS | ADC_OFFSET_CAL_DISABLE | ADC_SCAN_OFF | ADC_SAMPLES_PER_INT_4 | ADC_ALT_BUF_OFF | ADC_ALT_INPUT_OFF
#define AD1CON3R ADC_SAMPLE_TIME_3 | ADC_CONV_CLK_SYSTEM | ADC_CONV_CLK_6Tcy
#define AD1PCFGR (0x0000)
#define AD1CSSLR SKIP_SCAN_ALL


    CloseADC10();
    SetChanADC10( ADC_CH0_NEG_SAMPLEA_NVREF | ADC_CH0_POS_SAMPLEA_AN5 );
    OpenADC10(AD1CON1R, AD1CON2R, AD1CON3R, AD1PCFGR, AD1CSSLR);
    EnableADC10();

ConvertADC10();    // 変換開始
while(BusyADC10());   // 変換完了待ち(1チャネル分)
Result = ReadADC10(0);   // 変換結果読み出し


半固定抵抗を任意に回転させ,ターミナルで表示させると以下のようになりました.

Voltage = 2.155
Voltage = 2.155
Voltage = 2.145
A/Ddata =  665
A/Ddata =  665
A/Ddata =  665
A/Ddata =  668
値が±3程度で暴れ,見事に安定しません.これは,PIC32MX220F032BでLEDチカチカ(+入力)をするの 図2 推奨する最小接続部品構成 の指示に従っていないこと,電源が不安定であること,ブレッドボードを利用していることが原因と考えられます.場合によってはA/D変換速度を見直すべきでしょう.

追記:推奨する最小接続部品構成の指示に従ってみたところ,+1あるいは-1に収まりました.


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

2012年9月2日日曜日

PIC32MX220F032B-03 UARTを使う(受信割り込み)(printf出力)


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

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


<今回行うこと>
PIC32MX220F032Bにてシリアル通信,UARTの基本機能を扱えるようにします.
Peripheral Pin Select (PPS) Peripheralと呼ばれる機能があり,これによってある程度UARTを使用するピンを指定することができます.
UART1で送信と受信を行います.送信はprintf出力を行えるようにし,受信では割り込み処理が行えるようにします.
シリアル通信が正常かどうか確認するため「Tera Term」を利用します.
  • UART1(RX):RB13で使用(受信割り込み)
    • "["の受信でカウントアップ,"]"でカウントダウンを行う
  • UART1(TX):RB15で使用(printf出力)
    • 50msec待機ごとに(50msec周期ではない)カウント数を送信


<対象者>
PIC32MX220F032BでLEDチカチカ(+入力)をするを理解した方


<用意するもの>
  • PIC32MX220F032Bで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こ
  • Tera Term などといった通信ソフト
  • 3.3VレベルのUSBシリアル変換ケーブル 

<資料>
最新版を探してきたつもりですが,検索かけ直して入手する方が良いと思います.

<配線>
  • 変換ケーブルの黒(GND)をブレッドボードのマイナス(GND)へ接続
  • 変換ケーブルの橙(TXD)をブレッドボードのRX(RB13,24ピン)へ接続
  • 変換ケーブルの黄(RXD)をブレッドボードのTX(RB15,26ピン)へ接続
TTL-232R-3V3を使用する場合には,図1に示すような配線になっていれば配線完了です.
図1 シリアル変換ケーブルの接続

<プログラム>
以下からソースコードをダウンロードできます.(リンク先にてCtrl+SでZIP保存)
https://docs.google.com/open?id=0B25yKH5pEApFc0g2TS1vOEFmVjQ
まずはPPSの設定を行いましょう.
PIC32MX220F032Bデータシートのp145,「11.3 Pripheral Pin Select」を開きましょう.
TABLE11-1および11-2に具体的なピンの対応表が載っています.
以下のように宣言すれば使用できます.他のペリフェラルについても同様に設定を行えます.
     mPORTBSetPinsDigitalIn( BIT_13 );
     U1RXR = 0b0011;    //PIN RPB13 = RX
     mPORTBClearBits( BIT_15 );
     mPORTBSetPinsDigitalOut( BIT_15 );
     RPB15R = 0b0001;   //PIN RPB15 = TX

次にUARTの初期設定(割り込みに関する宣言を含む)を行います.
ボーレートが9600bpsと大変低速の設定にしています.お好みで変更してください.
     UARTConfigure(UART1, UART_ENABLE_PINS_TX_RX_ONLY);
     UARTSetFifoMode(UART1, UART_INTERRUPT_ON_TX_NOT_FULL | UART_INTERRUPT_ON_RX_NOT_EMPTY);
     UARTSetLineControl(UART1, UART_DATA_SIZE_8_BITS | UART_PARITY_NONE | UART_STOP_BITS_1);
     UARTSetDataRate(UART1, SYSCLK, 9600);
     UARTEnable(UART1, UART_ENABLE_FLAGS(UART_PERIPHERAL | UART_RX | UART_TX));
     
     INTEnable(INT_U1RX, INT_ENABLED);//INT_SOURCE_UART_RX(UART1)
     INTSetVectorPriority(INT_VECTOR_UART(UART1), INT_PRIORITY_LEVEL_2);
     INTSetVectorSubPriority(INT_VECTOR_UART(UART1), INT_SUB_PRIORITY_LEVEL_0);

以下の関数を宣言することによってUARTの送信をprintf関数で扱えるようになります.
ただし,printf関数はプログラムサイズが大変大きいので注意が必要です.
 void _mon_putc (char c)
 {
   while (U1STAbits.UTXBF);
   U1TXREG = c;
 }

受信割り込みの冒頭だけ補足をします.
後閑さんの『高速・多機能を実現する pic32mx活用ガイドブック』と同様にmU1RXClearIntFlag();を入力するとコンパイルエラーとなります.何故かMX220Fでは未定義扱いになります.そのため,レジスタを直接いじる必要があります.IFS1bits.U1RXIF = 0;と入力すると無事に動作しました.
void __ISR(32, ipl2) U1RX_interrupt(void){
 char RcvData;

        IFS1bits.U1RXIF = 0;        //mU1RXClearIntFlag();  
 RcvData = getcUART1();

後閑さんのサンプルプログラムでは,動作停止や再開,カウントアップダウンが多少異なります.
そのあたりについては『高速・多機能を実現する pic32mx活用ガイドブック』を参考にしてみてください.


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

2012年9月1日土曜日

PIC32MX220F032B-02 LEDチカチカ(各種タイマ割り込み)をする


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


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


<今回行うこと>
PIC32MX220F032BにてI/Oの基本機能を扱えるようにします.
タイマ1,タイマ2,タイマ3を16ビットモードで,
タイマ4,タイマ5をタイマ45の32ビットモードとして扱います.
タイマの割り込みが行えているかどうか確認するために,RA0~RA3にLEDを取り付けてそれぞれの割り込みが行われた際にそれに対応したI/Oポートの出力状態を反転することで可視化を図ります.
  • タイマ1:100msecごとにRA0の出力を反転
  • タイマ2:200msecごとにRA1の出力を反転
  • タイマ3:400msecごとにRA2の出力を反転
  • タイマ45:800msecごとにRA3の出力を反転
<対象者>
PIC32MX220F032BでLEDチカチカ(+入力)をするを理解した方

<用意するもの>

<配線>
RA0~RA3にLEDがそれぞれ点灯するようにLEDおよび抵抗を接続してください.
私がブレッドボードにて配線を行った例を図1に示します.

図1 配線例
ブレッドボードでLEDを使用しようとすると抵抗によってスペースの無駄ができてしまいます.
私はこれを大変嫌っており,チップ抵抗とチップLEDを組み合わせたミニボードを自作し利用しています.

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

前回のプログラムから以下を追加するだけです.

    //Timer1 Enable Setting     25nsec x 64 x 62500 = 100msec
    OpenTimer1(T1_ON | T1_SOURCE_INT | T1_PS_1_64, 62500);
    //Timer1 interrupt Setting
    ConfigIntTimer1(T1_INT_ON | T1_INT_PRIOR_2);

    //Timer2 Enable Setting     25nsec x 256 x 31250 = 200msec
    OpenTimer2(T2_ON | T2_SOURCE_INT | T2_PS_1_256, 31250);
    //Timer2 interrupt Setting
    ConfigIntTimer2(T2_INT_ON | T2_INT_PRIOR_2);

    //Timer3 Enable Setting     25nsec x 256 x 62500 = 400msec
    OpenTimer3(T3_ON | T3_SOURCE_INT | T3_PS_1_256, 62500);
    //Timer3 interrupt Setting
    ConfigIntTimer3(T3_INT_ON | T3_INT_PRIOR_2);

    //Timer45 Enable Setting     25nsec x 256 x 125000 = 800msec
    OpenTimer45(T45_ON | T45_SOURCE_INT | T45_PS_1_256, 156250);
    //Timer45 interrupt Setting
    ConfigIntTimer45(T45_INT_ON | T45_INT_PRIOR_2);

    //割り込み許可
    INTEnableSystemMultiVectoredInt();

 /**********************************
*  Timer1割り込み処理
**********************************/
void __ISR(4, ipl2) T1_interrupt(void){
    mT1ClearIntFlag(); //割り込みフラグクリア
    mPORTAToggleBits( BIT_0 );
}

/**********************************
*  Timer2割り込み処理
**********************************/
void __ISR(8, ipl2) T2_interrupt(void){
    mT2ClearIntFlag(); //割り込みフラグクリア
    mPORTAToggleBits( BIT_1 );
}

/**********************************
*  Timer3割り込み処理
**********************************/
void __ISR(12, ipl2) T3_interrupt(void){
    mT3ClearIntFlag(); //割り込みフラグクリア
    mPORTAToggleBits( BIT_2 );
}

/**********************************
*  Timer45割り込み処理
**********************************/
void __ISR(20, ipl2) T45_interrupt(void){
    mT5ClearIntFlag(); //割り込みフラグクリア
    mPORTAToggleBits( BIT_3 );
}






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

MPLAB X IDEでの日本語コメントの文字化けについて

先ほどの「PIC32MX220F032BでLEDチカチカ(+入力)をする」で公開したソースコードをダウンロードすると,MPLAB X IDEにてコメント欄の日本語文字が認識されていないと思います.
設定を ISO-2022-JP にしてやると日本語を入力して保存しても文字化けせずに扱えます.
図1のようにプロジェクトを選択して右クリック後,Propertiesを選択します.

図1  Propertiesの選択


図2のようにPropertiesウィンドウ内の左メニューGeneralを選択し,EncodingをISO-2022-JPに変更します.

2013/01/06追記:「Shift JIS」でも問題ありません.

図2  Encodingの選択
以上です.


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

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 )






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