ఈ ట్యుటోరియల్లో మేము రెండు ATMEGA8 మైక్రోకంట్రోలర్ల మధ్య సీరియల్ కమ్యూనికేషన్ను ఏర్పాటు చేయబోతున్నాం . ఇక్కడ ఏర్పాటు చేసిన కమ్యూనికేషన్ UART (యూనివర్సల్ ఎసిన్క్రోనస్ రిసీవర్ ట్రాన్స్మిటర్) రకం. ఈ సీరియల్ కమ్యూనికేషన్ డేటాను రెండు మైక్రోకంట్రోలర్ల మధ్య పంచుకోవచ్చు, ఇది వివిధ ఎంబెడెడ్ సిస్టమ్స్లో అవసరం.
భాగాలు అవసరం
హార్డ్వేర్: ATMEGA8 (2 ముక్కలు), విద్యుత్ సరఫరా (5v), AVR-ISP PROGRAMMER, 100uF కెపాసిటర్ (విద్యుత్ సరఫరా అంతటా కనెక్ట్ చేయబడింది), 1KΩ రెసిస్టర్ (రెండు ముక్కలు), LED, బటన్.
సాఫ్ట్వేర్: అట్మెల్ స్టూడియో 6.1, ప్రోగిస్ప్ లేదా ఫ్లాష్ మ్యాజిక్.
సర్క్యూట్ రేఖాచిత్రం & వివరణ
AVR మైక్రోకంట్రోలర్లలోని సీరియల్ కమ్యూనికేషన్ను అర్థం చేసుకుందాం. ఇక్కడ ATMEGA సీరియల్లోని ఇతర ATMEGA కు డేటాను పంపుతుంది. ఇది ఇతర కమ్యూనికేషన్ మోడ్ను కలిగి ఉంది కాని సులభమైన కమ్యూనికేషన్ కోసం మేము RS232 ని ఎంచుకుంటున్నాము. మొదటి ATMEGA8 యొక్క RS232 పిన్ రెండవ ATMEGA8 యొక్క RXD పిన్తో అనుసంధానించబడి ఉంది.
స్థాపించబడిన డేటా కమ్యూనికేషన్ వీటిని కలిగి ఉండటానికి ప్రోగ్రామ్ చేయబడింది:
- ఎనిమిది డేటా బిట్స్
- రెండు స్టాప్ బిట్స్
- పారిటీ చెక్ బిట్ లేదు
- బౌడ్ రేటు 2400 బిపిఎస్ (సెకనుకు బిట్స్)
- అసమకాలిక కమ్యూనికేషన్ (రెండు ATMEGA8 మధ్య గడియార వాటా లేదు)
కాబట్టి మనకు రెండు ATMEGA8 కి భిన్నంగా రెండు సెట్ రిజిస్టర్లు ఉన్నాయి, ఇక్కడ ఒకటి TRANSMITTER గా మరియు ఇతర చర్యలు RECEIVER గా పనిచేస్తాయి.
ఇప్పుడు రెండు ATmega మైక్రోకంట్రోలర్ల మధ్య RS232 ఇంటర్ఫేసింగ్ కోసం, TRANSMITTER మరియు RECEIVER కోసం ఈ క్రింది లక్షణాలు సంతృప్తి చెందాలి:
1. మొదటి నియంత్రిక యొక్క TXD పిన్ (డేటా స్వీకరించే లక్షణం) తప్పనిసరిగా TRANSMITTER కోసం ప్రారంభించబడాలి మరియు రెండవ నియంత్రిక యొక్క RXD పిన్ RECEIVER కోసం ప్రారంభించబడాలి.
2. కమ్యూనికేషన్ సీరియల్ కనుక డేటా బైట్ అందుకున్నప్పుడల్లా మనం తెలుసుకోవాలి, తద్వారా పూర్తి బైట్ వచ్చేవరకు ప్రోగ్రామ్ను ఆపవచ్చు. డేటాను పూర్తి అంతరాయాన్ని స్వీకరించడం ద్వారా ఇది జరుగుతుంది.
3. డేటా 8 బిట్ మోడ్లో కంట్రోలర్కు ప్రసారం చేయబడుతుంది మరియు స్వీకరించబడుతుంది. కాబట్టి ఒకేసారి రెండు అక్షరాలు నియంత్రికకు పంపబడతాయి.
4. పారిటీ బిట్స్ లేవు, మాడ్యూల్ పంపిన డేటాలో ఒక స్టాప్ బిట్.
పై లక్షణాలు నియంత్రిక రిజిస్టర్లలో సెట్ చేయబడ్డాయి; మేము వాటిని క్లుప్తంగా చర్చించబోతున్నాం,
డార్క్ గ్రే (UDRE): (TRASMITTER SIDE) ఈ బిట్ ప్రారంభ సమయంలో సెట్ చేయబడలేదు కాని ట్రాన్స్మిటర్ ప్రసారం చేయడానికి సిద్ధంగా ఉందో లేదో తనిఖీ చేయడానికి ఇది పని సమయంలో ఉపయోగించబడుతుంది. మరిన్ని వివరాల కోసం TRASMITTER SIDE లో ప్రోగ్రామ్ చూడండి.
లైట్ గ్రే (RXC): (సైడ్ను స్వీకరించడం) ఈ బిట్ ప్రారంభ సమయంలో సెట్ చేయబడలేదు కాని రిసీవర్ డేటాను స్వీకరించడానికి సిద్ధంగా ఉందా లేదా అని తనిఖీ చేయడానికి ఇది పని సమయంలో ఉపయోగించబడుతుంది. మరిన్ని వివరాల కోసం RECEIVING SIDE లో ప్రోగ్రామ్ చూడండి.
VOILET (TXEN): (TRASMITTER SIDE) TRASMITTER SIDE లో ట్రాన్స్మిటర్ పిన్ను ప్రారంభించడానికి ఈ బిట్ సెట్ చేయబడింది.
RED (RXEN): (సైడ్ను స్వీకరించడం) ఈ బిట్ స్వీకరించే డేటా లక్షణాన్ని సూచిస్తుంది, మాడ్యూల్ నుండి డేటా నియంత్రిక ద్వారా స్వీకరించబడటానికి ఈ బిట్ తప్పనిసరిగా సెట్ చేయాలి, ఇది నియంత్రిక యొక్క RXD పిన్ను కూడా అనుమతిస్తుంది.
BROWN (RXCIE): విజయవంతమైన డేటా రిసెప్షన్ తర్వాత అంతరాయం పొందడానికి ఈ బిట్ సెట్ చేయాలి. ఈ బిట్ను ప్రారంభించడం ద్వారా 8 బిట్ డేటా అందుకున్న వెంటనే మనకు తెలుసు. మేము ఈ బిట్ను ఇక్కడ ఉపయోగించడం లేదు కాబట్టి ఇది ఒంటరిగా మిగిలిపోయింది.
పింక్ (యుఆర్సెల్): యుసిఎస్ఆర్సిలో ఇతర బిట్లను ఎనేబుల్ చేసే ముందు ఈ బిట్ సెట్ చేయాలి, యుసిఎస్ఆర్సిలో అవసరమైన ఇతర బిట్లను సెట్ చేసిన తరువాత; URSEL ని నిలిపివేయాలి లేదా సున్నాకి ఉంచాలి. మేము ఈ బిట్ను ఇక్కడ ఉపయోగించడం లేదు కాబట్టి ఇది ఒంటరిగా మిగిలిపోయింది.
YELLOW (UCSZ0, UCSZ1, UCSZ2): (సైడ్ & ట్రాస్మిటర్ సైడ్ను స్వీకరించడం) ఈ మూడు బిట్లు మనం ఒకేసారి స్వీకరించే లేదా పంపే డేటా బిట్ల సంఖ్యను ఎంచుకోవడానికి ఉపయోగిస్తారు.
రెండు ATMEGA ల మధ్య కమ్యూనికేషన్ ఎనిమిది బిట్ కమ్యూనికేషన్గా స్థాపించబడింది. మన వద్ద ఉన్న టేబుల్తో కమ్యూనికేషన్ను సరిపోల్చడం ద్వారా, UCSZ0, UCSZ1 ఒకటి మరియు UCSZ2 సున్నాకి.
మేము వీటిని స్వీకరించడం మరియు ప్రసారం చేయడం రెండింటిలోనూ సెట్ చేయాలి.
ఆరెంజ్ (UMSEL): (సైడ్ & ట్రాస్మిటర్ సైడ్ను స్వీకరించడం) సిస్టమ్ అసమకాలికంగా కమ్యూనికేట్ చేస్తుందా (రెండూ వేర్వేరు గడియారాన్ని ఉపయోగిస్తాయి) లేదా సమకాలికంగా (రెండూ ఒకే గడియారాన్ని ఉపయోగిస్తాయి) ఆధారంగా ఈ బిట్ సెట్ చేయబడింది.
కంట్రోలర్లు రెండూ ఏ గడియారాన్ని పంచుకోవు. ఇద్దరూ తమ సొంత అంతర్గత గడియారాన్ని ఉపయోగిస్తారు కాబట్టి. కాబట్టి మేము రెండు కంట్రోలర్లలో UMSEL ను 0 కి సెట్ చేయాలి.
గ్రీన్ (యుపిఎం 1, యుపిఎం 0): (సైడ్ & ట్రాస్మిటర్ సైడ్ రిసీవింగ్) ఈ రెండు బిట్స్ మేము కమ్యూనికేషన్లో ఉపయోగిస్తున్న బిట్ పారిటీ ఆధారంగా సర్దుబాటు చేయబడతాయి.
ATMEGA సమానత్వం లేకుండా డేటాను పంపడానికి ప్రోగ్రామ్ చేయబడింది, ఎందుకంటే డేటా ప్రసార పొడవు చిన్నది కాబట్టి, డేటా నష్టం లేదా లోపం లేదని మేము స్పష్టంగా ఆశించవచ్చు. కాబట్టి మేము ఇక్కడ ఏ సమానత్వాన్ని ఏర్పాటు చేయడం లేదు. కాబట్టి మేము UPM1, UPM0 రెండింటినీ సున్నాకి సెట్ చేసాము లేదా అవి మిగిలి ఉన్నాయి, ఎందుకంటే అన్ని బిట్స్ అప్రమేయంగా 0 గా ఉంటాయి..
బ్లూ (యుఎస్బిఎస్): (సైడ్ & ట్రాస్మిటర్ సైడ్ను స్వీకరించడం) కమ్యూనికేషన్ సమయంలో మనం ఉపయోగిస్తున్న స్టాప్ బిట్ల సంఖ్యను ఎంచుకోవడానికి ఈ బిట్ ఉపయోగించబడుతుంది.
ఇక్కడ ఏర్పాటు చేయబడిన కమ్యూనికేషన్ అసమకాలిక రకం, కాబట్టి మరింత ఖచ్చితమైన డేటా ట్రాన్స్మిషన్ మరియు రిసెప్షన్ పొందడానికి, మేము రెండు స్టాప్ బిట్లను ఉపయోగించాలి, అందువల్ల మేము రెండు కంట్రోలర్లలోనూ USBS ను '1' కు సెట్ చేసాము.
తగిన UBRRH ని ఎంచుకోవడం ద్వారా బాడ్ రేటు నియంత్రికలో సెట్ చేయబడుతుంది.
క్రాస్ రిఫరింగ్ బాడ్ రేట్ మరియు CPU క్రిస్టల్ ఫ్రీక్వెన్సీ ద్వారా UBRRH విలువ ఎంపిక చేయబడుతుంది.
కాబట్టి క్రాస్ రిఫరెన్స్ ద్వారా UBRR విలువ '25' గా కనిపిస్తుంది, కాబట్టి బాడ్ రేటు సెట్ చేయబడింది.
సర్క్యూట్లో చూపిన విధంగా ట్రాన్స్మిటర్ వైపు ఒక బటన్ కనెక్ట్ చేయబడింది. ఈ బటన్ నొక్కినప్పుడు ఎనిమిది బిట్ డేటా TRANSMITTER ద్వారా పంపబడుతుంది మరియు ఈ డేటాను RECEIVER అందుకుంటుంది. ఈ డేటాను విజయవంతంగా స్వీకరించినప్పుడు, దానికి కనెక్ట్ చేయబడిన LED ని ఆన్ మరియు ఆఫ్ టోగుల్ చేస్తుంది, ఇది రెండు నియంత్రికల మధ్య విజయవంతమైన డేటా బదిలీని చూపుతుంది.