娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年05月07日(星期三)

2019年05月07日 | 關于MSP430的ADC中斷相關問題

發布者:一條屬馬的龍 來源: eefocus關鍵字:MSP430  ADC  中斷 手機看文章 掃描二維碼
隨時隨地手機看文章

在進行MSP430ADC相關代碼操作的時候,遇到一個百思不得其解的問題,我們按照要求設置好ADC通道,ADC中斷,程序始終無法進入到ADC中斷中去,本人一次又一次確認通道選擇是否出錯,中斷是否設置,但是依然無法進入中斷,經過試驗和搜索,終于找到了問題所在。

MSP430的ADC12IE寄存器雖然是用來使能各個ADC中斷的,但是在單通道轉換模式下,無論你使用的是哪個ADC通道,ADC12IE對應的中斷只能是0x01,對應的中斷標志位為ADC12IFG0,并且只能在ADC12MEM0中讀取ADC的值。下面給出一個單通道轉換的實例:


#include "msp430x54x.h"


unsigned int adc;


void main(void)

{

  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT

  ADC12CTL0 = ADC12SHT02 + ADC12ON;         // Sampling time, ADC12 on

  ADC12CTL1 = ADC12SHP;                     // Use sampling timer

  ADC12IE = 0x01;                           // Enable interrupt

  ADC12MCTL0 |= ADC12INCH_4;

  __delay_cycles(100);

  ADC12CTL0 |= ADC12ENC;

  P6SEL |= 0x10;                            // P6.4 ADC option select


  while (1)

  {

    ADC12CTL0 |= ADC12SC;                   // Start sampling/conversion 

    __bis_SR_register(LPM0_bits + GIE);     // LPM0, ADC12_ISR will force exit

    __no_operation();                       // For debugger

  }

}


#pragma vector = ADC12_VECTOR

__interrupt void ADC12_ISR(void)

{

  switch(__even_in_range(ADC12IV,34))

  {

  case  0: break;                           // Vector  0:  No interrupt

  case  2: break;                           // Vector  2:  ADC overflow

  case  4: break;                           // Vector  4:  ADC timing overflow

  case  6:                                  // Vector  6:  ADC12IFG0

    adc = ADC12MEM0;                        // Read ADC12MEM 

    __bic_SR_register_on_exit(LPM0_bits);   // Exit active CPU

    break;

  case  8: break;                           // Vector  8:  ADC12IFG1

  case 10: break;                           // Vector 10:  ADC12IFG2

  case 12: break;                           // Vector 12:  ADC12IFG3

  case 14: break;                           // Vector 14:  ADC12IFG4

  case 16: break;                           // Vector 16:  ADC12IFG5

  case 18: break;                           // Vector 18:  ADC12IFG6

  case 20: break;                           // Vector 20:  ADC12IFG7

  case 22: break;                           // Vector 22:  ADC12IFG8

  case 24: break;                           // Vector 24:  ADC12IFG9

  case 26: break;                           // Vector 26:  ADC12IFG10

  case 28: break;                           // Vector 28:  ADC12IFG11

  case 30: break;                           // Vector 30:  ADC12IFG12

  case 32: break;                           // Vector 32:  ADC12IFG13

  case 34: break;                           // Vector 34:  ADC12IFG14

  default: break; 

  }

}


在上面的事例中,我們使用的是MSP430的P6.4引腳,ADC通道4,因為使用的是單通道單次轉換模式,對應的中斷是ADC12IFG0,對應的值在ADC12MEM0中讀取,對于單通道多次轉換模式也適用。

對于序列通道轉換模式,ADC12IE的值取決于使用的ADC通道,ADC的值也從對應通道的ADC12MEM中讀取,下面是序列通道單次轉換的實例



#include "msp430x54x.h"

 

volatile unsigned int results[4];           // Needs to be global in this example

                                            // Otherwise, the compiler removes it

                                            // because it is not used for anything.

 

void main(void)

{

  WDTCTL = WDTPW+WDTHOLD;                   // Stop watchdog timer

  P6SEL = 0x0F;                             // Enable A/D channel inputs

  ADC12CTL0 = ADC12ON+ADC12MSC+ADC12SHT0_2; // Turn on ADC12, set sampling time

  ADC12CTL1 = ADC12SHP+ADC12CONSEQ_1;       // Use sampling timer, single sequence

  ADC12MCTL0 = ADC12INCH_0;                 // ref+=AVcc, channel = A0

  ADC12MCTL1 = ADC12INCH_1;                 // ref+=AVcc, channel = A1

  ADC12MCTL2 = ADC12INCH_2;                 // ref+=AVcc, channel = A2

  ADC12MCTL3 = ADC12INCH_3+ADC12EOS;        // ref+=AVcc, channel = A3, end seq.

  ADC12IE = 0x08;                           // Enable ADC12IFG.3

  ADC12CTL0 |= ADC12ENC;                    // Enable conversions

 

  while(1)

  {

    ADC12CTL0 |= ADC12SC;                   // Start convn - software trigger

    

    __bis_SR_register(LPM4_bits + GIE);     // Enter LPM4, Enable interrupts

    __no_operation();                       // For debugger    

  }

}

 

#pragma vector=ADC12_VECTOR

__interrupt void ADC12ISR (void)

{

    switch(__even_in_range(ADC12IV,34))

  {

  case  0: break;                           // Vector  0:  No interrupt

  case  2: break;                           // Vector  2:  ADC overflow

  case  4: break;                           // Vector  4:  ADC timing overflow

  case  6: break;                           // Vector  6:  ADC12IFG0

  case  8: break;                           // Vector  8:  ADC12IFG1

  case 10: break;                           // Vector 10:  ADC12IFG2

  case 12:                                  // Vector 12:  ADC12IFG3

    results[0] = ADC12MEM0;                 // Move results, IFG is cleared

    results[1] = ADC12MEM1;                 // Move results, IFG is cleared

    results[2] = ADC12MEM2;                 // Move results, IFG is cleared

    results[3] = ADC12MEM3;                 // Move results, IFG is cleared

    __bic_SR_register_on_exit(LPM4_bits);   // Exit active CPU, SET BREAKPOINT HERE  

  case 14: break;                           // Vector 14:  ADC12IFG4

  case 16: break;                           // Vector 16:  ADC12IFG5

  case 18: break;                           // Vector 18:  ADC12IFG6

  case 20: break;                           // Vector 20:  ADC12IFG7

  case 22: break;                           // Vector 22:  ADC12IFG8

  case 24: break;                           // Vector 24:  ADC12IFG9

  case 26: break;                           // Vector 26:  ADC12IFG10

  case 28: break;                           // Vector 28:  ADC12IFG11

  case 30: break;                           // Vector 30:  ADC12IFG12

[1] [2]
關鍵字:MSP430  ADC  中斷 引用地址:關于MSP430的ADC中斷相關問題

上一篇:基于MSP430內部10位ADC的模數轉化并通過串口發送
下一篇:最后一頁

推薦閱讀

四維圖新日前接受機構調研時表示,公司AMP芯片已經在2017年底量產出貨,2018年是上量階段;MCU芯片正在全力做市場推廣,力爭盡快實現量產。
圖片來源@視覺中國文 | 宮恩浩(深透醫療Subtle Medical創始人及CEO)在當今的醫學影像領域,無論是美國、歐洲還是中國,人工智能正在成為主旋律。今年1月,上海交大發布《人工智能醫療白皮書》,指出AI醫學影像成為中國人工智能醫療最成熟領域。據第三方統計,從100家AI相關的非上市企業2018年預計營收來看,100強中共有10家AI醫療公司,其中AI醫學影...
在高性能電機和伺服驅動器中,基于隔離式sigma-delta(Σ-Δ)的模數轉換器(ADC)已成為首選的相電流測量方法。這些轉換器以其強大的電流隔離和卓越的測量性能而聞名。隨著新一代ADC的推出,其性能也在不斷提高,但是,要充分利用最新的ADC的功能,就需要對其他的電機驅動器進行相應的設計。簡介電機驅動器制造商不斷提高其產品的性能和魯棒性。一些改進是通...
由于2021年開局強勁,Enphase Energy公司2021年一季度收入超過了指導值。然而,在今年剩下的時間里,持續的半導體材料短缺對其出貨指導值產生深遠影響。上周,Enphase公布了2021年一季度財報,根據報告其第一季度實現營收3.018億美元,同比增長47%,超過之前在披露2020年四季度業績時提出的2.8-3億美元的指導值。這一季度的微型逆變器出貨量為830MWdc(約...

史海拾趣

問答坊 | AI 解惑

用C語言設計TMS320C2X/C5X應用程序(五)

六、TMS320C2X/C5X C語言程序開發舉例本節我們以TMS320C2X為例,說明定點DSP芯片C程序的開發過程。軟件開發過程與浮點DSP芯片的開發過程相類似,主要分以下幾個步驟:1.  用編輯器(如EDIT、PE2等)編輯一個或多個C程序,如example1.c,e ...…

查看全部問答∨

華邦78E58B 單片機中文資料

華邦單片機的中文資料,網上好像很少,所以共享一下…

查看全部問答∨

TMS320F2407學習資料

TMS320F2407學習資料,教程…

查看全部問答∨

怎么調用CreateFile對于minidriver

我看testcap里的minidiver里沒有設備名和符號名,那應用程序怎么和這個驅動交互啊,謝謝!…

查看全部問答∨

求助:哪位兄臺能夠提供一個avr控制ccd的c程序

想做一個CCD的巡線小車 請大俠們給提點好的建議…

查看全部問答∨

IEEE 754標準

在IEEE 754標準中,階碼是采用移碼表示還是補碼表示,尾數是用原碼表示還是用補碼表示,是IEEE 754中規定的嗎,如果是,用哪種形式表示,還是IEEE 754中沒有規定這些,懂的來答。 問題補充:將(100.25)10轉換成短浮點數格式 在一個課件上看到的 ...…

查看全部問答∨

■■■■■★千元征集優秀IT培訓教師線索★■■■■■

千元征集優秀IT培訓教師線索     北京傳智播客教育科技有限公司是一家專門致力于高素質軟件開發人才培養的高科技公司,公司自成立以來,以其獨到的培訓理念和教學方式,取得了驕人的成績,迅速在IT培訓界獲得盛譽。為滿足社會快速膨脹的 ...…

查看全部問答∨

GPIO引腳控制(配置)問題

在硬件的GPIO引腳中,有部分引腳擁有第二套功能(表達可能不準),如:XXX_GPIO10_2_XXX這樣的引腳配置是否和XXX_GPIO10_XXX的方法相同,主要是方向和電平的配置。…

查看全部問答∨

幾天登陸不上ST,今天發現都有STM32F100了

                                 看來我是OUT了…

查看全部問答∨

單片機控制,74hc595驅動顯示20個4位數碼管顯示!問題求助。。。。

51單片機控制 74hc595驅動20個4位數碼管顯示不同數據?。。? 5959該怎么級聯,能是程序簡單控制顯示又能達到要求(用最少的IO口資源和最少的74hc595)...…

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 买车| 泾川县| 偏关县| 渝中区| 新邵县| 玉树县| 台前县| 内江市| 周至县| 府谷县| 扶余县| 静安区| 上栗县| 西平县| 邵阳县| 梁河县| 永定县| 集贤县| 阿坝| 巫溪县| 松滋市| 水城县| 邵阳市| 闽侯县| 湘西| 来安县| 阿合奇县| 会宁县| 青川县| 德化县| 湘西| 长沙县| 东丽区| 叙永县| 南昌市| 陕西省| 安国市| 郓城县| 乌兰县| 凌源市| 雅安市|