ఇక్కడ మేము ATmega8 మైక్రోకంట్రోలర్ మరియు Arduino Uno మధ్య కమ్యూనికేషన్ను ఏర్పాటు చేయబోతున్నాము. ఇక్కడ ఏర్పాటు చేసిన కమ్యూనికేషన్ UART (యూనివర్సల్ ఎసిన్క్రోనస్ రిసీవర్ ట్రాన్స్మిటర్) రకం. ఇది సీరియల్ కమ్యూనికేషన్. ఈ సీరియల్ కమ్యూనికేషన్ డేటాను రెండు కంట్రోలర్ల మధ్య పంచుకోవచ్చు, ఇది వివిధ ఎంబెడెడ్ సిస్టమ్ అనువర్తనాల్లో అవసరం.
ఎంబెడెడ్ సిస్టమ్స్లో సిస్టమ్ కమ్యూనికేషన్స్ గురించి మనకు ప్రాథమిక జ్ఞానం ఉండాలి, కాబట్టి దీని కోసం మేము ఈ ప్రాజెక్ట్ చేస్తున్నాము. ఈ ప్రాజెక్ట్లో మేము ప్రాథమిక కమ్యూనికేషన్ వ్యవస్థ గురించి చర్చిస్తాము మరియు ట్రాన్స్మిటర్ నుండి కొంత డేటాను సీరియల్లో రిసీవర్కు పంపుతాము.
ఈ ప్రాజెక్ట్లో ATMEGA8 ఒక ట్రాన్స్మిటర్గా మరియు ARDUINO UNO ఒక రిసీవర్గా పనిచేస్తుంది. సీరియల్ కమ్యూనికేషన్లో BYTE డేటా పూర్తిగా బదిలీ అయ్యే వరకు మేము BIT BIT ద్వారా డేటాను పంపుతాము. డేటా 10 బిట్ పరిమాణంలో ఉంటుంది, కాని ప్రస్తుతానికి మేము 8 బిట్స్ వద్ద ఉంచుతాము.
భాగాలు అవసరం
హార్డ్వేర్: ATMEGA8, ARDUINO UNO, విద్యుత్ సరఫరా (5v), AVR-ISP PROGRAMMER, 100uF కెపాసిటర్ (విద్యుత్ సరఫరా అంతటా కనెక్ట్ చేయబడింది), 1KΩ రెసిస్టర్ (రెండు ముక్కలు), LED, బటన్.
సాఫ్ట్వేర్: అట్మెల్ స్టూడియో 6.1, ప్రోగిస్ప్ లేదా ఫ్లాష్ మ్యాజిక్, ఆర్డునో నైట్లీ.
సర్క్యూట్ రేఖాచిత్రం మరియు వివరణ
ట్రాన్స్మిటర్ మరియు రిసీవర్ కోసం సర్క్యూట్ రేఖాచిత్రం మరియు ప్రోగ్రామింగ్ గురించి చర్చించే ముందు , సీరియల్ కమ్యూనికేషన్ గురించి మనం అర్థం చేసుకోవాలి. ఇక్కడ చర్చించినట్లు ఇక్కడ ATMEGA సీరియల్లో UNO కి డేటాను పంపుతుంది.
ఇది మాస్టర్ స్లేవ్ కమ్యూనికేషన్, JTAG కమ్యూనికేషన్ వంటి ఇతర కమ్యూనికేషన్ రీతులను కలిగి ఉంది, కాని సులభమైన కమ్యూనికేషన్ కోసం మేము RS232 ను ఎంచుకుంటున్నాము. ఇక్కడ మేము ATMEGA8 యొక్క TXD (ట్రాన్స్మిటర్) పిన్ను ARDUINO UNO యొక్క RXD (రిసీవర్) పిన్తో కలుపుతాము.
స్థాపించబడిన డేటా కమ్యూనికేషన్ వీటిని కలిగి ఉండటానికి ప్రోగ్రామ్ చేయబడింది:
- ఎనిమిది డేటా బిట్స్
- రెండు స్టాప్ బిట్స్
- పారిటీ చెక్ బిట్ లేదు
- బాడ్ రేటు 9600 బిపిఎస్ (సెకనుకు బిట్స్)
- అసమకాలిక కమ్యూనికేషన్ (ATMEGA8 మరియు UNO ల మధ్య గడియార వాటా లేదు (రెండూ వేర్వేరు గడియార యూనిట్లను కలిగి ఉన్నాయి)
Arduino Uno మరియు ATMEGA8 ల మధ్య UART ను స్థాపించడానికి మేము సెట్టింగ్ను ఖచ్చితంగా ప్రోగ్రామ్ చేయాలి. దీని కోసం మనం పైన పేర్కొన్న పారామితులను రెండు చివర్లలో ఒకే విధంగా ఉంచాలి. ఇందులో ఒకటి ట్రాన్స్మిటర్గా మరియు ఇతర చర్యలు రిసీవర్గా పనిచేస్తాయి. మేము ప్రతి వైపు సెట్టింగులను క్రింద చర్చిస్తాము.
ఇప్పుడు RS232 ఇంటర్ఫేస్ కోసం, TRANSMITTER వైపు (ATMEGA8) కింది లక్షణాలు సంతృప్తి చెందాలి:
1. మొదటి నియంత్రిక యొక్క TXD పిన్ (డేటా స్వీకరించే లక్షణం) తప్పనిసరిగా TRANSMITTER కోసం ప్రారంభించబడాలి.
2. కమ్యూనికేషన్ సీరియల్ కాబట్టి డేటా బై అందుకున్నప్పుడల్లా మనం తెలుసుకోవాలి, తద్వారా పూర్తి బైట్ వచ్చేవరకు ప్రోగ్రామ్ను ఆపవచ్చు. డేటాను పూర్తి అంతరాయాన్ని స్వీకరించడం ద్వారా ఇది జరుగుతుంది.
3. డేటా 8 బిట్ మోడ్లో కంట్రోలర్కు ప్రసారం చేయబడుతుంది మరియు స్వీకరించబడుతుంది. కాబట్టి ఒకేసారి రెండు అక్షరాలు నియంత్రికకు పంపబడతాయి.
4. పారిటీ బిట్స్ లేవు, మాడ్యూల్ పంపిన డేటాలో ఒక స్టాప్ బిట్.
పై లక్షణాలు నియంత్రిక రిజిస్టర్లలో సెట్ చేయబడ్డాయి; మేము వాటిని క్లుప్తంగా చర్చించబోతున్నాం:
డార్క్ గ్రే (UDRE): స్టార్టప్ సమయంలో ఈ బిట్ సెట్ చేయబడలేదు కాని ట్రాన్స్మిటర్ ప్రసారం చేయడానికి సిద్ధంగా ఉందా లేదా అని తనిఖీ చేయడానికి ఇది పని సమయంలో ఉపయోగించబడుతుంది. మరిన్ని వివరాల కోసం TRASMITTER SIDE లో ప్రోగ్రామ్ చూడండి.
VOILET (TXEN): TRASMITTER SIDE లో ట్రాన్స్మిటర్ పిన్ను ప్రారంభించడానికి ఈ బిట్ సెట్ చేయబడింది.
YELLOW (UCSZ0, UCSZ1 మరియు UCSZ2): ఈ మూడు బిట్లు మనం ఒకేసారి అందుకుంటున్న లేదా పంపే డేటా బిట్ల సంఖ్యను ఎంచుకోవడానికి ఉపయోగిస్తారు.
రెండు SIDES మధ్య కమ్యూనికేషన్ ఎనిమిది బిట్ కమ్యూనికేషన్గా స్థాపించబడింది. మన వద్ద ఉన్న టేబుల్తో కమ్యూనికేషన్ను సరిపోల్చడం ద్వారా, UCSZ0, UCSZ1 ఒకటి మరియు UCSZ2 సున్నాకి.
ఆరెంజ్ (UMSEL): సిస్టమ్ అసమకాలికంగా కమ్యూనికేట్ చేస్తుందా (రెండూ వేర్వేరు గడియారాన్ని ఉపయోగిస్తాయి) లేదా సమకాలికంగా (రెండూ ఒకే గడియారాన్ని ఉపయోగిస్తాయి) ఆధారంగా ఈ బిట్ సెట్ చేయబడింది.
SYTEMS రెండూ ఏ గడియారాన్ని పంచుకోవు. ఇద్దరూ తమ సొంత అంతర్గత గడియారాన్ని ఉపయోగిస్తారు కాబట్టి. కాబట్టి మేము రెండు కంట్రోలర్లలో UMSEL ను 0 కి సెట్ చేయాలి.
గ్రీన్ (యుపిఎం 1, యుపిఎం 0): ఈ రెండు బిట్స్ మేము కమ్యూనికేషన్లో ఉపయోగిస్తున్న బిట్ పారిటీ ఆధారంగా సర్దుబాటు చేయబడతాయి.
డేటా ATMEGA సమానత్వం లేకుండా డేటాను పంపడానికి ప్రోగ్రామ్ చేయబడింది, ఎందుకంటే డేటా ప్రసార పొడవు చిన్నది కాబట్టి, డేటా నష్టం లేదా లోపం లేదని మేము స్పష్టంగా ఆశించవచ్చు. కాబట్టి మేము ఇక్కడ ఏ సమానత్వాన్ని ఏర్పాటు చేయడం లేదు. కాబట్టి మేము UPM1, UPM0 రెండింటినీ సున్నాకి సెట్ చేసాము లేదా అవి మిగిలి ఉన్నాయి, ఎందుకంటే అన్ని బిట్స్ అప్రమేయంగా 0.
బ్లూ (యుఎస్బిఎస్): కమ్యూనికేషన్ సమయంలో మనం ఉపయోగిస్తున్న స్టాప్ బిట్ల సంఖ్యను ఎంచుకోవడానికి ఈ బిట్ ఉపయోగించబడుతుంది.
ఆమె ఏర్పాటు చేసిన కమ్యూనికేషన్ అసమకాలిక రకం, కాబట్టి మరింత ఖచ్చితమైన డేటా ట్రాన్స్మిషన్ మరియు రిసెప్షన్ పొందడానికి, మేము రెండు స్టాప్ బిట్లను ఉపయోగించాలి, అందువల్ల మేము ట్రాన్స్మిటర్ వైపు యుఎస్బిఎస్ను '1' గా సెట్ చేసాము..
తగిన UBRRH ని ఎంచుకోవడం ద్వారా బాడ్ రేటు నియంత్రికలో సెట్ చేయబడుతుంది:
క్రాస్ రిఫరింగ్ బాడ్ రేట్ మరియు CPU క్రిస్టల్ ఫ్రీక్వెన్సీ ద్వారా UBRRH విలువ ఎంచుకోబడుతుంది:
కాబట్టి క్రాస్ రిఫరెన్స్ ద్వారా UBRR విలువ '6' గా కనిపిస్తుంది, కాబట్టి బాడ్ రేటు సెట్ చేయబడింది.
దీనితో మేము TRANSMITTER SIDE లో సెట్టింగులను ఏర్పాటు చేసాము; మేము ఇప్పుడు సైడ్ స్వీకరించడం గురించి మాట్లాడుతాము.
ఒకే ఆదేశాన్ని ఉపయోగించడం ద్వారా UNO లో ప్రారంభమయ్యే సీరియల్ కమ్యూనికేషన్ చేయవచ్చు.
|
మేము స్థాపించమని భావించిన కమ్యూనికేషన్ సెకనుకు 9600 బిట్ల BAUD రేటు ద్వారా జరుగుతుంది. కాబట్టి UNO అటువంటి బాడ్ రేటును స్థాపించడానికి మరియు సీరియల్ కమ్యూనికేషన్ ప్రారంభించడానికి మేము ”Serial.begin (9600);” ఆదేశాన్ని ఉపయోగిస్తాము. ఇక్కడ 9600 బాడ్ రేటు మరియు మార్చగలది.
డేటాను స్వీకరించడానికి ఇప్పుడు అన్నీ మిగిలి ఉన్నాయి, ఒక డేటాను UNO అందుకుంటుంది, అది తీసుకోవడానికి అందుబాటులో ఉంటుంది. ఈ డేటా “receiveddata = Serial.read ();” ఆదేశం ద్వారా తీసుకోబడుతుంది. ఈ ఆదేశం ద్వారా సీరియల్ డేటా పూర్ణాంకం అనే 'స్వీకరించిన డేటా'కు తీసుకోబడుతుంది.
సర్క్యూట్లో చూపినట్లుగా, ట్రాన్స్మిటర్ వైపు కనెక్ట్ చేయబడిన ఒక బటన్, ఎనిమిది బిట్ డేటాను నొక్కినప్పుడు TRANSMITTER (ATMEGA8) చేత పంపబడుతుంది మరియు ఈ డేటాను RECEIVER (ARDUINO UNO) అందుకుంటుంది. ఈ డేటాను విజయవంతంగా స్వీకరించిన తర్వాత, రెండు నియంత్రికల మధ్య విజయవంతమైన డేటా బదిలీని చూపించడానికి, దానికి కనెక్ట్ చేయబడిన LED ని ఆన్ మరియు ఆఫ్ టోగుల్ చేస్తుంది.
ఈ UART ద్వారా ATMEGA8 కంట్రోలర్ మరియు ARDUINO UNO మధ్య కమ్యూనికేషన్ విజయవంతంగా స్థాపించబడింది.