- SPI కమ్యూనికేషన్ ప్రోటోకాల్ అంటే ఏమిటి?
- SPI ప్రోటోకాల్ ఎలా పనిచేస్తుంది?
- I2C మరియు SPI కమ్యూనికేషన్ మధ్య వ్యత్యాసం
- XC8 కంపైలర్ ఉపయోగించి PIC16F877A తో SPI:
- SPI హెడర్ ఫైల్ వివరణ:
- ప్రధాన ప్రోగ్రామ్ వివరణ:
- SPI డీబగ్గర్తో PIC ని అనుకరించడం:
పిఐసి మైక్రోకంట్రోలర్లు ఎంబెడెడ్ ప్రాజెక్టుల కోసం మైక్రోచిప్ అందించిన శక్తివంతమైన వేదిక; దాని బహుముఖ స్వభావం అనేక అనువర్తనాల్లోకి మార్గాలను కనుగొనటానికి వీలు కల్పించింది మరియు ఇంకా చాలా పెరగలేదు. మీరు మా పిఐసి ట్యుటోరియల్లను అనుసరిస్తుంటే , పిఐసి మైక్రోకంట్రోలర్పై చాలా ప్రాథమిక ట్యుటోరియల్లను మేము ఇప్పటికే చాలా ప్రాథమిక విషయాల నుండి కవర్ చేశామని మీరు గమనించవచ్చు. అదే ప్రవాహంలో పిఐసితో అందుబాటులో ఉన్న కమ్యూనికేషన్ ప్రోటోకాల్లను మరియు వాటిని ఎలా ఉపయోగించాలో తెలుసుకోవడానికి మేము ముందుకు వెళ్తున్నాము. మేము ఇప్పటికే P2 మైక్రోకంట్రోలర్తో I2C ని కవర్ చేసాము.
ఎంబెడెడ్ అనువర్తనాల యొక్క విస్తారమైన వ్యవస్థలో, మైక్రోకంట్రోలర్ అన్ని కార్యకలాపాలను స్వయంగా చేయలేడు. కొంత దశలో సమాచారాన్ని పంచుకోవడానికి ఇతర పరికరాలతో కమ్యూనికేట్ చేయవలసి ఉంటుంది, ఈ సమాచారాన్ని పంచుకోవడానికి అనేక రకాలైన కమ్యూనికేషన్ ప్రోటోకాల్లు ఉన్నాయి, అయితే ఎక్కువగా ఉపయోగించినవి USART, IIC, SPI మరియు CAN. ప్రతి కమ్యూనికేషన్ ప్రోటోకాల్ దాని స్వంత ప్రయోజనం మరియు ప్రతికూలతను కలిగి ఉంటుంది. ఈ ట్యుటోరియల్లో మనం నేర్చుకోబోయేది కనుక ఇప్పుడే SPI ప్రోటోకాల్పై దృష్టి పెడదాం.
SPI కమ్యూనికేషన్ ప్రోటోకాల్ అంటే ఏమిటి?
SPI అనే పదం “ సీరియల్ పెరిఫెరల్ ఇంటర్ఫేస్ ”. ఇది ఒక సాధారణ కమ్యూనికేషన్ ప్రోటోకాల్, ఇది రెండు మైక్రోకంట్రోలర్ల మధ్య డేటాను పంపడానికి లేదా సెన్సార్ నుండి మైక్రోకంట్రోలర్కు డేటాను చదవడానికి / వ్రాయడానికి ఉపయోగించబడుతుంది. ఇది SD కార్డులు, షిఫ్ట్ రిజిస్టర్లు, డిస్ప్లే కంట్రోలర్లు మరియు మరెన్నో కమ్యూనికేట్ చేయడానికి కూడా ఉపయోగించబడుతుంది.
SPI ప్రోటోకాల్ ఎలా పనిచేస్తుంది?
SPI కమ్యూనికేషన్ సింక్రోనస్ కమ్యూనికేషన్, అంటే ఇది డేటాను మార్పిడి చేసే రెండు పరికరాల మధ్య భాగస్వామ్యం చేయబడిన క్లాక్ సిగ్నల్ సహాయంతో పనిచేస్తుంది. ఇది పూర్తి-డ్యూప్లెక్స్ కమ్యూనికేషన్ ఎందుకంటే ఇది ప్రత్యేక బస్సును ఉపయోగించి డేటాను పంపగలదు మరియు స్వీకరించగలదు. SPI కమ్యూనికేషన్ ఆపరేట్ 5 తీగలు అవసరం. మాస్టర్ మరియు బానిసల మధ్య సరళమైన SPI కమ్యూనికేషన్ సర్క్యూట్ క్రింద చూపబడింది
కమ్యూనికేషన్కు అవసరమైన ఐదు వైర్లు SCK (సీరియల్ క్లాక్), మోసి (మాస్టర్ అవుట్ స్లేవ్ ఇన్), MISO (మాస్టర్ ఇన్ స్లేవ్ అవుట్) మరియు SS (స్లేవ్ సెలెక్ట్). SPI కమ్యూనికేషన్ ఎల్లప్పుడూ మాస్టర్ మరియు బానిస మధ్య మాత్రమే జరుగుతుంది. మాస్టర్ దానికి బహుళ బానిసలను కనెక్ట్ చేయవచ్చు. గడియారం పల్స్ ఉత్పత్తి చేయడానికి మాస్టర్ బాధ్యత వహిస్తాడు మరియు అదే అన్ని బానిసలతో పంచుకోబడుతుంది. అన్ని కమ్యూనికేషన్లను మాస్టర్ మాత్రమే ప్రారంభించవచ్చు.
SCK పిన్ (అకా SCL- సీరియల్ క్లాక్) మాస్టర్ ఉత్పత్తి చేసే క్లాక్ సిగ్నల్ను బానిసలతో పంచుకుంటుంది. MOSI పిన్ (aka SDA -Serial Data Out) మాస్టర్ నుండి డేటాను సాల్వ్కు పంపడానికి ఉపయోగిస్తారు. సాల్వ్ నుండి మాస్టర్కు డేటాను పొందడానికి MISO పిన్ (అకా SDI - సీరియల్ డేటా ఇన్) ఉపయోగించబడుతుంది. డేటా / సిగ్నల్ యొక్క కదలికను అర్థం చేసుకోవడానికి మీరు పై చిత్రంలో బాణం గుర్తును కూడా అనుసరించవచ్చు. చివరగా మాస్టర్కు ఒకటి కంటే ఎక్కువ బానిస గుణకాలు కనెక్ట్ అయినప్పుడు SS పిన్ (అకా CS -Chip select) ఉపయోగించబడుతుంది. అవసరమైన బానిసను ఎంచుకోవడానికి ఇది ఉపయోగించబడుతుంది. SPI కమ్యూనికేషన్ కోసం మాస్టర్తో ఒకటి కంటే ఎక్కువ బానిసలు అనుసంధానించబడిన నమూనా సర్క్యూట్ క్రింది సర్క్యూట్లో చూపబడింది.
I2C మరియు SPI కమ్యూనికేషన్ మధ్య వ్యత్యాసం
మేము ఇప్పటికే పిఐసితో ఐ 2 సి కమ్యూనికేషన్ నేర్చుకున్నాము మరియు ఐ 2 సి ఎలా పనిచేస్తుందో మనకు బాగా తెలిసి ఉండాలి మరియు ఆర్టిసి మాడ్యూల్ను ఇంటర్ఫేస్ చేయడానికి ఐ 2 సి వంటి వాటిని ఎక్కడ ఉపయోగించవచ్చో మనకు తెలుసు. కానీ ఇప్పుడు, మనకు ఇప్పటికే I2C ఉన్నప్పుడు SPI ప్రోటోకాల్ ఎందుకు అవసరం. కారణం I2C మరియు SPI కమ్యూనికేషన్లు దాని స్వంత మార్గాల్లో ప్రయోజనాలు మరియు అందువల్ల అప్లికేషన్ నిర్దిష్టంగా ఉంటుంది.
కొంతవరకు I2C కమ్యూనికేషన్ SPI కమ్యూనికేషన్ కంటే కొన్ని ప్రయోజనాలను కలిగి ఉన్నట్లు పరిగణించవచ్చు ఎందుకంటే I2C తక్కువ సంఖ్యలో పిన్ను ఉపయోగిస్తుంది మరియు బస్సుకు పెద్ద సంఖ్యలో బానిసలు కనెక్ట్ అయినప్పుడు ఇది చాలా ఉపయోగకరంగా ఉంటుంది. కానీ I2C యొక్క లోపము అది డేటాను పంపడం మరియు స్వీకరించడానికి అదే బస్సు కలిగి ఉంది మరియు అందుకే అది తులనాత్మకంగా నెమ్మదిగా ఉంది. కాబట్టి ఇది మీ ప్రాజెక్ట్ కోసం SPI మరియు I2C ప్రోటోకాల్ మధ్య నిర్ణయించే అప్లికేషన్ మీద ఆధారపడి ఉంటుంది.
XC8 కంపైలర్ ఉపయోగించి PIC16F877A తో SPI:
తగినంత బేసిక్స్, ఇప్పుడు మనం MPLABX IDE మరియు XC8 కంపైలర్ ఉపయోగించి PIC16F877A మైక్రోకంట్రోలర్లో SPI కమ్యూనికేషన్ను ఎలా ఉపయోగించవచ్చో తెలుసుకుందాం. ఈ ట్యుటోరియల్ XC8 కంపైలర్ ఉపయోగించి PIC16F877a లో SPI గురించి మాత్రమే మాట్లాడుతుందని మేము స్పష్టం చేయడానికి ముందు, ఈ ప్రక్రియ ఇతర మైక్రోకంట్రోలర్లకు సమానంగా ఉంటుంది, అయితే స్వల్ప మార్పులు అవసరం కావచ్చు. PIC18F సిరీస్ వంటి అధునాతన మైక్రోకంట్రోలర్ల కోసం కంపైలర్ SPI లక్షణాలను ఉపయోగించడానికి అంతర్నిర్మితంగా కొన్ని లైబ్రరీని కలిగి ఉండవచ్చని గుర్తుంచుకోండి, కానీ PIC16F877A కోసం అలాంటిదేమీ లేదు కాబట్టి మన స్వంతదానిని నిర్మించుకుందాం. ఇక్కడ వివరించిన లైబ్రరీ దిగువన డౌన్లోడ్ కోసం హెడర్ ఫైల్గా ఇవ్వబడుతుంది, ఇది ఇతర SPI పరికరాలతో కమ్యూనికేట్ చేయడానికి PIC16F877A కోసం ఉపయోగించబడుతుంది.
ఈ ట్యుటోరియల్లో SPI బస్సు నుండి డేటాను వ్రాయడానికి మరియు చదవడానికి SPI కమ్యూనికేషన్ను ఉపయోగించే ఒక చిన్న ప్రోగ్రామ్ను వ్రాస్తాము. అప్పుడు మేము ప్రోటీయస్ అనుకరణను ఉపయోగించి అదే ధృవీకరిస్తాము. SPI రిజిస్టర్లకు సంబంధించిన అన్ని కోడ్ PIC16f877a_SPI.h అని పిలువబడే హెడర్ ఫైల్ లోపల తయారు చేయబడుతుంది. ఈ విధంగా SPI కమ్యూనికేషన్ అవసరమయ్యే మా రాబోయే అన్ని ప్రాజెక్టులలో ఈ హెడర్ ఫైల్ను ఉపయోగించవచ్చు. మరియు ప్రధాన ప్రోగ్రామ్ లోపల మనం హెడర్ ఫైల్ నుండి ఫంక్షన్లను ఉపయోగిస్తాము. హెడర్ ఫైల్తో పాటు పూర్తి కోడ్ను ఇక్కడ నుండి డౌన్లోడ్ చేసుకోవచ్చు.
SPI హెడర్ ఫైల్ వివరణ:
హెడర్ ఫైల్ లోపల మేము PIC16F877a కోసం SPI కమ్యూనికేషన్ను ప్రారంభించాలి. ఎప్పటిలాగే ప్రారంభించడానికి ఉత్తమమైన ప్రదేశం PIC16F877A డేటాషీట్. PIC16F8777a కోసం SPI కమ్యూనికేషన్ను నియంత్రించే రిజిస్టర్లు SSPSTAT మరియు SSPCON రిజిస్టర్. డేటాషీట్ యొక్క 74 మరియు 75 వ పేజీలలో మీరు వాటి గురించి చేయవచ్చు.
SPI కమ్యూనికేషన్ను ప్రారంభించేటప్పుడు అనేక పారామితుల ఎంపికలు ఎంచుకోవాలి. సర్వసాధారణంగా ఉపయోగించే ఎంపిక క్లాక్ ఫ్రీక్వెన్సీ ఫోస్క్ / 4 కు సెట్ చేయబడుతుంది మరియు మధ్యలో చేయబడుతుంది మరియు గడియారం ఆదర్శ స్థితిలో తక్కువగా సెట్ చేయబడుతుంది. కాబట్టి మేము మా హెడర్ ఫైల్ కోసం అదే కాన్ఫిగరేషన్ను కూడా ఉపయోగిస్తున్నాము, మీరు సంబంధిత బిట్లను మార్చడం ద్వారా వాటిని సులభంగా మార్చవచ్చు.
SPI_ ప్రారంభించు_మాస్టర్ ()
SPI ప్రారంభించడం మాస్టర్ ఫంక్షన్ SPI కమ్యూనికేషన్ను మాస్టర్గా ప్రారంభించడానికి ఉపయోగించబడుతుంది. ఈ ఫంక్షన్ లోపల మేము సంబంధిత పిన్స్ RC5 మరియు RC3 ను అవుట్పుట్ పిన్స్ గా సెట్ చేసాము. అప్పుడు మేము SPI కమ్యూనికేషన్లను ఆన్ చేయడానికి SSPTAT మరియు SSPCON రిజిస్టర్ను కాన్ఫిగర్ చేస్తాము
రద్దు SPI_Initialize_Master () { TRISC5 = 0; // SSPSTAT = 0b00000000; // pg 74/234 SSPCON = 0b00100000; // pg 75/234 TRISC3 = 0; // బానిస మోడ్ కోసం అవుట్పుట్ గా సెట్ }
SPI_ ప్రారంభించు_ స్లేవ్ ()
SPI కమ్యూనికేషన్ కోసం స్లేవ్ మోడ్లో పనిచేయడానికి మైక్రోకంట్రోలర్ను సెట్ చేయడానికి ఈ ఫంక్షన్ ఉపయోగించబడుతుంది. స్లేవ్ మోడ్ సమయంలో పిన్ RC5 ను అవుట్పుట్గా మరియు పిన్ RC3 ను ఇన్పుట్గా సెట్ చేయాలి. SSPSTAT మరియు SSPCON బానిస మరియు మాస్టర్ రెండింటికీ ఒకే విధంగా సెట్ చేయబడతాయి.
రద్దు SPI_Initialize_Slave () { TRISC5 = 0; // SDO పిన్ను అవుట్పుట్ SSPSTAT = 0b00000000 గా ప్రకటించాలి ; // pg 74/234 SSPCON = 0b00100000; // pg 75/234 TRISC3 = 1; // మాస్టర్ మోడ్ కోసం సెట్ చేయండి }
SPI_ రైట్ (చార్ ఇన్కమింగ్)
SPI బస్సులోకి డేటాను వ్రాయడానికి SPI రైట్ ఫంక్షన్ ఉపయోగించబడుతుంది. ఇది వినియోగదారు నుండి వేరియబుల్ ఇన్కమింగ్ ద్వారా సమాచారాన్ని పొందుతుంది మరియు తరువాత దానిని బఫర్ రిజిస్టర్కు పంపించడానికి ఉపయోగిస్తుంది. SSPBUF వరుస క్లాక్ పల్స్లో క్లియర్ చేయబడుతుంది మరియు డేటా బిట్ ద్వారా బస్ బిట్లోకి పంపబడుతుంది.
రద్దు SPI_Write (చార్ ఇన్కమింగ్) { SSPBUF = ఇన్కమింగ్; // వినియోగదారు ఇచ్చిన డేటాను బఫర్లో వ్రాయండి }
SPI_Ready2 చదవండి ()
ఎస్పిఐ బస్సులోని డేటా పూర్తిగా స్వీకరించబడిందా మరియు చదవగలదా అని తనిఖీ చేయడానికి ఎస్పిఐ రెడీ టు రీడ్ ఫంక్షన్ ఉపయోగించబడుతుంది. SSPSTAT రిజిస్టర్లో BF అని పిలువబడే ఒక బిట్ ఉంది, ఇది డేటా పూర్తిగా స్వీకరించబడిన తర్వాత సెట్ అవుతుంది, కాబట్టి ఈ బిట్ సెట్ చేయకపోతే సెట్ చేయబడిందా అని మేము తనిఖీ చేస్తాము, అప్పుడు SPI బస్సు నుండి ఏదైనా చదవడానికి సెట్ అయ్యే వరకు వేచి ఉండాలి.
సంతకం చేయని SPI_Ready2Read () { if (SSPSTAT & 0b00000001) తిరిగి 1; లేకపోతే తిరిగి 0; }
SPI_ చదవండి ()
ఎస్పీఐ బస్సు నుండి డేటాను మైక్రోకంట్రోలర్లోకి చదవడానికి ఎస్పీఐ రీడ్ ఉపయోగించబడుతుంది. ఎస్పిఐ బస్సులో ఉన్న డేటా ఎస్ఎస్పిబియుఎఫ్లో నిల్వ చేయబడుతుంది, పూర్తి డేటా బఫర్లో నిల్వ అయ్యే వరకు మనం వేచి ఉండాలి, ఆపై దాన్ని వేరియబుల్గా చదవవచ్చు. డేటా రిసెప్షన్ పూర్తయిందని నిర్ధారించుకోవడానికి బఫర్ చదవడానికి ముందు మేము SSPSTAT రిజిస్టర్ యొక్క BF బిట్ను తనిఖీ చేస్తాము.
చార్ SPI_Read () // అందుకున్న డేటాను చదవండి { అయితే (! SSPSTATbits.BF); // BF బిట్ సెట్ అయ్యే వరకు పట్టుకోండి, పూర్తి డేటా రీడ్ రిటర్న్ (SSPBUF) అని నిర్ధారించుకోండి; // చదివిన డేటాను తిరిగి ఇవ్వండి }
ప్రధాన ప్రోగ్రామ్ వివరణ:
పై విభాగంలో వివరించిన విధులు హెడర్ ఫైల్లో ఉంటాయి మరియు వాటిని ప్రధాన సి ఫైల్లోకి పిలుస్తారు. కాబట్టి SPI కమ్యూనికేషన్ పనిచేస్తుందో లేదో తనిఖీ చేయడానికి ఒక చిన్న ప్రోగ్రామ్ వ్రాద్దాం. మేము SPI బస్సులో కొన్ని డేటాను వ్రాస్తాము మరియు SPI డీబగ్గర్లో అదే డేటా అందుతుందో లేదో తనిఖీ చేయడానికి ప్రోటీస్ అనుకరణను ఉపయోగిస్తాము.
కాన్ఫిగరేషన్ బిట్లను సెట్ చేయడం ద్వారా ప్రోగ్రామ్ను ఎప్పటిలాగే ప్రారంభించండి, ఆపై క్రింద చూపిన విధంగా మేము ప్రోగ్రామ్లోకి వివరించిన హెడర్ ఫైల్ను జోడించడం చాలా ముఖ్యం
# చేర్చండి
మీరు పైన డౌన్లోడ్ చేసిన జిప్ ఫైల్ నుండి ప్రోగ్రామ్ను తెరిచినట్లయితే, అప్రమేయంగా మీ ప్రాజెక్ట్ ఫైల్ యొక్క హెడర్ ఫైల్ డైరెక్టరీలో హెడర్ ఫైల్ ఉంటుంది. లేకపోతే మీరు మీ ప్రాజెక్ట్ లోపల హెడర్ ఫైల్ను మాన్యువల్గా జతచేయాలి, ఒకసారి మీ ప్రాజెక్ట్ ఫైల్లు జోడించినట్లయితే ఇది క్రింద కనిపిస్తుంది
ప్రధాన ఫైల్ లోపల మేము పిఐసిని ఎస్పిఐ కమ్యూనికేషన్ కోసం మాస్టర్గా ప్రారంభించాలి మరియు అనంతం అయితే లూప్ లోపల మేము అనుకరణ సమయంలో అదే అందుకున్నామో లేదో తనిఖీ చేయడానికి యాదృచ్ఛిక మూడు హెక్స్ విలువలను ఎస్పిఐ బస్సులో వ్రాస్తాము.
void main () { SPI_Initialize_Master (); (1) { SPI_Write (0X0A); __ ఆలస్యం_ఎంఎస్ (100); SPI_ రైట్ (0X0F); __ ఆలస్యం_ఎంఎస్ (100); SPI_ రైట్ (0X15); __ ఆలస్యం_ఎంఎస్ (100); } }
ప్రోగ్రామ్లో ఉపయోగించిన యాదృచ్ఛిక విలువలు 0A, 0F మరియు 15 అని గమనించండి మరియు అవి హెక్స్ విలువలు కాబట్టి అనుకరణ సమయంలో మనం అదే చూడాలి. కోడ్ అంతా పూర్తయింది, ఇది కేవలం ఒక నమూనా మాత్రమే కాని ఇతర MCU తో లేదా SPI ప్రోటోకాల్పై పనిచేసే ఇతర సెన్సార్ మాడ్యూల్తో కమ్యూనికేట్ చేయడానికి మేము అదే పద్దతిని ఉపయోగించవచ్చు.
SPI డీబగ్గర్తో PIC ని అనుకరించడం:
ఇప్పుడు మా ప్రోగ్రామ్ సిద్ధంగా ఉంది, మేము దానిని కంపైల్ చేసి, ఆపై అనుకరణతో కొనసాగవచ్చు. ప్రోటీస్ SPI డీబగ్గర్ అని పిలువబడే చక్కని సులభ లక్షణాన్ని కలిగి ఉంది, దీనిని SPI బస్సు ద్వారా డేటాను పర్యవేక్షించడానికి ఉపయోగించవచ్చు. కాబట్టి మేము అదే ఉపయోగిస్తాము మరియు క్రింద చూపిన విధంగా ఒక సర్క్యూట్ను నిర్మిస్తాము.
అనుకరణలో ఒకే ఒక SPI పరికరం ఉన్నందున మేము SS పిన్ను ఉపయోగించడం లేదు మరియు ఉపయోగించనప్పుడు పైన చూపిన విధంగా గ్రౌండింగ్ చేయాలి. హెక్స్ ఫైల్ను PIC16F877A మైక్రోకంట్రోలర్లో లోడ్ చేసి, మా ప్రోగ్రామ్ను అనుకరించడానికి ప్లే బటన్పై క్లిక్ చేయండి. అనుకరణ ప్రారంభమైన తర్వాత మీరు క్రింద చూపిన విధంగా SPI బస్సులో డేటాను ప్రదర్శించే పాప్-అప్ విండోను పొందుతారు
వస్తున్న డేటాను నిశితంగా పరిశీలిద్దాం మరియు ఇది మా ప్రోగ్రామ్లో మేము వ్రాసిన మాదిరిగానే ఉందా అని తనిఖీ చేద్దాం.
మా ప్రోగ్రామ్లో మేము వ్రాసిన అదే క్రమంలో డేటా అందుతుంది మరియు అదే మీ కోసం హైలైట్ అవుతుంది. SPI ప్రోటోకాల్ ఉపయోగించి రెండు PIC మైక్రోకంట్రోలర్లతో కమ్యూనికేట్ చేయడానికి మీరు ప్రోగ్రామ్ను అనుకరించటానికి కూడా ప్రయత్నించవచ్చు. మీరు ఒక పిఐసిని మాస్టర్గా, మరొకటి బానిసగా ప్రోగ్రామ్ చేయాలి. ఈ ప్రయోజనం కోసం అవసరమైన అన్ని హెడర్ ఫైల్స్ ఇప్పటికే హెడర్ ఫైల్లో ఇవ్వబడ్డాయి.
ఇది SPI ఏమి చేయగలదో ఒక సంగ్రహావలోకనం, ఇది బహుళ పరికరాలకు డేటాను చదవగలదు మరియు వ్రాయగలదు. SPI ప్రోటోకాల్తో పనిచేసే వివిధ మాడ్యూళ్ళను ఇంటర్ఫేస్ చేయడం ద్వారా మేము మా రాబోయే ట్యుటోరియల్లలో SPI గురించి మరింత కవర్ చేస్తాము.
మీరు ప్రాజెక్ట్ అర్థం చేసుకున్నారని మరియు దాని నుండి ఉపయోగకరమైనదాన్ని నేర్చుకున్నారని ఆశిస్తున్నాము. మీకు ఏవైనా సందేహాలు ఉంటే వాటిని క్రింది వ్యాఖ్య విభాగంలో పోస్ట్ చేయండి లేదా సాంకేతిక సహాయం కోసం ఫోరమ్లను ఉపయోగించండి.
పూర్తి ప్రధాన కోడ్ క్రింద ఇవ్వబడింది; మీరు ఇక్కడ నుండి అన్ని కోడ్లతో హెడర్ ఫైల్లను డౌన్లోడ్ చేసుకోవచ్చు