2011年2月26日土曜日

LaunchPadの電源

LaunchPadの回路図(ユーザーガイド(PDF))によると、USBバスから供給される5V電源は、LDOレギュレータのTPS77301で3.6Vに降圧された後にボード上の回路に供給される。よって、LaunchPadのVCCを直接電源として利用する場合、電圧が3.6Vであることに留意する必要がある。

特に、外部に低電圧動作のICなどを接続する場合は、電源電圧の規定値に注意する必要があり、必要に応じて降圧回路やレベルシフタを追加する必要がある。

また、USBポートからの供給電流は、PCにLaunchPadが認識されるまでの期間は、USBの規格に従うと100mA以内とする必要がある。

よって、消費電流が大きい負荷を接続する場合は、別途電源を用意する必要がある。

また、ICEの機能ブロックの消費電流はMSP430F1612(8.7mA)及びTUSB3410(15mA)の消費電流の合算値+αで30mA程度と見積もる事ができるので、ターゲットデバイスと外部接続回路を含めた消費電流が70mAを超える場合、外部電源を設けることが望ましいと考えられる。

2011年2月21日月曜日

LaunchPad付属X'talの使用

TIのMSP430のプラットフォームである、LaunchPadにオプションパーツとして付属している32.768kHzの水晶振動子を取り付け、内部キャパシタを12.5pFに設定して発振させ、タイマーのカウント値が16384(2Hz相当)の整数倍になる度にLEDをトグル点灯させているが、時々点滅動作が止まるように見える。

考えられる原因は以下の通り。

  • 実際に発振が不安定
  • 目視チェックなので錯覚
  • プログラムの問題
ちなみに、使っているプログラムは以下の通りである。
#include  <msp430g2231.h> 
void main (void)
{
  volatile unsigned int i;
  // Initial Settings
  WDTCTL = WDTPW + WDTHOLD;                        // Stop watchdog timer
  BCSCTL3 |= XCAP_3;                               // Set X_CAP 12.5pF
  TACTL = TASSEL_1 + MC_2 + TACLR;                 // ACLK, continuous mode, Timer CLR
  P1DIR |= 0x41;                                   // Set LED Port Output
  P1OUT &= 0xBE;                                   // LED OFF

  // When X'tal OSC is fault, Red LED Blink
  while ((BCSCTL3 & LFXT1OF)||(BCSCTL3 & XT2OF)) {
   P1OUT ^= 0x01;                                 // Blink Red LED
 for(i=5000;i>0;i--){;}                         // Set Blink Interval to Visible 
  }
  P1OUT &= 0xBE;                                   // LED OFF
  P1OUT |= 0x40;                                   // Green LED ON

  // Toggle Red LED and Green LED with 0.5 Seconds Interval
  while(1){
   if(((TAR & 0xFFFF)%0x4000)==0){
    P1OUT ^= 0x41;
   }
  }
}

オシロスコープや周波数カウンタを使用できる環境ではないので、上記のプログラムについて検討すると、問題点としてはタイマーの値(TAR)の剰余計算を行っている事により、LEDを点滅させる際の処理時間が長くなることが挙げられる。

そこで、プログラムを以下のように修正してテストしてみると、点滅する時間間隔が安定しているように見える。

#include  <msp430g2231.h>

void main (void)
{
  volatile unsigned int i;
  // Initial Settings
  WDTCTL = WDTPW + WDTHOLD;                        // Stop watchdog timer
  BCSCTL3 |= XCAP_3;                               // Set X_CAP 12.5pF
  TACTL = TASSEL_1 + MC_1 + TACLR;                 // ACLK, up mode, Timer CLR
  CCR0 = 0x3FFF;                                   // Set TACCR0 to 16383
  P1DIR |= 0x41;                                   // Set LED Port Output
  P1OUT &= 0xBE;                                   // LED OFF

  // When X'tal OSC is fault, Red LED Blink
  while ((BCSCTL3 & LFXT1OF)||(BCSCTL3 & XT2OF)) {
   P1OUT ^= 0x01;                                 // Blink Red LED
 for(i=5000;i>0;i--){;}                         // Set Blink Interval to Visible 
  }
  P1OUT &= 0xBE;                                   // LED OFF
  P1OUT |= 0x40;                                   // Green LED ON

  // Toggle Red LED and Green LED with 0.5 Seconds Interval
  while(1){
   if((TAR & 0xFFFF)==0){
    P1OUT ^= 0x41;
   }
  }
}

ちなみに、ツイッター上でMSP430シリーズの水晶発振器では内部キャパシタを使用するよりも、外部キャパシタを使用した方が良いとの情報を頂いているので、基板のセッティングを変えてテストしてみたい所ではある。

2011年2月17日木曜日

新規作成

ブログスペースを作成。
不定期に公開可能なレポートを掲載予定。

フォロワー