- మాకు అంతరాయం ఎందుకు అవసరం?
- MSP430 లో అంతరాయం యొక్క రకాలు
- MSP430 లో ప్రోగ్రామ్ కంట్రోల్కు అంతరాయం కలిగించండి
- GPIO అంతరాయాన్ని పరీక్షించడానికి MSP430 సర్క్యూట్
- అంతరాయాల కోసం ప్రోగ్రామింగ్ MSP430
- CCS నుండి MSP430 కు ప్రోగ్రామ్ను అప్లోడ్ చేస్తోంది
- MSP430 లో అంతరాయ కార్యక్రమం
మీకు సమయం చూపించడానికి ప్రోగ్రామ్ చేయబడిన సరళమైన డిజిటల్ గడియారాన్ని పరిగణించండి, ఇప్పుడు మీరు దాని సమయ క్షేత్రాన్ని మార్చాలనుకుంటున్నారని imagine హించుకోండి. మీరు ఏమి చేస్తారు? సమయ క్షేత్రాన్ని మార్చడానికి మిమ్మల్ని అనుమతించే మెనుకు మారే బటన్ను మీరు నొక్కండి. ఇక్కడ, సిస్టమ్ మీ బాహ్య అంతరాయాన్ని దాని సమయం ఉంచే ప్రక్రియలకు cannot హించదు మరియు మీ గడియారంలో సెకన్ల విలువను పెంచడంలో బిజీగా ఉన్నందున వేచి ఉండమని మిమ్మల్ని అడగదు. ఇక్కడే అంతరాయాలు ఉపయోగపడతాయి.
అంతరాయాలు ఎల్లప్పుడూ బాహ్యంగా ఉండవలసిన అవసరం లేదు; ఇది కూడా అంతర్గతంగా ఉంటుంది. ఎంబెడెడ్ అంతరాయంలో చాలా సార్లు CPU యొక్క రెండు పెరిఫెరల్స్ మధ్య కమ్యూనికేషన్ను సులభతరం చేస్తుంది. ముందుగా సెట్ చేసిన టైమర్ రీసెట్ చేయబడిందని పరిగణించండి మరియు టైమర్ రిజిస్టర్లో సమయం విలువకు చేరుకున్నప్పుడు అంతరాయం ఏర్పడుతుంది. DMA వంటి ఇతర పెరిఫెరల్స్ ప్రారంభించడానికి ఇంటరప్ట్ హ్యాండ్లర్ ఉపయోగించవచ్చు.
ఈ ట్యుటోరియల్లో, మేము వివిధ LED లను టోగుల్ చేయడానికి MSP430 పై బాహ్య అంతరాయాలను ఉపయోగించాము. పుష్-బటన్ను ఉపయోగించి స్థితిని మార్చడం ద్వారా బాహ్య అంతరాయం ఇవ్వబడినప్పుడు, నియంత్రణ ISR కి బదిలీ చేయబడుతుంది (ముందే-ఎంప్ట్ చేయబడింది) మరియు ఇది అవసరం చేస్తుంది. MSP430G2 లాంచ్ప్యాడ్ కోసం CCS ఎన్విరాన్మెంట్ సెటప్ వంటి ప్రాథమికాలను తెలుసుకోవడానికి, CCS ను ఉపయోగించి MSP430 తో ప్రారంభించడానికి ఈ లింక్ను అనుసరించండి ఎందుకంటే ఈ ట్యుటోరియల్లో మేము దాని వివరాలను పొందలేము. లింక్ను అనుసరించడం ద్వారా ఎనర్జియా IDE మరియు CCS ఉపయోగించి ఇతర MSP430 ఆధారిత ట్యుటోరియల్లను కూడా తనిఖీ చేయండి.
మాకు అంతరాయం ఎందుకు అవసరం?
ఎంబెడెడ్ సిస్టమ్లో పోలింగ్ ఓవర్హెడ్ను సేవ్ చేయడానికి అంతరాయాలు అవసరం. ప్రస్తుత నడుస్తున్న పనిని ముందస్తుగా ఖాళీ చేయడం ద్వారా అధిక ప్రాధాన్యత కలిగిన పనులను అమలు చేయాల్సిన అవసరం వచ్చినప్పుడు వాటిని పిలుస్తారు. తక్కువ పవర్ మోడ్ల నుండి కూడా CPU ని మేల్కొలపడానికి ఇది ఉపయోగపడుతుంది. GPIO పోర్ట్ ద్వారా బాహ్య సిగ్నల్ యొక్క అంచు పరివర్తన ద్వారా అది మేల్కొన్నప్పుడు, ISR అమలు చేయబడుతుంది మరియు CPU మళ్ళీ తక్కువ పవర్ మోడ్కు తిరిగి వస్తుంది.
MSP430 లో అంతరాయం యొక్క రకాలు
MSP430 లోని అంతరాయాలు ఈ క్రింది రకాలుగా వస్తాయి-
- సిస్టమ్ రీసెట్
- మాస్క్ చేయలేని అంతరాయం
- ముసుగు అంతరాయం
- వెక్టర్డ్ మరియు నాన్-వెక్టర్డ్ అంతరాయాలు
సిస్టమ్ రీసెట్:
ఇది సరఫరా వోల్టేజ్ (Vcc) కారణంగా మరియు రీసెట్ మోడ్తో RST / NMI పిన్లో తక్కువ సిగ్నల్ కారణంగా సంభవిస్తుంది మరియు వాచ్డాగ్ టైమర్ ఓవర్ఫ్లో మరియు సెక్యూరిటీ కీ ఉల్లంఘన వంటి కారణాల వల్ల కూడా సంభవించవచ్చు.
మాస్క్ చేయలేని అంతరాయం:
ఈ అంతరాయాలను CPU సూచనల ద్వారా ముసుగు చేయలేము. జనరల్ ఇంటరప్ట్ ప్రారంభించబడిన తర్వాత, ముసుగు కాని అంతరాయాన్ని ప్రాసెసింగ్ నుండి మళ్ళించలేము. ఇది ఓసిలేటర్ లోపాలు మరియు RST / NMI (NMI మోడ్లో) కు మానవీయంగా ఇచ్చిన అంచు వంటి మూలాల ద్వారా ఉత్పత్తి అవుతుంది.
ముసుగు అంతరాయం:
అంతరాయం ఏర్పడినప్పుడు మరియు దానిని CPU సూచనల ద్వారా ముసుగు చేయగలిగితే, అది మాస్కేబుల్ అంతరాయం. వారు ఎల్లప్పుడూ బాహ్యంగా ఉండవలసిన అవసరం లేదు. అవి పెరిఫెరల్స్ మరియు వాటి పనితీరుపై కూడా ఆధారపడి ఉంటాయి. ఇక్కడ ఉపయోగించిన బాహ్య పోర్ట్ అంతరాయాలు ఈ వర్గంలోకి వస్తాయి.
వెక్టర్డ్ అంతరాయాలు మరియు నాన్-వెక్టర్డ్ అంతరాయాలు:
వెక్టర్డ్: ఈ సందర్భంలో, అంతరాయం కలిగించే పరికరాలు అంతరాయ వెక్టర్ చిరునామాను దాటడం ద్వారా అంతరాయం యొక్క మూలాన్ని అందిస్తాయి. ఇక్కడ ISR యొక్క చిరునామా పరిష్కరించబడింది మరియు నియంత్రణ ఆ చిరునామాకు బదిలీ చేయబడుతుంది మరియు మిగిలిన వాటిని ISR చూసుకుంటుంది.
నాన్-వెక్టర్డ్: ఇక్కడ అన్ని అంతరాయాలకు సాధారణ ISR ఉంటుంది. వెక్టార్ కాని మూలం నుండి అంతరాయం ఏర్పడినప్పుడు, నియంత్రణ సాధారణ చిరునామాకు బదిలీ చేయబడుతుంది, దీనికి అన్ని నాన్-వెక్టర్డ్ అంతరాయాలు పంచుకుంటాయి.
MSP430 లో ప్రోగ్రామ్ కంట్రోల్కు అంతరాయం కలిగించండి
అంతరాయం ఏర్పడినప్పుడు, MCLK ఆన్ చేయబడి, CPU ను OFF స్థితి నుండి తిరిగి పిలుస్తారు. అంతరాయం ఏర్పడిన తర్వాత ప్రోగ్రామ్ యొక్క నియంత్రణ ISR చిరునామాకు బదిలీ చేయబడినందున, ప్రోగ్రామ్ కౌంటర్ మరియు స్టేటస్ రిజిస్టర్లోని విలువలు స్టాక్కు తరలించబడతాయి.
వరుసగా, స్థితి రిజిస్టర్ క్లియర్ చేయబడుతుంది, తద్వారా GIE ని క్లియర్ చేస్తుంది మరియు తక్కువ పవర్ మోడ్ను ముగించవచ్చు. ప్రోగ్రామ్ కౌంటర్లో అంతరాయ వెక్టర్ చిరునామాను ఉంచడం ద్వారా అత్యధిక ప్రాధాన్యతతో అంతరాయం ఎంచుకోబడుతుంది మరియు అమలు చేయబడుతుంది. మేము మా MSP430 GPIO ఇంటరప్ట్ ఉదాహరణ కోడ్కు వెళ్లేముందు, దానిలో పాల్గొన్న పోర్ట్ రిజిస్టర్ల పనిని అర్థం చేసుకోవాలి.
MSP430 పై GPIO నియంత్రణ కోసం పోర్ట్ రిజిస్టర్లు:
PxDIR: ఇది పోర్ట్ దిశ నియంత్రణ రిజిస్టర్. ప్రోగ్రామర్ 0 లేదా 1 వ్రాయడం ద్వారా దాని పనితీరును ప్రత్యేకంగా ఎంచుకోవడానికి ఇది అనుమతిస్తుంది. పిన్ 1 గా ఎంచుకోబడితే, అది అవుట్పుట్గా పనిచేస్తుంది. పోర్ట్ 1 ను 8-బిట్ పోర్టుగా పరిగణించండి మరియు పిన్స్ 2 మరియు 3 ను అవుట్పుట్ పోర్టులుగా కేటాయించాలంటే, పి 1 డిఐఆర్ రిజిస్టర్ 0x0 సి విలువతో అమర్చాలి.
PxIN: ఇది చదవడానికి మాత్రమే రిజిస్టర్ మరియు పోర్టులోని ప్రస్తుత విలువలను ఈ రిజిస్టర్ ఉపయోగించి చదవవచ్చు.
PxOUT: ఈ ప్రత్యేక రిజిస్టర్ పోర్టులకు నేరుగా విలువలను వ్రాయడానికి ఉపయోగపడుతుంది. పుల్అప్ / పుల్డౌన్ రిజిస్టర్ నిలిపివేయబడినప్పుడు మాత్రమే ఇది సాధ్యమవుతుంది.
PxREN: ఇది పుల్అప్ / పుల్డౌన్ రిజిస్టర్ను ప్రారంభించడానికి లేదా నిలిపివేయడానికి ఉపయోగించే 8-బిట్ రిజిస్టర్. PxREN మరియు PxOUT రిజిస్టర్ రెండింటిలో పిన్ 1 గా సెట్ చేయబడినప్పుడు, నిర్దిష్ట పిన్ పైకి లాగబడుతుంది.
PxDIR |
PxREN |
PxOUT |
I / O కాన్ఫిగర్ |
0 |
0 |
X. |
రెసిస్టర్లతో ఇన్పుట్ నిలిపివేయబడింది |
0 |
1 |
0 |
అంతర్గత పుల్డౌన్తో ఇన్పుట్ ప్రారంభించబడింది |
0 |
1 |
1 |
అంతర్గత పుల్అప్తో ఇన్పుట్ ప్రారంభించబడింది |
1 |
X. |
X. |
అవుట్పుట్ - PxREN ప్రభావం లేదు |
PxSEL మరియు PxSEL2: MSP430 లోని అన్ని పిన్లు మల్టీప్లెక్స్ అయినందున, ప్రత్యేకమైన ఫంక్షన్ను ఉపయోగించే ముందు దాన్ని ఎంచుకోవాలి. PxSEL మరియు PxSEL2 రిజిస్టర్లు రెండూ ఒక నిర్దిష్ట పిన్కు 0 గా సెట్ చేయబడినప్పుడు, అప్పుడు సాధారణ ప్రయోజనం I / O ఎంచుకోబడుతుంది. PxSEL 1 గా సెట్ చేయబడినప్పుడు, ప్రాధమిక పరిధీయ ఫంక్షన్ ఎంచుకోబడుతుంది మరియు మొదలైనవి.
PxIE: ఇది పోర్ట్ x లోని ఒక నిర్దిష్ట పిన్ కోసం అంతరాయాలను ప్రారంభిస్తుంది లేదా నిలిపివేస్తుంది.
PxIES: ఇది అంతరాయం ఏర్పడే అంచుని ఎంచుకుంటుంది. 0 కోసం, పెరుగుతున్న అంచు ఎంచుకోబడుతుంది మరియు 1 కోసం, పడిపోయే అంచు ఎంచుకోబడుతుంది.
GPIO అంతరాయాన్ని పరీక్షించడానికి MSP430 సర్క్యూట్
మా MSP430 అంతరాయ ఉదాహరణ కోడ్ను పరీక్షించడానికి ఉపయోగించే MSP430 సర్క్యూట్ క్రింద చూపబడింది.
LED మరియు బటన్ రెండింటినీ గ్రౌండ్ చేయడానికి బోర్డు యొక్క గ్రౌండ్ ఉపయోగించబడుతుంది. పుష్ బటన్ యొక్క వికర్ణంగా వ్యతిరేక భుజాలు సాధారణంగా ఓపెన్ టెర్మినల్స్ మరియు పుష్ బటన్ నొక్కినప్పుడు కనెక్ట్ అవుతాయి. LED ద్వారా అధిక కరెంట్ వినియోగాన్ని నివారించడానికి LED కి ముందు ఒక రెసిస్టర్ అనుసంధానించబడి ఉంది. సాధారణంగా, 100ohm - 220ohm పరిధిలో తక్కువ రెసిస్టర్లు ఉపయోగించబడతాయి.
పోర్ట్ అంతరాయాల గురించి బాగా అర్థం చేసుకోవడానికి మేము 3 వేర్వేరు కోడ్లను ఉపయోగిస్తాము. మొదటి రెండు సంకేతాలు సర్క్యూట్ రేఖాచిత్రం 1 లో ఉన్న సర్క్యూట్ను ఉపయోగిస్తాయి. మనం కోడ్లోకి ప్రవేశిద్దాం. కనెక్షన్లు చేసిన తర్వాత, నా సెటప్ ఇలా కనిపిస్తుంది.
అంతరాయాల కోసం ప్రోగ్రామింగ్ MSP430
పూర్తి MSP430 అంతరాయ ప్రోగ్రామ్ ఈ పేజీ దిగువన చూడవచ్చు, కోడ్ యొక్క వివరణ ఈ క్రింది విధంగా ఉంటుంది.
దిగువ పంక్తి వాచ్డాగ్ టైమర్ను ఆపరేషన్ నుండి ఆపివేస్తుంది. వాచ్డాగ్ టైమర్ సాధారణంగా రెండు ఆపరేషన్లు చేస్తుంది. ఒకటి నియంత్రికను రీసెట్ చేయడం ద్వారా నియంత్రికను అనంతమైన ఉచ్చుల నుండి నిరోధించడం మరియు మరొకటి అది అంతర్నిర్మిత టైమర్ను ఉపయోగించి ఆవర్తన సంఘటనలను ప్రేరేపిస్తుంది. మైక్రోకంట్రోలర్ రీసెట్ చేసినప్పుడు (లేదా శక్తితో), ఇది టైమర్ మోడ్లో ఉంటుంది మరియు 32 మిల్లీసెకన్ల తర్వాత MCU ని రీసెట్ చేస్తుంది. ఈ లైన్ నియంత్రిక అలా చేయకుండా ఆపుతుంది.
WDTCTL = WDTPW + WDTHOLD;
చేస్తోంది P1DIR విలువకు రిజిస్టర్ 0x07 సెట్లు అవుట్పుట్ pin0, pin1, మరియు PIN2 దిశను. P1OUT ని 0x30 కు సెట్ చేస్తే అది పిన్ 4 మరియు పిన్ 5 లలో ప్రారంభించబడిన అంతర్గత పుల్అప్ రెసిస్టర్లతో ఇన్పుట్ను కాన్ఫిగర్ చేస్తుంది. P1REN ను 0x30 కు సెట్ చేస్తే ఈ పిన్స్ పై అంతర్గత పుల్అప్ అనుమతిస్తుంది. P1IE అంతరాయాన్ని ప్రారంభిస్తుంది, ఇక్కడ P1IES ఈ పిన్లపై అంతరాయ అంచుగా అధిక నుండి తక్కువ పరివర్తనను ఎంచుకుంటుంది.
పి 1 డిఐఆర్ - = 0x07; P1OUT = 0x30; P1REN - = 0x30; P1IE - = 0x30; P1IES - = 0x30; P1IFG & = x 0x30;
తదుపరి పంక్తి తక్కువ శక్తి మోడ్ను ప్రారంభిస్తుంది మరియు స్టేటస్ రిజిస్టర్లో GIE ని ప్రారంభిస్తుంది, తద్వారా అంతరాయాలను పొందవచ్చు.
__bis_SR_register (LPM4bits + GIE)
మాక్రో ఉపయోగించి పోర్ట్ 1 వెక్టర్ చిరునామాతో ప్రోగ్రామ్ కౌంటర్ సెట్ చేయబడింది.
PORT1_VECTOR . # ప్రాగ్మా వెక్టర్ = PORT1_VECTOR __ నిరంతర శూన్య పోర్ట్_1 (శూన్యమైనది)
దిగువ కోడ్ పిన్ 0, పిన్ 1, పిన్ 2 లకు అనుసంధానించబడిన ప్రతి ఎల్ఇడిలను ఒక్కొక్కటిగా టోగుల్ చేస్తుంది.
if (కౌంట్% 3 == 0) { P1OUT ^ = BIT1; P1IFG & = x 0x30; లెక్కింపు ++; } else ఉంటే (కౌంట్% 3 == 1) { P1OUT ^ = BIT1; P1IFG & = x 0x30; లెక్కింపు ++; } else { P1OUT ^ = BIT2; P1IFG & = x 0x30; లెక్కింపు ++; }
సర్క్యూట్ రేఖాచిత్రం 2:
అదేవిధంగా, భావనను బాగా అర్థం చేసుకోవడానికి వేరే పిన్ను ప్రయత్నిద్దాం. కాబట్టి ఇక్కడ పుష్ బటన్ పిన్ 1.5 కు బదులుగా పిన్ 2.0 కి కనెక్ట్ చేయబడింది. సవరించిన సర్క్యూట్ క్రింది విధంగా ఉంటుంది. మళ్ళీ ఈ సర్క్యూట్ MSP430 బటన్ అంతరాయ ప్రోగ్రామ్ను పరీక్షించడానికి ఉపయోగించబడుతుంది.
ఇక్కడ పోర్ట్ 2 ఇన్పుట్ కోసం ఉపయోగించబడుతుంది. కాబట్టి విభిన్న అంతరాయ వెక్టర్ ఉపయోగించాలి. P1.4 మరియు P2.0 ఇన్పుట్లను తీసుకుంటాయి.
పోర్ట్ 2 ఇన్పుట్ కోసం మాత్రమే ఉపయోగించబడుతున్నందున, P2DIR 0 గా సెట్ చేయబడింది. అంతర్గత పుల్-అప్ రెసిస్టర్లు ఎనేబుల్ చేయబడిన పోర్ట్ 2 యొక్క పిన్ 0 ను ఇన్పుట్గా సెట్ చేయడానికి, P2OUT మరియు P2REN రిజిస్టర్లను 1 విలువతో అమర్చాలి. పోర్ట్ 2 యొక్క పిన్ 0 పై అంతరాయం కలిగించండి మరియు అంతరాయం యొక్క అంచుని ఎంచుకోవడానికి, P2IE మరియు P2IES 1 విలువతో సెట్ చేయబడతాయి. పోర్ట్ 2 లో జెండాను రీసెట్ చేయడానికి, P2IFG క్లియర్ చేయబడింది, తద్వారా జెండాను మళ్లీ సెట్ చేయవచ్చు అంతరాయం సంభవించడం.
పి 2 డిఐఆర్ - = 0x00; P2OUT = 0x01; P2REN - = 0x01; P2IE - = 0x01; P2IES - = 0x01; P2IFG & = x 0x01;
అంతరాయ మూలం పోర్ట్ 1 నుండి ఉన్నప్పుడు, పోర్ట్ 1 యొక్క పిన్ 1 కి అనుసంధానించబడిన LED. అంతరాయ మూలం పోర్ట్ 2 కి చెందినప్పుడు, పోర్ట్ 1 యొక్క పిన్ 2 కి కనెక్ట్ చేయబడిన LED.
#pragma vector = PORT1_VECTOR __ నిరంతర శూన్య పోర్ట్_1 (శూన్యమైనది) { P1OUT ^ = BIT1; P1IFG & = x 0x10; (i = 0; i <20000; i ++) { } P1OUT ^ = BIT1; } # ప్రాగ్మా వెక్టర్ = PORT2_VECTOR __ నిరంతర శూన్య పోర్ట్_2 (శూన్యమైనది) { P1OUT ^ = BIT2; P2IFG & = x 0x01; (j = 0; j <20000; j ++) { } P1OUT ^ = BIT2; }
CCS నుండి MSP430 కు ప్రోగ్రామ్ను అప్లోడ్ చేస్తోంది
ప్రాజెక్ట్ను లాంచ్ప్యాడ్కు లోడ్ చేసి డీబగ్ చేయడానికి, ప్రాజెక్ట్ను ఎంచుకుని, టూల్బార్లోని డీబగ్ చిహ్నాన్ని క్లిక్ చేయండి. ప్రత్యామ్నాయంగా, డీబగ్ మోడ్లోకి ప్రవేశించడానికి F11 నొక్కండి లేదా RunàDebug క్లిక్ చేయండి.
డీబగ్ మోడ్ ఎంటర్ చేసిన తర్వాత, MCU లో లోడ్ చేసిన కోడ్ను స్వేచ్ఛగా అమలు చేయడానికి గ్రీన్ కలర్ రన్ బటన్ను నొక్కండి. ఇప్పుడు, పుష్ బటన్ నొక్కినప్పుడు, అంచులో మార్పు వల్ల అంతరాయం ఏర్పడుతుంది, తద్వారా LED స్థితిలో మార్పును ప్రేరేపిస్తుంది.
MSP430 లో అంతరాయ కార్యక్రమం
కోడ్ విజయవంతంగా అప్లోడ్ అయిన తర్వాత, పుష్ బటన్ను ఉపయోగించడం ద్వారా దాన్ని పరీక్షించవచ్చు. పుష్ బటన్ను ఉపయోగించి అంతరాయం ఇచ్చినప్పుడల్లా మా ప్రోగ్రామ్ ప్రకారం LED నమూనా మారుతుంది.
పూర్తి లింక్ క్రింద లింక్ చేయబడిన వీడియోలో చూడవచ్చు. మీరు ట్యుటోరియల్ని ఆస్వాదించారని మరియు ఉపయోగకరమైనదాన్ని నేర్చుకున్నారని ఆశిస్తున్నాము. మీకు ఏవైనా ప్రశ్నలు ఉంటే, వాటిని వ్యాఖ్య విభాగంలో ఉంచండి లేదా ఇతర సాంకేతిక ప్రశ్నల కోసం మా ఫోరమ్లను ఉపయోగించండి.