మైక్రోకంట్రోలర్ బేసిక్స్ అన్వేషించబడ్డాయి

సమస్యలను తొలగించడానికి మా పరికరాన్ని ప్రయత్నించండి





మైక్రోకంట్రోలర్ ఐసిల గురించి ఒక విషయం చాలా బాగుంది, ఇవి ప్రపంచంలోని అన్ని ప్రాంతాలలో మరియు ఎలక్ట్రానిక్ రిటైలర్లలో అందుబాటులో ఉన్నాయి.

పరిచయం

ప్రాథమికంగా మైక్రోకంట్రోలర్ పరికరాలు చుట్టుపక్కల పర్యావరణం యొక్క అంచనాలను కలిగి ఉన్న అనువర్తనాల్లో మరియు ఇలాంటి ఎలక్ట్రానిక్స్‌లో ప్రసిద్ది చెందాయి.



మోటారు నియంత్రణ అనువర్తనాలు, ఎల్‌ఈడీ లైటింగ్, టిల్ట్ సెన్సార్, యాక్సిలెరోమీటర్, వేగం మీటర్, డేటా లాగర్స్, ఉష్ణోగ్రత కంట్రోలర్లు, కీబోర్డులు మొదలైన వివిధ రకాల సెన్సార్లలో ఒక నిర్దిష్ట పరామితిని ప్రదర్శించడానికి ఈ పరికరాలను మీరు కనుగొనవచ్చు.

మైక్రోకంట్రోలర్‌లకు సంబంధించిన ప్రాధమిక అవగాహన AVR అమేగా 32 మైక్రోకంట్రోలర్‌ను సూచించడం ద్వారా పొందవచ్చు, ఇది చాలా అభివృద్ధి చెందింది, కొన్నిసార్లు దీనిని చిప్‌లోని కంప్యూటర్ అని పిలుస్తారు.



ప్రోగ్రామ్‌ను రూపొందించడానికి ఆదేశాల శ్రేణిని నిర్వహించడానికి ఈ పరికరం కేటాయించబడింది.

మీరు ఇక్కడ చూడబోయే ప్రోగ్రామ్ యొక్క భాష C ++. మీరు ఇక్కడ భాషలో ఈ భాషను మరింత లోతుగా నేర్చుకుంటారు.

MCU ల విషయానికి వస్తే, మీరు దాని పిన్‌అవుట్‌లన్నింటినీ నియంత్రించే మరియు కాన్ఫిగర్ చేసే అవకాశాన్ని కలిగి ఉంటారు.

మీరు దీనితో కొంచెం అలసిపోతుంటే, చలిగా ఉండండి, ఇది సంక్లిష్టంగా ఏమీ లేదు, మేము ముందుకు వెళ్ళేటప్పుడు మీరు అన్ని అంశాల ద్వారా స్థిరంగా కానీ గట్టిగా ఉంటారు.

MCU చిప్‌లో చిప్ యొక్క పవర్ పిన్‌లు అయిన Vdd మరియు Vss మినహా అన్ని పిన్‌లను ప్రత్యేకమైన హోదాతో కేటాయించవచ్చు.

పిన్అవుట్ వివరాలు

మీరు పై నుండి చిప్‌ను చూస్తే, మీరు కొద్దిగా త్రిభుజాకార గీతను కనుగొంటారు, ఇది పిన్‌అవుట్‌లు ప్రారంభమయ్యే పాయింట్‌ను ప్రారంభించే పాయింట్‌ను సూచిస్తుంది, ఇది చిప్ యొక్క # 1 పిన్ ఈ గీత కింద ప్రారంభమవుతుంది.

ఈ పిన్ నుండి ప్రారంభించి, ఆ వైపు (ఎడమ) 20 పిన్స్, మరియు మరొక 20 పిన్స్ మరొక వైపు (కుడి), దిగువ నుండి కుడి వైపు వరకు కొనసాగుతాయి.

గీత నుండి ప్రారంభమయ్యే మొదటి 8 పిన్స్ PBO-7, ఇవి IC యొక్క ఇండెక్స్ పిన్‌లను ఏర్పరుస్తాయి, ఎందుకంటే ఇక్కడ అన్ని ప్రోగ్రామ్‌లు ఇండెక్స్ సున్నాతో ప్రారంభమవుతాయి.

పై సిరీస్ పిన్‌అవుట్‌లను PORT B ​​అని పిలుస్తారు, అయితే A నుండి D కి కేటాయించిన ఇతర సారూప్య పోర్ట్‌లు ఉన్నాయి.

INPUT అని పిలువబడే ఫెడ్ డేటాను అంగీకరించడానికి మరియు గుర్తించడానికి మరియు OUTPUT అని పిలువబడే కొన్ని నిర్దిష్ట రూపంలో డేటాను ప్రసారం చేయడానికి ఈ పోర్ట్‌లను కేటాయించవచ్చు.

సాధారణ వర్గంలోకి వచ్చే రెండు పిన్స్ (+) / (-) పిన్స్, వీటిని Vdd మరియు GND అని కూడా పిలుస్తారు.

PORT D (PDO-6) నుండి ఒక పిన్ దిగువ ప్రాంతంలో చిప్ యొక్క ఎడమ వైపున ఉన్నట్లు చూడవచ్చు.

PORT D యొక్క పిన్ # 7 అయిన PD7 ఒంటరిగా నిలబడి పిన్అవుట్ల కుడి వైపు సిరీస్‌ను ప్రారంభిస్తుంది.

PORT D ముగుస్తున్న చిప్ యొక్క కుడి వైపు నుండి ఇప్పుడు కదులుతుంది, PORT C దాని గణనను క్రమంలో పైకి ప్రారంభిస్తుంది.

ఇవి అనలాగ్ నుండి డిజిటల్ వరకు MCU యొక్క అనేక ఆసక్తికరమైన పిన్‌లకు దోహదం చేస్తాయి.

ఈ పిన్‌లు బాహ్యంగా కాన్ఫిగర్ చేయబడిన అనలాగ్ సర్క్యూట్ దశల ద్వారా అనేక పారామితులను గుర్తించడానికి సెన్సింగ్ ఇన్‌పుట్‌లుగా మారతాయి.

పై పిన్స్ PORT A ను కలిగి ఉంటాయి.

పై పిన్స్ అంతటా డిజిటల్ మార్పిడికి అనలాగ్ ఒక ఉదాహరణ సహాయంతో అర్థం చేసుకోవచ్చు, దీనిలో థర్మిస్టర్ వంటి సాధారణ సెన్సార్ ఉపయోగించి కనుగొనబడిన అనలాగ్ ఉష్ణోగ్రత స్థాయి PORT A పిన్స్‌లో ఒకదానికి వర్తించబడుతుంది, ఇది MCU చేత వెంటనే అంగీకరించబడుతుంది మరియు కన్వర్టర్ అవుతుంది డిజిటల్ రీడౌట్‌ను సున్నా నుండి 255 డిగ్రీల ఎఫ్‌కు ఉత్పత్తి చేయడానికి (10-బిట్ అవుట్‌పుట్ సాధించడానికి అప్‌గ్రేడ్ చేయగల 8-బిట్ ఫిగర్).

MCU లలో అదనంగా చూడగలిగే మరో లక్షణం అందుబాటులో ఉన్న ప్రోగ్రామింగ్ స్థలం లేదా మైక్రోకంట్రోలర్ కోసం పేర్కొన్న వేరియబుల్స్ మరియు ప్రోగ్రామ్ కోసం స్థలాన్ని నిర్ణయించే మెమరీ.

దీనికి అదనంగా, సంబంధిత పారామితులను లెక్కించడానికి MCU లకు అంతర్నిర్మిత గడియారం కేటాయించబడింది.

గడియార లక్షణాలు MCU అనేక విభిన్న లెక్కింపు ప్రక్రియల కోసం దరఖాస్తు చేసుకోవడానికి వీలు కల్పిస్తాయి, ఇవి నిర్దిష్ట పరికరం యొక్క స్పెసిఫికేషన్‌ను బట్టి మైక్రోసెకన్ల పరిధిలో వేగంగా ఉంటాయి మరియు కావలసిన పొడిగింపులకు కూడా నెమ్మదిగా ఉంటాయి.

ఇప్పుడు మీరు మైక్రోకంట్రోలర్ భావనను కొంతవరకు మరియు దాని పోర్టులు మరియు పిన్స్ గురించి అర్థం చేసుకోవచ్చు.

ప్రోగ్రామర్ నుండి మైక్రోకంట్రోలర్ వరకు SPI కనెక్టర్‌ను ఎలా సృష్టించాలి

ఇప్పుడు ఈ విషయంపై కొంచెం లోతుగా వెళ్లి ప్రోగ్రామింగ్ ప్రపంచాన్ని పరిశోధించే సమయం వచ్చింది.

చిప్‌లోకి ప్రోగ్రామ్ లోడింగ్ విధానంలో పాల్గొనడానికి ముందు, ఎస్‌పిఐ (సీరియల్ పెరిఫెరల్ ఇంటర్ఫేస్) కనెక్టర్‌ను ఎంసియుతో అనుసంధానించడానికి సరైన మార్గాన్ని కనుగొనాలి.

అయినప్పటికీ దీని తరువాత కూడా మేము SPI ని MCU పిన్‌అవుట్‌లలోకి నెట్టలేము, మనం చేయగలమా? SPI నుండి విస్తరించిన వైర్లను నేరుగా బ్రెడ్ బోర్డులో చేర్చడానికి మేము అనుమతించలేము. ఇది చెడ్డ కనెక్షన్లు చేసే తప్పు పిన్‌లతో అనుసంధానించబడిన తప్పు వైర్‌ల అమరికకు కూడా కారణం కావచ్చు.

అందువల్ల విషయాలు పూర్తిగా తప్పుపట్టలేనివిగా చేయడానికి, మేము ఒక చిన్న వెరోబోర్డుపై విధివిధానాలను చేస్తాము, దీనిలో అవసరమైన అనుసంధాన మెటల్ పిన్‌లను “హెడర్” టంకం అని కూడా పిలుస్తాము. ఈ హెడర్ పిన్‌లను ఇప్పుడు SPI కనెక్టర్‌తో కనెక్ట్ చేయడానికి ఉపయోగించవచ్చు. ఈ హెడర్ నుండి కనెక్షన్లు బ్రెడ్‌బోర్డ్ కనెక్షన్‌ల కోసం ఉపయోగించబడే మరొక సమాంతర హెడర్ పిన్‌లకు ముగించబడతాయి.

అందువల్ల పై అసెంబ్లీ ఇప్పుడు SPI కోసం MCU కు సుఖకరమైన మరియు నమ్మదగిన ఇంటర్మీడియట్ కనెక్ట్ ప్లాట్‌ఫామ్‌ను రూపొందిస్తుంది.

ఇప్పుడు ప్రతిదీ మంచి ప్రకటనగా కనబడుతోంది, కాబట్టి మీ PC మరియు MCU ల మధ్య అవసరమైన ప్రోగ్రామర్‌కు సంబంధించి సంపాదించడానికి ముందుకు వెళ్దాం.

ఈ ప్రోగ్రామర్ యూనిట్లను తయారు చేసి విక్రయించే కంపెనీల హోస్ట్ ఉండవచ్చు, కాబట్టి వీటిని సేకరించడం మీకు అడాఫ్రూట్ ఇండస్ట్రీస్, యుఎస్‌బిటినిఐఎస్పి లేదా స్పార్క్ఫన్ వంటి సమస్య కాదు.

వీటిలో కొన్ని సాంప్రదాయిక రకానికి పూర్తిగా భిన్నంగా కనిపిస్తాయి, కాని ప్రాథమికంగా ప్రతిదీ ఒకేలా ఉంటాయి మరియు ప్రామాణిక ప్రోగ్రామింగ్ నియమాలను అనుసరిస్తాయి మరియు మీ PC మరియు AVR మైక్రోకంట్రోలర్‌ల మధ్య ఇంటర్‌ఫేస్‌గా ఉపయోగించవచ్చు.

అయితే, మీరు AVR Atmega32 ను కాకుండా వేరే MCU ని ఉపయోగిస్తుంటే, ఆ నిర్దిష్ట MCU చిప్ కోసం మీరు అనుకూలమైన ప్రోగ్రామర్ కోసం తనిఖీ చేయాల్సి ఉంటుంది.

ఈ ప్రోగ్రామర్‌లలో చాలా తక్కువ మంది ఒకేలాంటి డ్రైవర్లను ఉపయోగిస్తున్నారని గమనించవచ్చు, ఏదో ఒక జాగ్రత్త తీసుకోవాలి మరియు దాని గురించి మన తదుపరి అధ్యాయాలలో మరింత తెలుసుకుంటాము.

మీ PC ని మైక్రోకంట్రోలర్ చిప్‌తో కనెక్ట్ చేయడం నిజంగా ప్రాథమికమైనది, మరియు దీనికి ఎంత సులభమైన చర్యలు అవసరమో తెలుసుకోవడం మీకు ఆనందంగా ఉంటుంది. కాబట్టి వెంటనే బటన్‌ను నొక్కండి

పైన వివరించిన SPI ఇంటర్ఫేస్ బోర్డ్‌ను తయారు చేయడం కష్టం కాదు, చిన్న సాధారణ ప్రయోజన బోర్డులో చూపిన రెండు హెడర్ వరుసల పిన్‌లలోని అన్ని కనెక్షన్ల ద్వారా మీ టంకము ఇనుము పని చేయడం.

శీర్షికల మధ్య వైర్లను ఒకదానితో ఒకటి అనుసంధానించేటప్పుడు మీరు అనుసరించాల్సిన కనెక్షన్ వివరాలను పై చిత్రంలో చూపిస్తుంది.

విషయాలను మరింత సరళంగా చేయడానికి, పై చిత్రాన్ని సూచించడం ద్వారా కింది కనెక్షన్ వివరాల ద్వారా చూద్దాం:

ఎగువ ఎడమ నుండి ప్రారంభమయ్యే SPI పిన్ “మాస్టర్ IN, స్లేవ్ U ట్” (MISO)

మధ్య ఎడమ నుండి SPI పిన్ క్లాక్ పిన్ (SCK) తో కలుపుతుంది

దిగువ ఎడమ వైపున ఉన్న SPI పిన్ రీసెట్‌తో కలుస్తుంది. (ఈ పిన్ గురించి మేము ఈ క్రింది ట్యుటోరియల్‌లలో విస్తృతంగా నేర్చుకుంటాము)

దిగువ కుడివైపున ఉన్న SPI MCU యొక్క GND పిన్‌తో సంబంధం కలిగి ఉంటుంది, GND అనేది సున్నా సరఫరా రేఖను లేదా సరఫరా యొక్క ప్రతికూల (సాపేక్ష) రైలును ఏర్పరుచుకునే పిన్‌ను సూచిస్తుంది.

మధ్య కుడి శీర్షిక నుండి SPI ముగుస్తుంది MCU యొక్క “మాస్టర్ అవుట్, స్లేవ్ ఇన్” (మోసి) పిన్‌తో.

ఎగువ కుడి శీర్షిక నుండి బయటకు వచ్చే SPI MCU యొక్క (+) తో తీగలాడుతుంది, ఇది స్పష్టంగా Vdd లేదా MCU యొక్క సానుకూల సరఫరా పిన్.

అంతే.

వివరించిన విధంగా రెండు కనెక్టర్లను కనెక్ట్ చేయండి మరియు అవసరమైన చర్యలకు మీ SPI ఇంటర్ఫేస్ బోర్డు సిద్ధంగా ఉంది.

మరింత సహాయం కోసం మీరు పైన చూపిన బొమ్మను సంప్రదించవచ్చు, పై చర్చ సహాయంతో అన్ని వైర్ కనెక్షన్లు తగిన విధంగా చేసిన తర్వాత మీ తుది ఇంటర్ఫేస్ బోర్డు ఇలా ఉండాలి.

మునుపటి ట్యుటోరియల్‌లో వివరించిన విధంగా మీరు ఇప్పటికే SPI ఇంటర్‌ఫేస్‌ను నిర్మించి ఉండవచ్చని నేను నమ్ముతున్నాను, మరియు PC మరియు MCU ల మధ్య మనం ఏకీకృతం చేయాల్సిన ప్రోగ్రామర్‌ను మా కంప్యూటర్ అంగీకరిస్తుందని నిర్ధారించుకోవలసిన సమయం ఆసన్నమైంది.

MCU కోసం సాధారణ ప్రోగ్రామింగ్ కోడ్‌ను రూపొందించడం

కంప్యూటర్‌ను మైక్రోకంట్రోలర్‌తో అనుసంధానించడం కోసం మేము స్పార్క్ఫన్ నుండి అందుబాటులో ఉన్న యుఎస్‌బిటినిఐఎస్పి యూనిట్‌ను తీసుకుంటాము.

విండోస్ వంటి ఏదైనా కంప్యూటర్ ఆపరేటింగ్ సిస్టమ్‌కు డ్రైవర్లు అవసరమవుతాయని మాకు తెలుసు, అది లేకుండా కంప్యూటర్‌లోకి ఏదైనా లోడ్ చేయడం పనికిరానిది, అందువల్ల మీ కంప్యూటర్‌లోకి లోడ్ కావడానికి మా ప్రోగ్రామర్‌కు డ్రైవర్లు అవసరం.

మీ కంప్యూటర్ OS లో డ్రైవర్లను ఇన్‌స్టాల్ చేయడానికి అవసరమైన విధానాలను పరిశీలిద్దాం, ఇక్కడ మేము విండోస్ 7 OS యొక్క ఉదాహరణను 32-బిట్ లేదా 64-బిట్ స్పెక్స్‌తో తీసుకుంటాము.

Sparkfun.com ను తెరిచి “పాకెట్ AVR ప్రోగ్రామర్ పేజీ” పై క్లిక్ చేయండి. లింక్‌ను పేజీలో సులభంగా చూడవచ్చు.

తరువాత, పత్రాల క్రింద “విండోస్ డ్రైవర్” ను కనుగొని దానిపై క్లిక్ చేయండి.

ఇది మీ కంప్యూటర్‌లోని పాకెట్‌ప్రోగ్- డ్రైవర్.జిప్ ఫైల్‌ను మీకు అందిస్తుంది.

మీ కంప్యూటర్‌కు వెళ్లి, డౌన్‌లోడ్ స్థానాన్ని కనుగొని, డౌన్‌లోడ్ చేసిన ఫైల్‌ను ఫోల్డర్‌లోకి అన్జిప్ చేయండి.

మీ కంప్యూటర్ 64-బిట్ OS అయితే, 32-బిట్ OS తో, మీరు క్రింద ఇచ్చిన కొన్ని దశలను అనుసరించాలి, మీరు అన్జిప్ చేయబడిన ఫైల్ నుండి నేరుగా సంస్థాపనను ప్రారంభించవచ్చు.

64-బిట్ కోసం వీటిని అనుసరించండి, 32-బిట్ కోసం విస్మరించండి:

గూగుల్ “లిబస్బ్ సోర్స్‌ఫోర్జ్” మరియు ఈ లింక్స్ తాజా వెర్షన్‌పై క్లిక్ చేయండి.

మీరు కొన్ని అదనపు ఫైళ్ళను చూడవచ్చు, అయితే మీరు బిబ్ ఫైల్‌ను కనుగొనడానికి ఆసక్తి కలిగి ఉంటారు, అంటే: libusb-win32-bin - #. #. #. #. జిప్

ఇప్పుడు, వెళ్లి మీ కంప్యూటర్‌లో ఈ డౌన్‌లోడ్ స్థానాన్ని కనుగొని, దాన్ని అన్జిప్ చేసి ఫోల్డర్‌లలో ఒకదానిలో సేవ్ చేయండి.

ఈ ఫోల్డర్‌లోకి, బిన్ ఫోల్డర్‌పై నావిగేట్ చేయండి, amd64 ఫోల్డర్‌కు వెళ్లండి.

మీరు ఇక్కడ రెండు ఫోల్డర్‌లను చూస్తారు: ghcalled libusb0.dll మరియు libusb0.sys.

మీరు వీటిని పేరు మార్చాలనుకుంటున్నారు: libusb0_x64.dll మరియు libusb0_x64.sys.

ఇప్పుడు మీరు పై ఫైళ్ళను పాకెట్‌ప్రోగ్-డ్రైవర్ ఫోల్డర్‌లోకి కాపీ చేయవలసి ఉంటుంది, ఉన్న వెర్షన్‌లోని ఫైల్‌లను ఓవర్రైట్ చేయండి.

పై డ్రైవర్లను వ్యవస్థాపించడానికి, దాని రకంలో సాంప్రదాయేతర కింది పద్ధతి మీకు ఆసక్తి కలిగిస్తుంది:

ఇది “లెగసీ హార్డ్‌వేర్‌ను జోడించు” మోడ్.

“స్టార్ట్ మెనూ” పై క్లిక్ చేయండి

“కంప్యూటర్” పై కుడి క్లిక్ చేయడం ద్వారా కొనసాగండి

“నిర్వహించు” పై క్లిక్ చేసి, చివరకు “పరికర నిర్వాహికి” పై క్లిక్ చేయండి

తరువాత, మెను లోపల, “లెగసీ హార్డ్‌వేర్‌ను జోడించు” ఎంచుకోండి

విజర్డ్ చొప్పించబడే వరకు “తదుపరి” నొక్కండి

సూచనలను అనుసరించి, “మీరు అధునాతన జాబితా నుండి ఎంచుకోవలసిన హార్డ్‌వేర్‌ను ఇన్‌స్టాల్ చేయండి” పై క్లిక్ చేయండి, ఇది రేడియో బటన్ చిహ్నాన్ని నిర్దిష్ట ఎంపికలోకి అడుగుతుంది. ఇది వాస్తవానికి విండోస్ కంట్రోల్ బటన్, ఇప్పుడు గుండ్రని నీలం దాఖలు ఉన్న చిన్న సర్కిల్ లాగా కనిపిస్తుంది.

ఇప్పుడు “తదుపరి” క్లిక్ చేయండి

ఇది మీరు క్లిక్ చేయాల్సిన “అన్ని పరికరాలను చూపించు” మెనుని చూపుతుంది.

దీని తరువాత “డిస్క్ కలిగి” ఐకాన్ పై క్లిక్ చేయండి.

“బ్రౌజ్” చిహ్నం సహాయంతో, పాకెట్‌ప్రోగ్-డ్రైవర్ ఫోల్డర్ యొక్క స్థానానికి వెళ్లండి. ఎంపిక మీ చేత సరిగ్గా జరిగితే, మీరు నిర్దిష్ట ఫోల్డర్‌లో ఉంచిన పాకెట్‌ప్రోగ్.ఇన్ ఫైల్‌ను దృశ్యమానం చేస్తారు.

ఈ ఫైల్‌పై డబుల్ క్లిక్ చేయండి మరియు డ్రైవర్ మీ PC లోకి ఇన్‌స్టాల్ చేయబడటం మీరు ఖచ్చితంగా చూస్తారు.

ఓవర్ అండ్ అవుట్ !! తరువాతి పేజీలోని మా తదుపరి ట్యుటోరియల్‌తో చూద్దాం.

ఇప్పటికి మీరు అవసరమైన సాఫ్ట్‌వేర్‌ను ఇన్‌స్టాల్ చేసి, SPI ఇంటర్‌ఫేస్‌ను నిర్మించి ఉండవచ్చు.

మైక్రోకంట్రోలర్ చిప్‌లోకి ప్రోగ్రామ్‌ను ఎలా బదిలీ చేయాలి

తదుపరి దశ బ్రెడ్‌బోర్డ్, ఎల్‌ఇడి మరియు అనుకున్న అనువర్తనం కోసం లెక్కించిన రెసిస్టర్ వంటి కొన్ని భాగాలను పిలుస్తుంది.

ఈ విభాగంలో మేము ప్రోగ్రామర్ యొక్క పరీక్షా పద్ధతిని నేర్చుకుంటాము మరియు సంబంధిత డ్రైవర్లు మరియు సాఫ్ట్‌వేర్ యొక్క సంస్థాపనను నిర్ధారిస్తాము.

డ్రైవర్లు మరియు సాఫ్ట్‌వేర్ సరిగ్గా ఇన్‌స్టాల్ చేయబడిందో లేదో ధృవీకరించడానికి, మేము అవ్రుడ్ అని పిలువబడే ఒక సాధారణ ప్రోగ్రామ్‌ను అమలు చేస్తాము.

AVRdude అనేది తాజా WinAVR ఇన్‌స్టాలేషన్‌తో అనుబంధించబడిన ప్రోగ్రామ్, ఇది లేకుండా MCU లోకి ఫైల్ యొక్క వాస్తవ బదిలీ సాధ్యం కాదు.

ఈ ప్రోగ్రామ్ .hex ఫైల్ ఫార్మాట్, ఇది అవసరమైన మరణశిక్షల కోసం MCU కి అర్థమయ్యేలా చేస్తుంది.

ధృవీకరణ విజయవంతం కాకపోతే, ప్రోగ్రామర్ ఫైల్ యొక్క బదిలీని చేయలేకపోతాడు.

కింది సూచనల సహాయంతో పరీక్షా విధానాన్ని ఎలా అమలు చేయవచ్చో త్వరగా చూద్దాం:

“స్టార్ట్ మెనూ” క్లిక్ చేసి, ఇచ్చిన సెర్చ్ బాక్స్‌లో cmd.exe అని టైప్ చేయడం ద్వారా DOS (డిస్క్ ఆపరేటింగ్ సిస్టమ్) ప్రాంప్ట్‌ను తెరవండి.

ఇప్పుడు AVRdude ను DOS ప్రాంప్ట్ మీద avrdude –c usbtiny –p m32 అని టైప్ చేయడం ద్వారా చేయవచ్చు. ఇది అమలు అయిన వెంటనే, కనెక్షన్ విజయవంతమైందో లేదో DOS తక్షణమే అంగీకరిస్తుంది.

పై ఆదేశంలో, “-సి” అనేది నోటిఫై చేసే ఫ్లాగ్, ఇందులో “యుఎస్‌బిటిని” ప్రోగ్రామర్ పారామితి స్పెసిఫికేషన్ ఉంటుంది, అయితే “-పి” ట్యాగ్ మైక్రోకంట్రోలర్ పరికరాన్ని గుర్తిస్తుంది (“ఎమ్ 32 అట్మెగా 32 ను సూచిస్తుంది).

ఒకవేళ మీరు వేరే MCU ను ఉపయోగించినట్లయితే, మీరు అమలు కోసం సంబంధిత ఉపసర్గలను చేర్చాలి.

పై విధానం పూర్తయిన తర్వాత, మీరు DOS ప్రాంప్ట్ పై “నిష్క్రమించు” అని టైప్ చేయవచ్చు మరియు అది మిమ్మల్ని విండో నుండి కదిలిస్తుంది.

వాస్తవ ప్రోగ్రామింగ్ వివరాల గురించి మీరు తీవ్రంగా ఆలోచిస్తున్నట్లయితే, దాని కోసం మేము మొదట ప్రోగ్రామ్‌ను అమలు చేయగల బాహ్య అనలాగ్ LED సర్క్యూట్‌ను టంకము చేసి నిర్మించవలసి ఉంటుంది, ఎందుకంటే MCU, ప్రోగ్రామింగ్ నుండి ప్రతిస్పందనను గుర్తించడానికి ఒక వ్యవస్థ లేకపోతే. మరియు మైక్రోకంట్రోలర్ యొక్క రన్నింగ్ చాలా అర్థరహితం అవుతుంది.

ఎల్‌ఈడీ బోర్డ్‌ను తయారు చేయడం చాలా సులభం, ఇదంతా ఎల్‌ఈడీ యొక్క రెండు లీడ్స్‌ను వెరోబోర్డ్ ముక్కపై టంకం వేయడం మరియు ఎల్‌ఈడీ యొక్క సీసంతో రెసిస్టర్‌ను కనెక్ట్ చేయడం. ఈ ఎల్‌ఈడీ యొక్క పాత్ర ఎల్‌ఈడీకి కరెంట్‌ను పరిమితం చేయడమే, తద్వారా ఎంసియు అవుట్‌పుట్ నుండి అదనపు వోల్టేజ్ యాడ్ కరెంట్ కారణంగా అది బర్న్ అవ్వదు.

కింది సాధారణ సూత్రాన్ని ఉపయోగించి నిరోధకం యొక్క విలువను లెక్కించవచ్చు:

R = (Ub - LEDfwd) / I.

Ub సరఫరా వోల్టేజ్ అయినప్పుడు, LEDfwd అనేది LED యొక్క సరైన ఆపరేటింగ్ వోల్టేజ్, మరియు నేను దాని సరైన ఆంప్స్.

మేము LED ఫార్వర్డ్ వోల్టేజ్ = 2.5V మరియు ప్రస్తుత I = 20mA కలిగి ఉన్న RED LED ని ఉపయోగిద్దాం అనుకుందాం, పై సమీకరణాన్ని ఈ క్రింది విధంగా పరిష్కరించవచ్చు:

MCU నుండి వోల్టేజ్ 5V అవుతుంది కాబట్టి, దీనిని ఇలా వ్యక్తీకరించవచ్చు:

R = (5 - 2.5) /. 02 = 125 ఓంలు, ¼ వాట్, సమీప విలువ 120 ఓంలు చేస్తుంది.

ఇప్పుడు మనకు LED, 120 ఓం రెసిస్టర్ మరియు వెరోబోర్డ్ ఉన్నాయి, రేఖాచిత్రంలో ఇచ్చిన విధంగా పై భాగాలను మైక్రోకంట్రోలర్‌తో అనుసంధానించండి.

ఇది పూర్తయిన తర్వాత, పైన పేర్కొన్న LED సెటప్‌లో ఉద్దేశించిన ప్రతిస్పందన కోసం MCU ను ప్రోగ్రామ్ చేయవచ్చు.

తరువాత, MCU యొక్క ప్రోగ్రామింగ్.

మైక్రోకంట్రోలర్ కొన్ని అర్ధవంతమైన అమలులను చేయడానికి అనుమతించడానికి, MCU లో తగిన సూచనలను వ్రాయడం అత్యవసరం.

ప్రోగ్రామింగ్ పర్యావరణాన్ని ఎలా వ్యవస్థాపించాలి మరియు WinAVR ను పరిశోధించండి

దీని కోసం మేము మా PC లో మా స్వంత “టెక్స్ట్ ఎడిటర్” ను ఉపయోగించుకోవచ్చు, అయినప్పటికీ సాధారణ టెక్స్ట్ ఎడిటర్‌కు బదులుగా మరింత ప్రొఫెషనల్ “ప్రోగ్రామింగ్ ఎన్విరాన్మెంట్” వాడకాన్ని మనలో అభినందిస్తున్నాము, ఎందుకంటే ఈ విధానం మీకు కొన్నింటిని ఆస్వాదించడానికి అనుమతిస్తుంది ఈ “ప్రోగ్రామింగ్ ఎన్విరాన్మెంట్” ప్యాకేజీలో అంతర్నిర్మిత ఆసక్తికరమైన లక్షణాలు.

ఇది వివిధ భాషల ద్వారా ప్రోగ్రామ్‌లను సృష్టించడానికి మరియు సవరించడానికి మద్దతు ఇస్తుంది మరియు వాటిని మైక్రోకంట్రోలర్ చిప్ ద్వారా సులభంగా అర్థం చేసుకోగల మరియు అంగీకరించే బట్వాడా మోడ్‌లోకి కంపైల్ చేస్తుంది.

అంతిమంగా దీనికి WinAVR మద్దతు ఇస్తుంది మరియు సంబంధిత MCU చిప్‌లోకి బదిలీ చేయబడుతుంది.

ప్రోగ్రామ్‌లను ట్రబుల్షూట్ చేయడం మరియు సింటాక్స్ గురించి హెచ్చరించడం మరియు తప్పులు మరియు లోపాలను కంపైల్ చేయడం వంటి అనేక ఇతర కార్యకలాపాలను అమలు చేయడానికి కూడా WinAVR అమర్చవచ్చు. నేను వీటిని మా తరువాతి ట్యుటోరియల్స్ గురించి చర్చిస్తాము.

మీరు WinAVR యొక్క ఇన్స్టాలేషన్ కోర్సు చాలా వేగంగా మరియు చురుగ్గా ఉంటుంది. ఈ క్రింది పాయింట్లతో వివరాలతో మునిగిపోదాం:

మీరు WinAVR సోర్స్ ఫోర్జ్ ఫైల్స్ ఫోల్డర్ నుండి తాజా వెర్షన్లను డౌన్‌లోడ్ చేసుకోవాలి. మీరు దాని అధికారిక వెబ్‌సైట్ నుండి ఈ డౌన్‌లోడ్‌కు సంబంధించిన కొన్ని ఉపయోగకరమైన సమాచారాన్ని చూడవచ్చు.

మీరు భద్రతా ప్రశ్నలో ప్రాంప్ట్ చేయబడతారు, తద్వారా డౌన్‌లోడ్ జరగాలని మీరు కోరుకుంటే మీరు సమాధానం ఇవ్వగలరు, డౌన్‌లోడ్ చేయవలసిన ఫైల్ ఎక్జిక్యూటబుల్ ఫైల్ అని ఇది విచారించబడుతుంది.

ఫైల్‌ను డౌన్‌లోడ్ చేసి, దానిపై క్లిక్ చేయడం ద్వారా అమలు ప్రక్రియను ప్రారంభించండి. సంస్థాపన ప్రారంభిద్దాం.

ఈ ప్రక్రియ కొన్ని జవాబుదారీ ప్రశ్నలతో మీకు మార్గనిర్దేశం చేస్తుంది, తద్వారా మీరు మీ సౌకర్యం ప్రకారం సంస్థాపనను క్రమబద్ధీకరించగలరు. మీరు వీటిలో చాలా వాటిని డిఫాల్ట్ రూపాలకు విస్మరించాలనుకుంటున్నారు, చర్యలకు బాగా సరిపోతుందని మీరు భావించే వాటిని ఎంచుకోవడం మీ ఇష్టం.

ఇప్పటి వరకు మీరు ప్రతిదీ చాలా సాధారణమైన మరియు తేలికైనదిగా కనుగొంటారు మరియు కొన్ని ఎంపికలను నేను కనుగొంటాను. కంగారుపడవద్దు, వీటిలో కొన్ని మాత్రమే “ప్రోగ్రామర్స్ నోట్‌ప్యాడ్” అనే టెమ్‌లో ఒకదాన్ని ఉపయోగిస్తాయి.

ఈ చిహ్నంపై క్లిక్ చేసిన తర్వాత, వినియోగదారు ఇంటర్‌ఫేస్‌ను ప్రారంభిస్తారు, తద్వారా మీరు ప్రోగ్రామ్‌ల రచనను (సృష్టించడం మరియు సవరించడం వంటివి) వర్తింపజేయవచ్చు. సంకేతాలను కంపైల్ చేయడానికి మరియు వాటిని మైక్రోకంట్రోలర్‌లో పొందుపరచడానికి మీకు సహాయపడటానికి మెను ఆదేశాలతో కూడిన ప్రోగ్రామ్‌ను కూడా మీరు చూస్తారు.

పై ప్రోగ్రామర్ నోట్‌ప్యాడ్ యొక్క ప్రాథమిక పని ఏమిటంటే, మీరు MCU కి మాత్రమే అర్థమయ్యే సూచనల శ్రేణిగా వ్రాస్తున్న మానవ చదవగలిగే కోడ్‌ను మార్చడం.

తదుపరి ట్యుటోరియల్ పై ప్రోగ్రామర్ యొక్క పరీక్షను కవర్ చేస్తుంది, తద్వారా విండోస్‌తో దాని అనుకూలత గురించి మరియు మీ మైక్రోకంట్రోలర్ ఐసితో ఇది ఖచ్చితంగా “కరచాలనం చేస్తుందా” అనే దాని గురించి మేము ఖచ్చితంగా తెలుసుకోవచ్చు.

LED ని ఆన్ చేయడానికి MCU ని ఎలా ప్రోగ్రామ్ చేయాలి

ఇది ధృవీకరించబడిన తర్వాత, కోడ్ బదిలీ విధానం లోపాలను ఎదుర్కోకుండా చూసుకోవడానికి మేము ఒక చిన్న “ఏమీ చేయవద్దు” కోడ్‌ను రూపొందించడానికి వెళ్తాము.

వాస్తవానికి మేము ఇప్పుడు మా మొదటి ప్రోగ్రామ్‌ను MCU లోపల అమలు చేయడానికి సిద్ధంగా ఉన్నాము, కానీ దీనికి ముందు మా మునుపటి ట్యుటోరియల్‌ల సమయంలో మేము ఏమి చేసామో త్వరగా సంగ్రహించడం ఆసక్తికరంగా ఉంటుంది:

మా అవసరమైన స్పెసిఫికేషన్ ప్రకారం మేము AVR Atmel మైక్రోకంట్రోలర్‌ను సేకరించాము, ఇక్కడ మేము దృష్టాంతాల కోసం ATMega32 ను ఉపయోగించాము. తదుపరి, మేము మైక్రోకంట్రోలర్ బేసిక్స్ మరియు MCU చిప్‌లోకి ఒక ప్రోగ్రామ్‌ను బదిలీ చేయడానికి బాధ్యత వహించే ప్రోగ్రామర్ యూనిట్ గురించి తెలుసుకున్నాము.

ఇంకా, మేము SP ఇంటర్‌ఫేస్ కనెక్టర్‌ను నిర్మించాము, తద్వారా మీ కంప్యూటర్ ప్రోగ్రామింగ్ చర్యల కోసం మైక్రోకంట్రోలర్‌తో అనుసంధానించబడుతుంది.

దీని తరువాత డ్రైవర్లు కంప్యూటర్‌లో 32-బిట్‌తో పాటు 64-కాని ఆపరేటింగ్ సిస్టమ్ కోసం సరిగ్గా ఇన్‌స్టాల్ చేయబడిందా అని మేము ధృవీకరించాము.

తరువాత, మైక్రోకంట్రోలర్‌లోకి సంకేతాలను సులభంగా వ్రాయడానికి వీలుగా విన్ ఎవిఆర్ అని పిలువబడే ప్రోగ్రామింగ్ ఎన్విరాన్‌మెంట్‌ను మేము ఇన్‌స్టాల్ చేసాము, తరువాత మీ పిసి మరియు మైక్రోకంట్రోలర్ ఇంటర్‌కనెక్టడ్‌తో ప్రోగ్రామర్‌ను ధృవీకరించడానికి అవ్రుడ్ అమలు.

చివరగా మునుపటి అధ్యాయంలో మేము LED / రెసిస్టర్ సర్క్యూట్‌ను నిర్మించి, సంబంధిత MCU అవుట్‌పుట్‌లతో అనుసంధానించాము.

ఇది చాలా పని అయినప్పటికీ, కొన్ని నిజమైన ప్రోగ్రామింగ్ విషయాలలోకి వెళ్ళే సమయం ఆసన్నమైంది!

మైక్రోకంట్రోలర్‌ను మూడు వర్గాలుగా విభజించాలనుకుంటున్నాము, ఇది మన అవగాహనను చాలా సులభతరం చేస్తుంది:

నియంత్రణ, గుర్తింపు మరియు కమ్యూనికేషన్

పై విధులను అనేక రకాలుగా ప్రోగ్రామ్ చేయవచ్చని తెలుసుకోవడం ఆసక్తికరంగా ఉంటుంది.

మా మొదటి ప్రోగ్రామ్‌లో మైక్రోకంట్రోలర్‌ను బాహ్య పరామితిని “నియంత్రించమని” ఆదేశించడానికి ప్రయత్నిస్తాము, అవును మీరు చెప్పేది నిజమే, మేము ఇటీవల నిర్మించిన LED ఇది.

ఖచ్చితంగా చెప్పాలంటే, కనెక్ట్ చేయబడిన LED ని ఆన్ చేయమని మేము MCU కి చెబుతాము, అవును ఇది చాలా ప్రాచీనమైనదిగా నాకు తెలుసు, కాని ప్రారంభ దశ ఎల్లప్పుడూ సులభం కావాలి.

ప్రస్తుత ఉద్యోగంతో ముందుకు సాగడం, MCU ని LED ని నియంత్రించడం వాస్తవానికి చాలా సులభం:

దీని కోసం మేము LED కోసం అవసరమైన 5V ను ఉత్పత్తి చేయడానికి PORT B ​​పై పిన్ # 0 ను నిర్దేశిస్తాము.

మునుపటి ట్యుటోరియల్ నుండి గుర్తుకు తెచ్చుకోండి, మేము LED యొక్క యానోడ్‌ను MCU యొక్క పైన పేర్కొన్న పిన్‌కు కనెక్ట్ చేసాము.

MCU యొక్క ఈ పిన్‌కు పరిష్కరించడానికి రెండు ముఖ్యమైన విషయాలు అవసరం: 1) అవుట్పుట్ మరియు 2) 5 వోల్ట్‌లు

MCU యొక్క అవుట్‌పుట్‌గా మారడానికి నిర్దిష్ట పిన్‌ను సూచించే మార్గాన్ని మేము నేర్చుకుంటాము.

ఇది చిప్ యొక్క అవుట్‌పుట్‌గా సెట్ చేయబడిన తర్వాత, మేము దానిని అనువర్తనానికి కావలసిన విధంగా “అధిక” (5V) లేదా “తక్కువ” (0V) గా సూచించవచ్చు.

MCU వంటి ఏదైనా లాజిక్ సర్క్యూట్ పిన్స్ ఒక అవుట్పుట్ లేదా ఇన్పుట్ను ఎండిపోయే అవకాశం ఉంది మరియు లాజిక్ హై లేదా లాజిక్ తక్కువ ఉత్పత్తి చేయడానికి కాన్ఫిగర్ చేయబడవచ్చు కాబట్టి, పిన్స్ తార్కిక అధికంగా లేదా తార్కిక తక్కువగా ఉండటానికి మాత్రమే కేటాయించాల్సిన అవసరం ఉంది , మైక్రోకంట్రోలర్‌ల కోసం లేదా ఆ విషయానికి సంబంధించి ఏదైనా డిజిటల్ ఐసి కోసం ఈ రెండు రాష్ట్రాలు మినహా ఇతర ఇంటర్మీడియట్ లేదా నిర్వచించబడని రాష్ట్రాలు లేవు. MCU యొక్క ప్రతి పిన్‌కు కూడా ఇది వర్తిస్తుంది.

ఇన్పుట్ మరియు అవుట్పుట్ పిన్ అసైన్‌మెంట్‌ల విషయానికొస్తే, బాహ్య అనలాగ్ దశల నుండి సంకేతాలను అంగీకరించడానికి ఇన్‌పుట్‌లు ఉంచబడతాయి, అయితే నిర్దేశిత తార్కిక స్థితులు లేదా పౌన .పున్యంలో వీటిని వివరించడానికి అవుట్‌పుట్‌లు బాధ్యత వహిస్తాయి.

పై పనులను చాలా విభిన్న పద్ధతులలో చేయగలిగినప్పటికీ, సరళత కొరకు వాటిలో ఒకదాన్ని చర్చిస్తాము. ఏది ఏమయినప్పటికీ, ప్రస్తుతం ప్రదర్శించబడేది సులభం మరియు ఆసక్తికరంగా అనిపించినప్పటికీ, ఇది చాలా ఆచరణీయమైనది కాదు మరియు అన్ని MCU అనువర్తనాల కోసం సిఫార్సు చేయబడిన రకం కాదు, అదే కారణంతో మీరు తరువాత మరింత ప్రాచుర్యం పొందిన ప్రోగ్రామింగ్ పద్ధతులకు పరిచయం చేయబడతారు. . ఈ ప్రోగ్రామ్‌లు ఇతర ప్రక్కనే ఉన్నవారిని ప్రభావితం చేయకుండా స్పెక్స్ ప్రకారం కావలసిన పిన్‌లను మాత్రమే కేటాయించటానికి అనుమతిస్తాయి, ఇవి కొన్ని ఇతర ఫంక్షన్లను చేయడానికి ఇప్పటికే కేటాయించబడతాయి.

అయితే ప్రస్తుతం మేము ఇతర పిన్‌ల గురించి పెద్దగా బాధపడటం లేదు మరియు కొన్ని విస్తరణలకు సమస్యలను నివారించి సంబంధిత ఆసక్తి పిన్‌లను మాత్రమే ఉపయోగిస్తాము.

పిన్‌ను అవుట్‌పుట్‌గా కేటాయించడానికి మేము డేటా డైరెక్షన్ రిజిస్టర్ (డిడిఆర్) ను ఉపయోగించాలి. ఇక్కడ రిజిస్టర్ అంటే ఏమిటో మీరు ఆలోచిస్తున్నట్లయితే, ఇది MCU లోని స్థలం, ఇది మైక్రోకంట్రోలర్‌ను నిర్దిష్ట పద్ధతిలో స్పందించడానికి వీలు కల్పిస్తుంది.

DDR ని ఉపయోగించి మనం “అవుట్పుట్” లాంటి డేటాను పంపడానికి పిన్ను సెట్ చేయవచ్చు లేదా “ఇన్పుట్” రూపంలో ఉన్న డేటాను అంగీకరించవచ్చు.

అయితే ఈ పదానికి సంబంధించి మీరు గందరగోళం చెందవచ్చు, ఇది ఏమి సూచిస్తుంది? లాజిక్ సున్నా (0 వి) లేదా లాజిక్ హై (5 వి) వద్ద నిరంతరం కేటాయించబడే పిన్‌లకు డేటా మూడవ కోణాన్ని జోడిస్తుంది, అయితే పప్పుల పౌన frequency పున్యం వంటి త్వరగా మారే సంకేతాల గురించి ఏమిటి. కొన్ని నిర్దిష్ట విరామాలు లేదా కాలాలతో డోలనం చేసే అధిక మరియు తక్కువ లాజిక్‌లతో (5V మరియు 0V) ఒక ఫ్రీక్వెన్సీ ఉంటుంది, అందువలన ఇది సమయం ఆధారితంగా మారుతుంది మరియు సమయానికి సంబంధించి సర్దుబాటు చేయబడవచ్చు, అందుకే మేము “డేటా” గా గుర్తించాము, ఇది సూచించే పరామితి మరొక ఫంక్షన్ (లాజిక్ స్టేట్స్ మరియు టైమ్) కు సంబంధించిన ఫంక్షన్.

కింది కోడ్‌ను వ్రాయడం ద్వారా పిన్ 0 ను అవుట్‌పుట్‌గా కేటాయించే ఒక పద్ధతి:

DDRB = 0b00000001

పై ప్రోగ్రామ్‌లో, DDRB PORT B ​​0 కోసం డేటా డైరెక్షన్ రిజిస్టర్‌ను సూచిస్తుంది, ఈ సంఖ్య యొక్క కింది బైనరీ వ్యక్తీకరణకు సంబంధించి కంపైలర్‌కు నిర్దేశిస్తుంది, అయితే వ్యక్తీకరణ చివరిలో “1” పిన్ 0 యొక్క స్థానాన్ని సూచిస్తుంది, అది రూపంలో ఉన్న స్థానం PORT B ​​యొక్క మొదటి పిన్ యొక్క.

మీరు గుర్తుంచుకుంటే, PORT B ​​దానితో 8 పిన్‌లను (0 నుండి పిన్ 7 వరకు) అనుబంధిస్తుందని మేము తెలుసుకున్నాము, మరియు పై కోడ్‌లో కూడా 8 అంకెలు ఉన్నాయని మీరు గమనించినట్లయితే, ప్రతి అంకె ఈ 8 పిన్‌ల పోర్ట్ బిని సూచిస్తుంది.

ఇప్పుడు తదుపరి విధానం ఈ పిన్‌కు 5 పిని కేటాయించడం (పిన్ 0). కింది బైనరీ కోడ్ ద్వారా పైన పేర్కొన్న విధంగా ఆపరేషన్ సూత్రం DDR కు సమానంగా ఉంటుంది:

PORTB = 0b00000001

చూడగలిగినట్లుగా, పై కోడ్ మరియు అంతకుముందు ఉన్న తేడా ఏమిటంటే, ఈ కోడ్‌లో మేము PORT రిజిస్టర్‌ను ఉపయోగించుకున్నాము. ఈ రిజిస్టర్ ప్రత్యేకంగా పోర్ట్ యొక్క పిన్ అసైన్‌మెంట్‌లను నిర్వహిస్తుంది, దాని కోసం టె MCU లోపల ఉంచబడుతుంది. అందువల్ల ఇది ఆ పిన్‌అవుట్‌ల కోసం నిజమైన డేటా లాజిక్‌లను (0 లేదా 1) కేటాయించటానికి అనుమతిస్తుంది.

ఇప్పుడు మేము మా ప్రోగ్రామ్ యొక్క సుమారు వివరాల గురించి చర్చించడానికి ఆసక్తి కలిగి ఉండవచ్చు. అమలును ప్రారంభించడానికి అన్ని ప్రోగ్రామ్‌లకు ఒక నిర్దిష్ట స్థలం అవసరమని మాకు తెలుసు కాబట్టి, దీన్ని ఒక నిర్దిష్ట రెసిపీకి సంబంధించిన అన్ని పదార్థాలు తెలిసిన చెఫ్‌తో పోల్చవచ్చు, కాని ఎక్కడ ప్రారంభించాలో సూచించబడదు.

ఇక్కడ “ప్రధాన” ఫంక్షన్ ప్రతి C / C ++ ప్రోగ్రామ్‌లు అమలును ప్రారంభించే ప్రదేశం. అందువల్ల ప్రధానమైనవి ఇలా సృష్టించబడతాయి:

పూర్ణాంకానికి ప్రధానమైనది (శూన్యమైనది)
{
}

అయినప్పటికీ, DDR మరియు PORT రిజిస్టర్ వివరాలను మరియు MCU చిప్ లోపల వాటి పనితీరును వివరించడానికి ప్రోగ్రామ్‌ను ప్రారంభించడానికి, అదనపు స్టేట్‌మెంట్‌ను చేర్చాల్సిన అవసరం ఉంది, ఇది AVR MCU కి సంబంధించిన మొత్తం డేటాను కలిగి ఉండవచ్చు. బహుశా మేము మా అన్ని ప్రోగ్రామ్‌లలో ఈ చేరికను జోడించాలనుకుంటున్నాము.

# చేర్చండి
పూర్ణాంకానికి ప్రధానమైనది (శూన్యమైనది)
{
}

సంకలనం ప్రారంభించిన వెంటనే, కంపైలర్ యొక్క ప్రీ-ప్రాసెసర్ విభాగం “io.h” ఫైల్‌ను గుర్తించడానికి AVR డైరెక్టరీపై దృష్టి పెడుతుంది. ఇక్కడ “.h” పొడిగింపు ఇది హెడర్ ఫైల్ అని సూచిస్తుంది మరియు ఫైల్ లోపల ఈ కోడ్ సృష్టించబడుతున్న సోర్స్ ఫైల్ యొక్క ప్రారంభ (హెడ్) లో ప్రవేశపెట్టబడుతుంది, అందుకే దీనికి “హెడర్” అని పేరు.

ఇక్కడ మనం DDR మరియు PORT స్టేట్‌మెంట్‌లను మా కోడ్‌లోకి ప్రవేశపెట్టవచ్చు, ఎందుకంటే io.h హెడర్ ఫైల్‌ను చేర్చడం వల్ల వాటికి సంబంధించిన కంపైలర్‌ను నిర్దేశిస్తారు.

# చేర్చండి

పూర్ణాంకానికి ప్రధానమైనది (శూన్యమైనది)

{

DDRB = 0b00000001 // డేటా డైరెక్షన్ రిజిస్టర్ సెట్టింగ్ పిన్ 0 అవుట్పుట్ మరియు మిగిలిన పిన్స్ ఇన్పుట్

PORTB = 0b00000001 // పిన్ 0 ను 5 వోల్ట్‌లకు సెట్ చేయండి

}

పైన పేర్కొన్నది పిన్ 0 యొక్క విన్యాసాన్ని అవుట్‌పుట్‌గా పరిష్కరిస్తుంది, దీని పరిమాణం 5 వి. అయితే ఈ పిన్ కోసం ఇంకా నిర్ణయించబడని ఒక సమస్య ఉంది, అంటే ఈ పిన్ MCU శక్తితో ఉన్నంతవరకు నిరవధికంగా స్విచ్ చేయమని సూచించబడలేదు. ఈ అనంతమైన ఫీడ్‌బ్యాక్ లూప్ MCU నుండి వచ్చిన ఈ పిన్ ఆఫ్ అవ్వకుండా చూస్తుంది, బదులుగా 5V అవుట్‌పుట్‌తో నిరవధికంగా కొనసాగుతుంది.

పిన్ కోసం లూప్ సూచనలను వర్తింపజేయడానికి అనేక విభిన్న పద్ధతులు ఉన్నప్పటికీ, మేము ఇక్కడ “అయితే” లూప్‌ను ఉపయోగించటానికి ప్రయత్నిస్తాము. పేరు సూచించినట్లుగా, “అయితే” లూప్ మైక్రోకంట్రోలర్‌కు “అయితే” శక్తి అందుబాటులో ఉందని మీరు కేటాయించిన పిన్‌అవుట్ కోసం కేటాయించిన 5 వితో సక్రియం చేయాల్సిన అవసరం ఉందని చెబుతుంది.

# చేర్చండి

పూర్ణాంకానికి ప్రధానమైనది (శూన్యమైనది)

{

DDRB = 0b00000001 // డేటా డైరెక్షన్ రిజిస్టర్ సెట్టింగ్ పిన్ 0 అవుట్పుట్ మరియు మిగిలిన పిన్స్ ఇన్పుట్

PORTB = 0b00000001 // పిన్ 0 ను 5 వోల్ట్‌లకు సెట్ చేయండి

అయితే (1)

{

// కోడ్ ఇక్కడ మరియు అంతకు మించి అమలు చేయాల్సిన అవసరం ఉంటే ... అనంతంగా ఉంటుంది

}

}

మీరు గమనించదగ్గ విషయం ఏమిటంటే, ఇక్కడ మేము “1” ను “అయితే” లూప్ కోసం వాదన రూపంలో ఉపయోగించాము, ఎందుకంటే ‘0’ మినహా మిగతావన్నీ తార్కిక “నిజం” గా పరిగణించబడతాయి.

ఇది సూచిస్తుంది, “అయితే” లూప్ పరిశీలన తార్కిక “నిజం” తప్ప మరేదైనా బాధ్యత వహించదు, అనగా నిర్దిష్ట పిన్ నిర్ధిష్ట స్థితితో నిరవధికంగా తాళాలు వేస్తుంది.

MCU దాని Vdd మరియు Vss లలో శక్తిని పొందినంతవరకు LED ని కేటాయించిన పిన్ అంతటా శాశ్వతంగా ఆన్‌లో చూడవచ్చు.

అదే, ఇప్పుడు మనం పొందాలనుకున్న ఫలితం ఉంది మరియు చివరికి చాలా కష్టపడి పనిచేస్తున్నట్లు చూడవచ్చు, అయినప్పటికీ మా కృషి యొక్క తీపి ఫలితాన్ని చూడటం చాలా సంతృప్తికరంగా ఉంది.

తదుపరి ట్యుటోరియల్లో, పైన పేర్కొన్న LED కి “సమయం” కోణాన్ని ఎలా జోడించాలో నేర్చుకుంటాము, అంటే నిర్దిష్ట నిర్ధిష్ట రేటుతో మెరిసేలా చేయడం.

వాస్తవానికి, పై అమలులో, LED వాస్తవానికి మెరిసిపోతోంది, కానీ లూప్ రేటు చాలా త్వరగా ఉంటుంది, ఇది LED ప్రకాశం మీద శాశ్వత స్విచ్ ఆన్ లాగా ఉంటుంది.

ఆలస్యం చేసిన రేటుతో LED మెరిసేలా చేయడానికి ఈ లూప్‌ను కావలసినంత ఆలస్యం తో ఎలా జోడించవచ్చో మేము చూస్తాము.

AVR మైక్రోకంట్రోలర్ ఉపయోగించి LED బ్లింక్ ఎలా తయారు చేయాలి

చివరి చర్చలో, మైక్రోకంట్రోలర్ ద్వారా LED స్విచ్ ఆన్ చేయడం ఎలాగో నేర్చుకున్నాము, అది అత్యుత్తమమైనది కాదా? అంతగా ఉండకపోవచ్చు!

ద్వి-దిశాత్మక కార్యాచరణను ఆపాదించడం ద్వారా పై LED ప్రకాశాన్ని ఎలా మసాలా చేయాలో ఇక్కడ మనం నేర్చుకుంటాము, అంటే మేము దానిని నిర్దిష్ట ఫ్రీక్వెన్సీ లేదా రేటుతో ఫ్లాష్ చేయడానికి లేదా రెప్పపాటు చేయడానికి ప్రయత్నిస్తాము. వినియోగదారు కోరుకున్న విధంగా ఈ రేటును ఎలా పెంచవచ్చు లేదా తగ్గించవచ్చో కూడా మేము చూస్తాము.

దీని గురించి పరిశీలిద్దాం:

# చేర్చండి

# చేర్చండి

పూర్ణాంకానికి ప్రధానమైనది (శూన్యమైనది)

{

DDRB | = 1<< PINB0

అయితే (1)

{

PORTB ^ = 1<< PINB0

_delay_ms (100)

}

}

పై వ్యక్తీకరణలో ఉపయోగించిన ఆ వింత చిహ్నాలతో (&, ^, | మొదలైనవి) మీకు అవాంతరాలు అనిపిస్తే (& అక్కడ లేదు కాని ఇతర సారూప్య సంకేతాలలో వాడవచ్చు), వీటి గురించి తెలుసుకోవడానికి మీకు ఆసక్తి ఉన్న సంబంధిత సమాచారం ఇక్కడ ఉన్నాయి :

ఇది పైన పేర్కొన్న కోడ్‌తో సాధారణంగా ఉపయోగించే AND, OR, NOT మరియు XOR వంటి అనేక ప్రామాణిక తార్కిక అల్గారిథమ్‌లను కలిగి ఉంటుంది.

ఈ తార్కిక కార్యాచరణ వారు కేటాయించిన సత్య పట్టికల ప్రకారం “1” మరియు “0” అనే రెండు బిట్‌లను ప్రత్యేకంగా పోల్చారు.

కింది బిట్ అమరికను విశ్లేషించడం ద్వారా మాకు ఒక ఆలోచన వస్తుంది:

01001011 &
10001101
సమానం
00001001

పై కోడ్‌లో & సి ప్రోగ్రామింగ్‌లో ఉపయోగించినట్లు సూచిస్తుంది.

అడ్డు వరుసలను నిలువుగా చదవడం, 0 మరియు 1 0, 1 మరియు 0 సమానం 0, 0 మరియు 0 సమానం 0, 1 మరియు 1 సమానం 1 అని సూచిస్తుంది. ఇది చదవడం అంత సులభం. ఇవి AND ఆపరేటర్ యొక్క సత్య పట్టిక ప్రకారం.

మేము ఈ క్రింది పట్టికను అంచనా వేస్తే, అది “|” చిహ్నాన్ని సూచిస్తుంది “OR” కార్యాచరణ, “|” మీ కంప్యూటర్ కీబోర్డ్‌లోని “బ్యాక్‌స్పేస్” యొక్క ఎడమ వైపున కనుగొనవచ్చు:

01001011 |
10001101
సమానం
11001111

OR లాజిక్ కార్యాచరణ యొక్క ఈ సత్య పట్టిక 0 లేదా 1 బిట్స్ 1, 1 లేదా 0 కూడా 1, 0 లేదా 0 కి సమానం అని సూచిస్తుంది, అయితే 1 లేదా 1 1 కి సమానం.

కింది బిట్ కలయిక X ద్వారా సూచించబడిన XOR లాజిక్ ఆపరేటర్ కోసం మరియు మేము AND, లేదా సత్య పట్టికలతో చేసిన విధంగానే అధ్యయనం చేయవచ్చు:

01001011 ^
10001101
సమానం
11000110

ఇప్పుడు మొదటి ప్రోగ్రామ్‌తో కొనసాగండి మరియు దానిలోని క్రింది పంక్తి ఏమిటో సూచిస్తుంది:

# చేర్చండి

మా మునుపటి ట్యుటోరియల్స్ ద్వారా వ్యక్తీకరణ ఎలా పనిచేస్తుందో మాకు తెలుసు, కాబట్టి మేము దానిని పునరుద్ఘాటించలేము, అయితే అవి # చేర్చబడినవి వ్యక్తీకరించిన కొత్త “చేర్చండి” అనిపిస్తుంది, వీటిని పరిశోధించాల్సిన అవసరం ఉంది.

ఈ “చేర్చండి” లో delay.h కొన్ని సులభమైన అమలు పద్ధతులతో మాకు అనుమతిస్తుంది.

పేరు సూచించినట్లుగా ఆలస్యం. నిర్దిష్ట ప్రోగ్రామ్‌లో ఆలస్యాన్ని ప్రేరేపించడానికి మాకు సహాయపడుతుంది.

మా మునుపటి పోస్ట్‌లలో ఇది ఇప్పటికే కవర్ చేసినందున తదుపరి వ్యక్తీకరణ Int మెయిన్ (శూన్యత) కొనసాగుతున్న చర్చ నుండి తొలగించబడుతుంది.

తరువాత మార్చబడిన DDRB వస్తుంది.

0 నుండి 7 వరకు ఉన్న అన్ని పిన్‌లు ఇన్‌పుట్‌లను రూపొందించడానికి మారినందున పిన్‌లను కేటాయించటానికి ఇది మంచి మార్గం కాదని ఈ క్రింది ఫారమ్ చూపిస్తుంది. మరికొన్ని కార్యాచరణ కోసం ఆ పిన్స్ అవసరమయ్యే సుదీర్ఘమైన ప్రోగ్రామ్‌ను సృష్టించాలనుకుంటే పరిస్థితి ఎలా ఉంటుందో imagine హించుకోండి? ఉదాహరణకు, ఉపకరణం యొక్క రిమోట్ స్విచ్చింగ్‌ను వర్తింపచేయడానికి పిన్ 2 అవసరం. అలాంటప్పుడు, ట్రయల్ మరియు లోపం ద్వారా ఇన్‌పుట్‌గా కేటాయించడాన్ని మేము అభినందించము. రిమోట్ ట్రాన్స్మిటర్ నుండి ఉపకరణం రిసీవర్కు తప్పు ప్రతిస్పందన అని అర్థం.

DDRB = 0b00000001

మేము కేవలం ఒక బిట్, టోపీ పిన్ 0 బిట్‌ను ప్రభావితం చేయాలనుకుంటున్నాము, “OR” కార్యాచరణను చూస్తే ఇది బైనరీ మాస్కింగ్ ద్వారా అమలు చేయబడుతుంది.

DDRB = DDRB | 0b00000001

ఇక్కడ ఇది “OR” ముసుగుతో కప్పబడి ఉంది: 0b00000001, ఇది చాలా ప్రామాణికమైన బైనరీ సంఖ్యగా కనిపిస్తున్నప్పటికీ, మునుపటి DDRB ఉదాహరణకు: 0b01001010, అప్పుడు మాస్కింగ్ ద్వారా OR ని వర్తింపజేయడం ఇవ్వవచ్చు: 0b01001010 | 0b00000001 = 0 బి 01001011.

ఫలిత వ్యత్యాసం పిన్ 0 తో మాత్రమే ఉంటుంది, దీని బిట్స్ మారిపోయాయి!

పై స్టేట్‌మెంట్‌ను C ++ ద్వారా మరింత కుదించడం ఇస్తుంది:

DDRB | = 0b00000001

అయినప్పటికీ ఇచ్చిన ప్రోగ్రామ్‌లో ఇంకా చాలా ఉన్నాయని మేము కనుగొన్నాము. ఇది చాలా సక్రమంగా మరియు స్పష్టంగా కనిపించినప్పటికీ, io.h హెడర్ ఫైల్ నుండి కొన్ని స్టేట్మెంట్ల యొక్క ప్రయోజనాన్ని మనం తీసుకోవాలి, ముఖ్యంగా ఇది మన సౌలభ్యం కోసం ప్రాథమికంగా సృష్టించబడినప్పుడు?

కాబట్టి “DDRB | = 1<< PINBO, why it’s like that?

1<< PINBO is implemented for applying the masking effect. The “1” indicates what may be introduced inside the mask, while the < < is simply the left shift functionality. It executes exactly as it’s named, and PINBO is the number of locations that the “1” would sequence across the left hand side. To be precise PINBO may be equivalent of a 0.

కాబట్టి మేము 0b00000000 తో ప్రారంభించి, 0b0000001 ను ఉత్పత్తి చేయడానికి “1” ను ఉంచండి, ఆపై దానిని ఎడమ 0 స్థానాలకు బదిలీ చేస్తాము, ఇది పైన చెప్పినట్లుగా 0b00000001 ను ఒకేలా ఇస్తుంది.

ఇప్పుడు, అది PINB4 అని అనుకుంటే, ఆ ప్రకటన 1 గా వ్యక్తీకరించబడుతుంది<< PINB4. I this case the “1” would be pushed to the left 4 locations producing: 0b00010000.

మేము సున్నా సూచికను ఉపయోగిస్తున్నామని జాగ్రత్త వహించండి, అంటే “1” తరువాత నాలుగు సున్నాలు ఉన్నాయి.

ఇప్పుడు మనం “అనంతమైన లూప్” అంతటా గమనించిన “అయితే” లూప్‌కి వెళ్తున్నాము. కానీ ఇప్పుడు మైక్రోకంట్రోలర్ కోరుకున్న కొన్ని మరణశిక్షలను అమలు చేయాలని మేము కోరుకుంటున్నాము. ఇది ఇచ్చిన లూప్ లోపల మాత్రమే సాధ్యమవుతుంది. ఇది నిర్దిష్ట క్రమం మళ్లీ మళ్లీ పునరావృతమయ్యే లూప్.

ఒకవేళ ఉరిశిక్ష లూప్‌కు ముందు ఉంచబడితే, అది ఒక్కసారి మాత్రమే అమలు చేయబడి ఉంటుంది.

అయితే ఎల్‌ఈడీ నిరవధికంగా బ్లింక్ అయ్యేలా చేయడానికి, పిన్‌బి 0 ను ప్రత్యామ్నాయంగా లూప్‌లో ఆన్ / ఆఫ్ చేయాలి. ఇక్కడ మేము ప్రవేశపెట్టే జాప్యాలను కూడా కనుగొన్నాము, అది లేకుండా LED యొక్క మెరిసేది అసాధ్యం. కానీ ఇది ఎల్‌ఈడీని కంటితో గుర్తించడం చాలా వేగంగా రేటుతో మెరిసేటట్లు చేస్తుంది, మన కళ్ళతో గుర్తించబడటానికి కొంచెం వేగాన్ని తగ్గించాలి.

బైనరీ నంబర్‌లో ఒక నిర్దిష్ట బిట్ యొక్క సెటప్ విధానాన్ని మేము తెలుసుకున్నాము, అయితే ఇది ఇంకా “1” అయితే నిర్దిష్ట బిట్ “0” ను వర్తించే పద్ధతి ఖచ్చితంగా తెలియదు.

కింది ప్రోగ్రామ్ ఇలా చేయడం చూడవచ్చు కాని అది ప్రోగ్రామ్‌లో కనిపించకపోవచ్చు అని కూడా మేము కనుగొంటాము.

ప్రారంభ రెండు స్టేట్‌మెంట్‌లు బిట్‌ను “1” (5 వి, ఎల్‌ఇడి లైట్లు) గా మారుస్తాయి, తరువాత 100 ఎంఎస్‌లకు విరామం ప్రవేశపెట్టబడుతుంది.

తరువాతి రెండు పంక్తులు PINB0 బిట్‌ను “0” (సున్నా వోల్టేజ్, LED షట్ ఆఫ్) గా మారుస్తాయి, కానీ క్షమించండి మరియు పోల్చండి బిట్ నుండి “0” ను అమలు చేయలేము, కాని మనం “~” ఉపయోగించకపోతే బైనరీ మాస్క్ కోసం ఇది అన్ని 0 లను 1 సెలోకి మార్చగలదు మరియు దీనికి విరుద్ధంగా ఉంటుంది.

ఇది PINB0 బిట్‌ను మాత్రమే ప్రభావితం చేసి, దానిని “0” కు తిప్పడానికి అనుమతిస్తుంది. మాస్కింగ్ ఎగ్జిక్యూషన్‌ను కలిగి ఉండటానికి కుండలీకరణాలు చేర్చబడ్డాయి, అంటే మొత్తం ముసుగుల కోసం NOT ఆపరేషన్ వర్తించదు మరియు ఎడమ షిఫ్ట్‌కు ముందు “1” పై కాకుండా “<<”.

PORTB | = 1<< PINB0
_delay_ms (100)
PORTB & = ~ (1<< PINB0)
_delay_ms (100)

ఆన్ ఆఫ్ ఆలస్యం లేదా సమాన వ్యవధిని సృష్టించడానికి, మేము మునుపటి నాలుగు పంక్తులను రెండుగా తగ్గించి, మా ప్రయోజనంలో XOR కార్యాచరణను వర్తింపజేయవచ్చు. ఇది XOR అమలులో 1 కి కేటాయించిన పిన్‌ను 0 గా పేర్కొనాలి మరియు దీనికి విరుద్ధంగా ఉండాలి. ఈ అమలు PINB0 ను మాత్రమే ప్రభావితం చేస్తుంది. కమాండ్ వర్తించే సమయాల్లో, ఇది బిట్‌ను ఇప్పటికే ఉన్న లాజిక్‌కు విరుద్ధంగా మారుస్తుంది.

PORTB ^ = 1<< PINB0
_delay_ms (100)

పూర్తి! సెట్ రేటు ప్రకారం మీ ఎల్‌ఈడీ ఇప్పుడు మెరిసిపోతుంది… .సామర్థమైనది, కాదా?




మునుపటి: బహుళ ఉపకరణాలు రిమోట్ కంట్రోల్ సర్క్యూట్ తర్వాత: ఎసి ఫేజ్, న్యూట్రల్, ఎర్త్ ఫాల్ట్ ఇండికేటర్ సర్క్యూట్