- అవసరమైన పదార్థాలు:
- అంతరాయాలు ఏమిటి మరియు వాటిని ఎక్కడ ఉపయోగించాలి:
- సర్క్యూట్ రేఖాచిత్రం మరియు వివరణ:
- పిఐసి మైక్రోకంట్రోలర్లో అంతరాయాల అనుకరణ:
- కోడ్ వివరణ:
- PIC16F877A అంతరాయాల పని:
ఈ ట్యుటోరియల్లో పిఐసి మైక్రోకంట్రోలర్లో ఎక్స్టర్నల్ ఇంటరప్ట్ను ఎలా ఉపయోగించాలో మరియు మనకు ఎందుకు / ఎక్కడ అవసరం అని నేర్చుకుంటాము. ఇది PIC ట్యుటోరియల్స్ యొక్క క్రమం యొక్క ఒక భాగం, దీనిలో మేము మొదటి నుండి PIC మైక్రోకంట్రోలర్లను నేర్చుకోవడం ప్రారంభించాము; అందువల్ల ఈ ట్యుటోరియల్ MPLABX ను ఉపయోగించి PIC MCU ని ఎలా ప్రోగ్రామ్ చేయాలో మరియు PIC తో LCD ని ఎలా ఇంటర్ఫేస్ చేయాలో మీకు బాగా తెలుస్తుందని umes హిస్తుంది. కాకపోతే దయచేసి వారి సంబంధిత లింక్లకు తిరిగి వచ్చి వాటిని పతనంగా చదవండి, ఎందుకంటే అప్పటికే అక్కడ కవర్ చేయబడిన చాలా సమాచారాన్ని నేను దాటవేస్తాను.
అవసరమైన పదార్థాలు:
- PIC16F877A పెర్ఫ్ బోర్డు
- 16x2 LCD డిస్ప్లే
- నొక్కుడు మీట
- వైర్లను కనెక్ట్ చేస్తోంది
- బ్రెడ్ బోర్డు
- పిక్కిట్ 3
అంతరాయాలు ఏమిటి మరియు వాటిని ఎక్కడ ఉపయోగించాలి:
PIC మైక్రోకంట్రోలర్ అంతరాయాలను ఎలా ప్రోగ్రామ్ చేయాలో తెలుసుకోవడానికి ముందు, వాస్తవానికి అంతరాయం ఏమిటో అర్థం చేసుకుందాం మరియు వాటిని మనం ఎక్కడ ఉపయోగించాలి. ఇంకా, మైక్రోకంట్రోలర్లో చాలా రకాల అంతరాయాలు ఉన్నాయి మరియు PIC16F877A వాటిలో 15 ఉన్నాయి. ప్రస్తుతానికి వాటన్నింటినీ మన తలపై కంగారు పెట్టనివ్వండి.
కాబట్టి! మైక్రోకంట్రోలర్లలో అంతరాయం ఏమిటి?
మనందరికీ తెలిసినట్లుగా, ముందుగా నిర్వచించిన (ప్రోగ్రామ్ చేయబడిన) సక్రియం యొక్క సమితిని నిర్వహించడానికి మైక్రోకంట్రోలర్లను ఉపయోగిస్తారు, ఇది ఇన్పుట్ ఆధారంగా అవసరమైన ఫలితాలను ప్రేరేపిస్తుంది. కానీ, మీ మైక్రోకంట్రోలర్ కోడ్ యొక్క ఒక భాగాన్ని అమలు చేయడంలో బిజీగా ఉన్నప్పుడు, మీ కోడ్ యొక్క ఇతర భాగానికి తక్షణ శ్రద్ధ అవసరమయ్యే అత్యవసర పరిస్థితి ఉండవచ్చు. తక్షణ శ్రద్ధ అవసరం ఈ కోడ్ యొక్క ఇతర భాగాన్ని అంతరాయంగా పరిగణించాలి.
ఉదాహరణకు: మీరు మీ మొబైల్లో మీకు ఇష్టమైన ఆట ఆడుతున్నారని మరియు మీ ఫోన్లోని కంట్రోలర్ () హ) మీరు ఆటను ఆస్వాదించడానికి అవసరమైన అన్ని గ్రాఫిక్లను విసిరే పనిలో బిజీగా ఉన్నారని మేము పరిశీలిద్దాం. కానీ, అకస్మాత్తుగా మీ స్నేహితురాలు మీ నంబర్కు కాల్ చేస్తుంది. ఇప్పుడు, జరగబోయే చెత్త విషయం ఏమిటంటే, మీరు ఒక ఆట ఆడుకోవడంలో బిజీగా ఉన్నందున మీ స్నేహితురాళ్ళ కాల్ను నిర్లక్ష్యం చేయడానికి మీ మొబైల్ కంట్రోలర్. ఈ పీడకల జరగకుండా నిరోధించడానికి మేము అంతరాయాలు అని పిలుస్తాము.
ఈ అంతరాయాలు కొన్ని నిర్దిష్ట చర్యలు జరగడానికి ఎల్లప్పుడూ క్రియాశీల జాబితాగా ఉంటాయి మరియు అవి సంభవించినప్పుడు అవి కోడ్ యొక్క భాగాన్ని అమలు చేస్తాయి మరియు తరువాత సాధారణ ఫంక్షన్కు చేరుకుంటాయి. ఈ కోడ్ భాగాన్ని ఇంటరప్ట్ సర్వీస్ రొటీన్ (ISR) అంటారు. అంతరాయం తప్పనిసరి అయిన ఒక ఆచరణాత్మక ప్రాజెక్ట్ “పిఐసి మైక్రోకంట్రోలర్ ఉపయోగించి డిజిటల్ స్పీడోమీటర్ మరియు ఓడోమీటర్ సర్క్యూట్”
మైక్రోకంట్రోలర్లలో రెండు ప్రధాన రకాల అంతరాయాలు ఉన్నాయి. అవి బాహ్య అంతరాయం మరియు అంతర్గత అంతరాయం. ఒక పనిని చేయటానికి మైక్రోంట్రోలర్ లోపల అంతర్గత అంతరాయాలు సంభవిస్తాయి, ఉదాహరణకు టైమర్ అంతరాయాలు, ADC అంతరాయాలు మొదలైనవి. టైమర్ ఆపరేషన్ లేదా ADC ఆపరేషన్ను వరుసగా పూర్తి చేయడానికి సాఫ్ట్వేర్ ద్వారా ఈ అంతరాయాలు ప్రేరేపించబడతాయి.
బాహ్య అంతరాయం అనేది వినియోగదారుని ప్రేరేపించగలదు. ఈ ప్రోగ్రామ్లో అంతరాయాన్ని ప్రేరేపించడానికి పుష్ బటన్ను ఉపయోగించడం ద్వారా బాహ్య అంతరాయాన్ని ఎలా ఉపయోగించాలో నేర్చుకుంటాము. 0 నుండి 1000 వరకు పెరుగుతున్న సంఖ్యలను ప్రదర్శించడానికి మేము ఒక LCD ని ఉపయోగిస్తాము మరియు అంతరాయం ప్రేరేపించినప్పుడు మేము దాని గురించి ఇంటరప్ట్ సర్వీస్ రొటీన్ ISR నుండి తెలియజేయాలి మరియు తరువాత సంఖ్యలను పెంచడానికి కొనసాగించాలి.
సర్క్యూట్ రేఖాచిత్రం మరియు వివరణ:
PIC16F877 అంతరాయాలను ఉపయోగించటానికి సర్క్యూట్ రేఖాచిత్రం పై చిత్రంలో ఇవ్వబడింది. మేము ఎల్సిడి ట్యుటోరియల్ను ఇంటర్ఫేసింగ్లో చేసినట్లుగా మీరు ఎల్సిడిని పిఐసికి కనెక్ట్ చేయాలి.
ఇప్పుడు అంతరాయ పిన్ను కనెక్ట్ చేయడానికి, బాహ్య అంతరాయానికి PIC యొక్క ఏ పిన్ను ఉపయోగించాలో తెలుసుకోవడానికి మేము డేటాషీట్ను చూడాలి. మా విషయంలో i n PIC16F877A 33 rd పిన్ RBO / INT బాహ్య అంతరాయానికి ఉపయోగించబడుతుంది. మీరు ఈ పిన్ కాకుండా వేరే పిన్ను ఉపయోగించలేరు. ఈ సర్క్యూట్ రేఖాచిత్రం కోసం పిన్ కనెక్షన్ క్రింది పట్టికలో చూపబడింది.
ఎస్. లేదు: |
పిన్ నెంబర్ |
పిన్ పేరు |
సంబంధం కలిగిఉన్నది |
1 |
21 |
RD2 |
LCD యొక్క RS |
2 |
22 |
RD3 |
LCD యొక్క E. |
3 |
27 |
RD4 |
LCD యొక్క D4 |
4 |
28 |
RD5 |
LCD యొక్క D5 |
5 |
29 |
RD6 |
ఎల్సిడి యొక్క డి 6 |
6 |
30 |
RD7 |
ఎల్సిడి యొక్క డి 7 |
7 |
33 |
RBO / INT |
నొక్కుడు మీట |
మేము PORT B లో అంతర్గత పుల్ అప్ రెసిస్టర్లను ప్రారంభించాము, అందువల్ల మేము నేరుగా పుష్ బటన్ ద్వారా RB0 పిన్ను భూమికి కనెక్ట్ చేయవచ్చు. కాబట్టి ఈ పిన్ తక్కువ అయినప్పుడల్లా అంతరాయం ఏర్పడుతుంది.
క్రింద చూపిన విధంగా కనెక్షన్లను బ్రెడ్ బోర్డులో చేయవచ్చు.
మీరు మా ట్యుటోరియల్స్ అనుసరిస్తుంటే నేను ఇక్కడ ఉపయోగించిన ఈ పెర్ఫ్ బోర్డ్ గురించి మీకు తెలిసి ఉండాలి. కాకపోతే, మీరు దాని గురించి పెద్దగా ఆలోచించాల్సిన అవసరం లేదు, కేవలం సర్క్యూట్ రేఖాచిత్రాన్ని అనుసరించండి మరియు మీరు పని పొందుతారు.
పిఐసి మైక్రోకంట్రోలర్లో అంతరాయాల అనుకరణ:
ఈ ప్రాజెక్ట్ కోసం అనుకరణ ప్రోటీస్ ఉపయోగించి తయారు చేయబడింది.
మీరు ప్రాజెక్ట్ను అనుకరించినప్పుడు, ఎల్సిడి డిస్ప్లేలో సంఖ్యల క్రమాన్ని పెంచడాన్ని మీరు చూడాలి. ఇది ప్రధాన లూప్ లోపల జరుగుతుంది మరియు పుష్ బటన్ నొక్కినప్పుడు ఎల్సిడి అది ISR లోకి ప్రవేశించినట్లు ప్రదర్శించాలి. మీరు మీ మార్పులను కోడ్లో చేయవచ్చు మరియు దాన్ని ఇక్కడ పరీక్షించడానికి ప్రయత్నించండి.
కోడ్ వివరణ:
ఈ ప్రాజెక్ట్ కోసం పూర్తి కోడ్ ఈ ట్యుటోరియల్ చివరిలో చూడవచ్చు. అయితే ప్రోగ్రామ్ ముఖ్యమైన భాగాలుగా విభజించబడింది మరియు మీ మంచి అవగాహన కోసం క్రింద వివరించబడింది.
అన్ని ప్రోగ్రామ్ల మాదిరిగానే మన ప్రోగ్రామ్లో మనం ఉపయోగించే పిన్ల కోసం పిన్ కాన్ఫిగరేషన్ను నిర్వచించడం ద్వారా కోడ్ను ప్రారంభించాలి. ఇక్కడ కూడా మేము RB0 / INT ను బాహ్య అంతరాయ పిన్గా ఉపయోగిస్తున్నామని మరియు ఇన్పుట్ లేదా అవుట్పుట్ పిన్గా కాకుండా నిర్వచించాల్సిన అవసరం ఉంది. కోడ్ యొక్క దిగువ పంక్తి 7 వ బిట్ను 0 గా చేయడం ద్వారా పోర్ట్బిలో అంతర్గత పుల్-అప్ రెసిస్టర్ను అనుమతిస్తుంది.
OPTION_REG = 0b00000000;
అప్పుడు మేము గ్లోబల్ / పెరిఫెరల్ అంతరాయాలను ప్రారంభిస్తాము మరియు మేము RB0 ను బాహ్య అంతరాయ పిన్గా ఉపయోగిస్తున్నట్లు ప్రకటించాము.
GIE = 1; // గ్లోబల్ ఇంటరప్ట్ PEIE = 1 ను ప్రారంభించండి; // పరిధీయ అంతరాయాన్ని ప్రారంభించండి INTE = 1; // RB0 ను బాహ్య అంతరాయ పిన్గా ప్రారంభించండి
RB0 పిన్ బాహ్య అంతరాయ పిన్గా నిర్వచించబడిన తర్వాత, ప్రతిసారీ అది తక్కువ అయినప్పుడు బాహ్య అంతరాయ జెండా INTF 1 అవుతుంది మరియు శూన్య అంతరాయ ఫంక్షన్లోని కోడ్ అంతరాయ సేవా రొటీన్ (ISR) అని పిలువబడుతుంది కాబట్టి అమలు అవుతుంది.
void interrupt ISR_example () {if (INTF == 1) // బాహ్య అంతరాయం కనుగొనబడింది {Lcd_Clear (); ఎల్సిడి_సెట్_ కర్సర్ (1,1); Lcd_Print_String ("ISR లో ప్రవేశించింది"); INTF = 0; // అంతరాయ జెండాను దానితో చేసిన తర్వాత క్లియర్ చేయండి __delay_ms (2000); Lcd_Clear (); }}
మీరు చూడగలిగినట్లుగా నేను ఇంటరప్ట్ ఫంక్షన్కు ISR_example అని పేరు పెట్టాను. మీ కోరిక ప్రకారం మీరు దీనికి పేరు పెట్టవచ్చు. అంతరాయ ఫంక్షన్ లోపల మేము INTF జెండా ఎక్కువగా ఉందో లేదో తనిఖీ చేసి అవసరమైన చర్యలను చేస్తాము. మీరు దినచర్యను పూర్తి చేసిన తర్వాత అంతరాయ జెండాను క్లియర్ చేయడం చాలా ముఖ్యం. అప్పుడే ప్రోగ్రామ్ శూన్యమైన ప్రధాన ఫంక్షన్కు తిరిగి వస్తుంది. ఈ క్లియరింగ్ లైన్ ఉపయోగించి సాఫ్ట్వేర్ ద్వారా చేయాలి
INTF = 0; // అంతరాయ జెండాను పూర్తి చేసిన తర్వాత దాన్ని క్లియర్ చేయండి
ప్రధాన ఫంక్షన్ లోపల, మేము ప్రతి 500 ఎంఎస్లకు ఒక సంఖ్యను పెంచుతాము మరియు దానిని ఎల్సిడి స్క్రీన్లో ప్రదర్శిస్తాము. RB0 పిన్ యొక్క స్థితిని తనిఖీ చేయడానికి మాకు నిర్దిష్ట లైన్ లేదు. అంతరాయం ఎల్లప్పుడూ చురుకుగా ఉంటుంది మరియు పుష్ బటన్ నొక్కినప్పుడల్లా అది శూన్యమైన మెయిన్ నుండి దూకి ISR లోని పంక్తులను అమలు చేస్తుంది.
ఎల్సిడి_సెట్_ కర్సర్ (2,1); Lcd_Print_String ("మెయిన్ లూప్ లోపల"); ఎల్సిడి_సెట్_ కర్సర్ (1,1); Lcd_Print_String ("సంఖ్య:"); Lcd_Print_Char (ch1 + '0'); Lcd_Print_Char (ch2 + '0'); Lcd_Print_Char (ch3 + '0'); Lcd_Print_Char (ch4 + '0'); __ ఆలస్యం_ఎంఎస్ (500); సంఖ్య ++;
PIC16F877A అంతరాయాల పని:
అంతరాయం ఎలా పనిచేస్తుందో మీరు అర్థం చేసుకున్న తర్వాత, దాన్ని హార్డ్వేర్ మరియు దాని చుట్టూ ఉన్న ఫిడేల్పై ప్రయత్నించవచ్చు. ఇక్కడ ఇవ్వబడిన ఈ ప్రోగ్రామ్ బాహ్య అంతరాయానికి చాలా ప్రాధమిక ఉదాహరణ, ఇక్కడ అంతరాయం గుర్తించినప్పుడు ఇది LCD స్క్రీన్ యొక్క ప్రదర్శనను మారుస్తుంది.
ప్రాజెక్ట్ యొక్క పూర్తి పనిని క్రింద ఇచ్చిన వీడియోలో చూడవచ్చు. అంతరాయాల గురించి మరియు వాటిని ఎక్కడ / ఎలా ఉపయోగించాలో మీరు అర్థం చేసుకున్నారని ఆశిస్తున్నాము. మీకు ఏవైనా సందేహాలు ఉంటే మీరు ఫోరమ్ల ద్వారా లేదా వ్యాఖ్య విభాగం ద్వారా నన్ను చేరవచ్చు.