SOGO論壇

標題: 急需 Ti 的 MSP430afe253 晶片的 emeter 完整例程 [列印本頁]

作者: 胡瓜123    時間: 2015-8-23 01:47:54     標題: 急需 Ti 的 MSP430afe253 晶片的 emeter 完整例程

最近暑假跟老爹A了一片 ti msp430afe253 的板子
我想做一個電流的鉤表,但是真的不知道完整的程序是怎麼跑的,也有去翻一些簡單的 但是真的不知道 adc sd24到底在幹嘛,有人能一行一行講解這個範例,然後告訴我一個完整的 emeter要還需要家那些ㄇ...
只要能夠測到一般燈泡的電流就好了,110V 鎢絲燈那種,誤差什麼的沒關西,還有WDT程序要怎麼放也希望能解釋一下。



-----------------------------------------------------------------------------------------------------------------------------
nsigned int results[3];

void main(void)
{
  volatile unsigned int i;                  // Use volatile to prevent removal
                                            // by compiler optimization
  
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  SD24CTL   = SD24REFON+SD24SSEL0;          // 1.2V ref, SMCLK
  SD24CCTL0 = SD24SNGL+SD24GRP;             // Single conv, group with CH1
  SD24CCTL1 = SD24SNGL+SD24GRP;             // Single conv, group with CH2
  SD24CCTL2 = SD24SNGL+SD24IE;              // Single conv, enable interrupt
  for (i = 0; i < 0x3600; i++);             // Delay for 1.2V ref startup
  
  while (1)
  {
    SD24CCTL2 |= SD24SC;                    // SET BREAKPOINT HERE
                                            // Set bit to start conversion
    __bis_SR_register(LPM0_bits+GIE);       // Enter LPM0 w/ interrupts
  }
}

#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
#pragma vector=SD24_VECTOR
__interrupt void SD24AISR(void)
#elif defined(__GNUC__)
void __attribute__ ((interrupt(SD24_VECTOR))) SD24AISR (void)
#else
#error Compiler not supported!
#endif
{
  switch (SD24IV)
  {
  case 2:                                   // SD24MEM Overflow
    break;
  case 4:                                   // SD24MEM0 IFG
    break;
  case 6:                                   // SD24MEM1 IFG
    break;
  case 8:                                   // SD24MEM2 IFG   
    results[0] = SD24MEM0;                  // Save CH0 results (clears IFG)
    results[1] = SD24MEM1;                  // Save CH1 results (clears IFG)
    results[2] = SD24MEM2;                  // Save CH2 results (clears IFG)
    break;
  }

  __bic_SR_register_on_exit(LPM0_bits);        // Exit LPM0

}
作者: if8051    時間: 2015-8-23 09:36:46

首先確認硬體電路是沒問題的,要不然軟體是沒有意義的,因為這個電流鉤錶是不會運作的。
既然是檢測 AC 110V 鎢絲燈的電流,ADC 硬體電路先搞定,界面電路,參考準位電路。
by compiler optimization 掌握 MCU 初始化意義,先了解此 MCU 的特性功能及規格,
要作功課的,不是東抄一點西抄一點,果真如此,還是等於無學一樣。
SD24CCTL2 |= SD24SC;    // SET BREAKPOINT HERE 這裡設定中斷點
                                        // Set bit to start conversion 設定啟動 ADC 轉換 操作位元
__interrupt void SD24AISR(void)   中斷函式傳回值給 SD24IV
switch (SD24IV)   跟據 SD24IV 值來選擇執行哪個 case  的動作
WDT   Watch Dog Timer 看門狗計時器要如何使用需要看 datasheet
還要了解該 C compiler 提供哪些的函式庫
作者: a619willy    時間: 2015-8-29 01:40:11

先確定你電路是對的,再來寫code。
如果有模組可以買模組來試,再來驗code。




歡迎光臨 SOGO論壇 (https://oursogo.com/) Powered by OURSOGO.COM