SOGO論壇
  登入   註冊   找回密碼
查看: 1062|回覆: 2
列印 上一主題 下一主題

[問題求助] 急需 Ti 的 MSP430afe253 晶片的 emeter 完整例程 [複製連結]

Rank: 2

狀態︰ 離線
跳轉到指定樓層
1
發表於 2015-8-23 01:47:54 |只看該作者 |倒序瀏覽
最近暑假跟老爹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

}
喜歡嗎?分享這篇文章給親朋好友︰
               感謝作者     

Rank: 4

數位軟體勳章

狀態︰ 離線
2
發表於 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 提供哪些的函式庫

Rank: 2

狀態︰ 離線
3
發表於 2015-8-29 01:40:11 |只看該作者
先確定你電路是對的,再來寫code。
如果有模組可以買模組來試,再來驗code。
請注意︰利用多帳號發表自問自答的業配文置入性行銷廣告者,將直接禁訪或刪除帳號及全部文章!
您需要登錄後才可以回覆 登入 | 註冊


本論壇為非營利自由討論平台,所有個人言論不代表本站立場。文章內容如有涉及侵權,請通知管理人員,將立即刪除相關文章資料。侵權申訴或移除要求:abuse@oursogo.com

GMT+8, 2024-11-2 18:20

© 2004-2024 SOGO論壇 OURSOGO.COM
回頂部