మైక్రోకంట్రోలర్ మరియు దాని ప్రోగ్రామింగ్‌తో ఇంటర్‌ఫేసింగ్ RTC (DS1307)

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





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

8051 మైక్రోకంట్రోలర్‌తో ఆర్టీసీ ఇంటర్‌ఫేసింగ్

8051 మైక్రోకంట్రోలర్‌తో ఆర్టీసీ ఇంటర్‌ఫేసింగ్



RTC ప్రోగ్రామింగ్ మరియు ఇంటర్ఫేసింగ్

8051 మైక్రోకంట్రోలర్‌తో ఆర్టీసీ ఇంటర్‌ఫేసింగ్ అన్ని ఇతర రకాల “రియల్ టైమ్ క్లాక్స్‌” లతో సమానంగా ఉంటుంది. కాబట్టి సరళమైన RTC ఇంటర్‌ఫేసింగ్‌తో చూద్దాం 8051 మైక్రోకంట్రోలర్ మరియు ప్రోగ్రామింగ్ విధానం.


దశ 1: RTC పరికరాన్ని ఎంచుకోండి

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



  • టూ-వైర్ సీరియల్ ఇంటర్ఫేస్ (I2C బస్)
  • త్రీ-వైర్ సీరియల్ ఇంటర్ఫేస్ (USB BUS)
  • ఫోర్-వైర్ సీరియల్ ఇంటర్ఫేస్ (SPI BUS)

మొదట, మేము I2C బస్ RTC లేదా SPI బస్ RTC లేదా ఇతర అవసరాల ఆధారంగా వర్గం ప్రకారం RTC పరికర రకాన్ని ఎన్నుకోవాలి, ఇది సంబంధిత మైక్రోకంట్రోలర్‌తో ఇంటర్‌ఫేసింగ్‌కు సరిపోతుంది. అప్పుడు మేము బ్యాటరీ లైఫ్, తగిన ప్యాకేజీ మరియు క్లాక్ ఫ్రీక్వెన్సీ వంటి అప్లికేషన్ యొక్క అవసరాన్ని బట్టి RTC పరికరం యొక్క లక్షణాలను ఎంచుకోవచ్చు. రెండు-వైర్ ఇంటర్‌ఫేసింగ్‌ను పరిశీలిద్దాం DS1307 వంటి 8051 మైక్రోకంట్రోలర్‌తో RTC .

దశ 2: RTC పరికరం యొక్క అంతర్గత రిజిస్టర్ మరియు చిరునామా

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

RTC DB1307 కాన్ఫిగరేషన్:

RTC ఇంటర్నల్ బ్లాక్స్ మరియు పిన్ రేఖాచిత్రం

RTC ఇంటర్నల్ బ్లాక్స్ మరియు పిన్ రేఖాచిత్రం

A0, A1, A2: RTC DB1307 చిప్ యొక్క చిరునామా పిన్‌లు, వీటిని మాస్టర్ పరికరంతో కమ్యూనికేట్ చేయడానికి ఉపయోగించవచ్చు. మేము RTC ఇంటర్‌ఫేసింగ్‌తో ఎనిమిది పరికరాలను నియంత్రించవచ్చు 8051 మైక్రోకంట్రోలర్ I2C ప్రోటోకాల్ ఉపయోగించి A0, A1, A2 బిట్స్ ద్వారా.


VCC మరియు GND: విసిసి మరియు జిఎన్‌డి వరుసగా విద్యుత్ సరఫరా మరియు గ్రౌండ్ పిన్స్. ఈ పరికరం 1.8V నుండి 5.5V పరిధితో పనిచేస్తుంది.

విబిటి: VBT అనేది బ్యాటరీ విద్యుత్ సరఫరా పిన్. బ్యాటరీ శక్తి వనరు 2V నుండి 3.5V మధ్య ఉండాలి.

ఎస్సీఎల్: SCL ఒక సీరియల్ క్లాక్ పిన్ మరియు ఇది సీరియల్ ఇంటర్ఫేస్లో డేటాను సమకాలీకరించడానికి ఉపయోగించబడుతుంది.

SDL: ఇది సీరియల్ ఇన్పుట్ మరియు అవుట్పుట్ పిన్. ఇది సీరియల్ ఇంటర్ఫేస్లో డేటాను ప్రసారం చేయడానికి మరియు స్వీకరించడానికి ఉపయోగించబడుతుంది.

పని ముగించుట: ఇది ఐచ్ఛిక స్క్వేర్ వేవ్ అవుట్పుట్ పిన్.

OSC0 మరియు OSC1: ఇవి క్రిస్టల్ ఓసిలేటర్ పిన్స్, ఇవి RTC పరికరానికి గడియార సంకేతాలను అందించడానికి ఉపయోగిస్తారు. ప్రామాణిక క్వార్ట్జ్ క్రిస్టల్ ఫ్రీక్వెన్సీ 22.768KHz లు.

పరికర చిరునామా:

I2C బస్ ప్రోటోకాల్ ఒకేసారి అనేక బానిస పరికరాలను అనుమతిస్తుంది. ప్రతి బానిస పరికరం దానిపై ప్రాతినిధ్యం వహించడానికి సొంత చిరునామాను కలిగి ఉండాలి. మాస్టర్ పరికరం చిరునామా ద్వారా నిర్దిష్ట బానిస పరికరంతో కమ్యూనికేట్ చేస్తుంది. RTC పరికర చిరునామా “0xA2”, దీనిలో “1010” తయారీదారుచే ఇవ్వబడుతుంది మరియు A0, A1, A2 యూజర్ నిర్వచించే చిరునామా, ఇది ఎనిమిది RTC పరికరాలను కమ్యూనికేట్ చేయడానికి ఉపయోగించబడుతుంది I2C బస్ ప్రోటోకాల్ .

పరికర చిరునామా

పరికర చిరునామా

RTC లో రీడ్ అండ్ రైట్ ఆపరేషన్స్ చేయడానికి R / W బిట్ ఉపయోగించబడుతుంది. R / W = 0 అయితే, వ్రాత ఆపరేషన్ జరుగుతుంది మరియు రీడ్ ఆపరేషన్ కోసం R / W = 1.

RTC = “0xA3” యొక్క రీడ్ ఆపరేషన్ చిరునామా

RTC = “0xA2” యొక్క వ్రాత ఆపరేషన్ చిరునామా

మెమరీ రిజిస్టర్లు మరియు చిరునామా:

RTC రిజిస్టర్లు 00h నుండి 0Fh వరకు చిరునామా స్థానాల్లో ఉన్నాయి మరియు RAM మెమరీ రిజిస్టర్లు 08h నుండి 3Fh వరకు చిరునామా స్థానాల్లో ఉన్నాయి. క్యాలెండర్ కార్యాచరణను మరియు రోజు డ్రైవ్ సమయాన్ని అందించడానికి మరియు వారాంతాలను ప్రదర్శించడానికి RTC రిజిస్టర్లను ఉపయోగిస్తారు.

మెమరీ రిజిస్టర్లు మరియు చిరునామా

మెమరీ రిజిస్టర్లు మరియు చిరునామా

నియంత్రణ / స్థితి రిజిస్టర్లు:

DB1307 కంట్రోల్ / స్టేటస్ 1 మరియు కంట్రోల్ / స్టేటస్ 2 వంటి రెండు అదనపు రిజిస్టర్లను కలిగి ఉంటుంది, ఇవి నిజ సమయ గడియారాన్ని నియంత్రించడానికి ఉపయోగిస్తారు మరియు అంతరాయాలు .

నియంత్రణ / స్థితి రిజిస్టర్ 1:

నియంత్రణ స్థితి రిజిస్టర్ 1

నియంత్రణ స్థితి రిజిస్టర్ 1

  • TEST1 = 0 సాధారణ మోడ్

= 1 EXT- గడియార పరీక్ష మోడ్

  • STOP = 0 RTC మొదలవుతుంది

= 1 ఆర్టీసీ స్టాప్

  • రీసెట్‌లో TESTC = 0 శక్తి నిలిపివేయబడింది

= రీసెట్‌లో శక్తి ప్రారంభించబడింది

నియంత్రణ / స్థితి రిజిస్టర్ 2:

నియంత్రణ స్థితి రిజిస్టర్ 2

నియంత్రణ స్థితి రిజిస్టర్ 2

  • TI / TP = 0 INT అన్ని సమయం చురుకుగా ఉంటుంది

= 1 INT క్రియాశీల అవసరమైన సమయం

  • AF = 0 అలారం సరిపోలలేదు

= 1 అలారం మ్యాచ్

  • TF = 0 టైమర్ ఓవర్ఫ్లో జరగదు

= 1 టైమర్ ఓవర్ఫ్లో సంభవిస్తుంది

  • ALE = 0 అలారం అంతరాయాలు నిలిపివేయబడతాయి

= 1 అలారం అంతరాయాలు ప్రారంభించబడ్డాయి

  • TIE = 0 టైమర్ అంతరాయాలు నిలిపివేయబడతాయి

= 1 టైమర్ అంతరాయాలు ప్రారంభిస్తాయి

దశ 3: 8051 తో RTC ds1307 ఇంటర్‌ఫేసింగ్

ఆర్టీసీ కావచ్చు మైక్రోకంట్రోలర్‌కు ఇంటర్‌ఫేస్ చేయబడింది I2C మరియు వంటి విభిన్న సీరియల్ బస్ ప్రోటోకాల్‌లను ఉపయోగించడం ద్వారా SPI ప్రోటోకాల్స్ వాటి మధ్య కమ్యూనికేషన్ లింక్‌ను అందిస్తుంది. ఫిగర్ చూపిస్తుంది, I2C బస్ ప్రోటోకాల్ ఉపయోగించి 8051 మైక్రోకంట్రోలర్‌తో రియల్ టైమ్ క్లాక్ ఇంటర్‌ఫేసింగ్. I2C అనేది ద్వి-దిశాత్మక సీరియల్ ప్రోటోకాల్, ఇది బస్సుకు అనుసంధానించబడిన పరికరాల మధ్య డేటాను బదిలీ చేయడానికి SCL మరియు SDA వంటి రెండు వైర్లను కలిగి ఉంటుంది. 8051 మైక్రోకంట్రోలర్‌కు ఇన్‌బిల్ట్ ఆర్టీసీ పరికరం లేదు కాబట్టి మేము బాహ్యంగా a ద్వారా కనెక్ట్ చేసాము సీరియల్ కమ్యూనికేషన్ కలిగి ఉన్న డేటాను నిర్ధారించడానికి.

8051 మైక్రోకంట్రోలర్‌తో ఆర్టీసీ ఇంటర్‌ఫేసింగ్

8051 మైక్రోకంట్రోలర్‌తో ఆర్టీసీ ఇంటర్‌ఫేసింగ్

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

దశ 4: ఆర్టీసీ డేటా ఫ్రేమింగ్ ఫార్మాట్

8051 మైక్రోకంట్రోలర్‌తో RTC ఇంటర్‌ఫేసింగ్ I2C బస్సును ఉపయోగిస్తుంది కాబట్టి డేటా బదిలీ బైట్లు లేదా ప్యాకెట్ల రూపంలో ఉంటుంది మరియు ప్రతి బైట్ తరువాత రసీదు ఉంటుంది.

డేటా ఫ్రేమ్‌ను ప్రసారం చేయడం:

ప్రసార మోడ్‌లో, చిరునామా బిట్ ద్వారా బానిస పరికరాన్ని ఎంచుకున్న తర్వాత మాస్టర్ ప్రారంభ పరిస్థితిని విడుదల చేస్తారు. చిరునామా బిట్ 7-బిట్‌ను కలిగి ఉంది, ఇది బానిస పరికరాలను ds1307 చిరునామాగా సూచిస్తుంది. సీరియల్ డేటా మరియు సీరియల్ క్లాక్ ఎస్సిఎల్ మరియు ఎస్డిఎల్ లైన్లలో ప్రసారం చేయబడతాయి. START మరియు STOP పరిస్థితులు సీరియల్ బదిలీ యొక్క ప్రారంభ మరియు ముగింపుగా గుర్తించబడతాయి. స్వీకరించండి మరియు ప్రసారం చేసే కార్యకలాపాలు R / W బిట్ తరువాత ఉంటాయి.

డేటా ఫ్రేమ్‌ను ప్రసారం చేస్తుంది

డేటా ఫ్రేమ్‌ను ప్రసారం చేస్తుంది

ప్రారంభం: ప్రధానంగా, ప్రారంభ స్థితిని ఉత్పత్తి చేసే మాస్టర్ ప్రారంభించిన డేటా బదిలీ క్రమం.

7-బిట్ చిరునామా: ఆ తరువాత మాస్టర్ బానిస చిరునామాను ఒకే 16-బిట్ చిరునామాకు బదులుగా రెండు 8-బిట్ ఫార్మాట్లలో పంపుతాడు.

నియంత్రణ / స్థితి రిజిస్టర్ చిరునామా: నియంత్రణ స్థితి రిజిస్టర్లను అనుమతించడం నియంత్రణ / స్థితి రిజిస్టర్ చిరునామా.

నియంత్రణ / స్థితి రిజిస్టర్ 1: నియంత్రణ స్థితి రిజిస్టర్ 1 RTC పరికరాన్ని ప్రారంభించడానికి ఉపయోగిస్తారు

నియంత్రణ / స్థితి రిజిస్టర్ 2: అంతరాయాలను ప్రారంభించడానికి మరియు నిలిపివేయడానికి ఇది ఉపయోగించబడుతుంది.

R / W: చదవడం మరియు వ్రాయడం బిట్ తక్కువగా ఉంటే, అప్పుడు వ్రాత ఆపరేషన్ జరుగుతుంది.

అయ్యో: బానిస పరికరంలో వ్రాత ఆపరేషన్ జరిగితే, రిసీవర్ 1-బిట్ ACK ని మైక్రోకంట్రోలర్‌కు పంపుతుంది.

ఆపు: బానిస పరికరంలో వ్రాత ఆపరేషన్ పూర్తయిన తరువాత, మైక్రోకంట్రోలర్ బానిస పరికరానికి స్టాప్ కండిషన్‌ను పంపుతుంది.

డేటా ఫ్రేమ్‌ను స్వీకరిస్తోంది:

డేటా ఫ్రేమ్‌ను స్వీకరిస్తోంది

డేటా ఫ్రేమ్‌ను స్వీకరిస్తోంది

ప్రారంభం: ప్రధానంగా, ప్రారంభ స్థితిని ఉత్పత్తి చేసే మాస్టర్ ప్రారంభించిన డేటా బదిలీ క్రమం.

7-బిట్ చిరునామా: ఆ తరువాత మాస్టర్ ఒకే 16-బిట్ చిరునామాకు బదులుగా రెండు 8-బిట్ ఫార్మాట్లలో బానిస చిరునామాను పంపుతాడు.

నియంత్రణ / స్థితి రిజిస్టర్ చిరునామా: నియంత్రణ స్థితి రిజిస్టర్లను అనుమతించడం నియంత్రణ / స్థితి రిజిస్టర్ చిరునామా.

నియంత్రణ / స్థితి రిజిస్టర్ 1: RTC పరికరాన్ని ప్రారంభించడానికి ఉపయోగించే నియంత్రణ స్థితి రిజిస్టర్ 1

నియంత్రణ / స్థితి రిజిస్టర్ 2: అంతరాయాలను ప్రారంభించడానికి మరియు నిలిపివేయడానికి ఇది ఉపయోగించబడుతుంది.

R / W: చదవడం మరియు వ్రాయడం బిట్ ఎక్కువగా ఉంటే, అప్పుడు రీడ్ ఆపరేషన్ జరుగుతుంది.

అయ్యో: బానిస పరికరంలో వ్రాత ఆపరేషన్ జరిగితే, రిసీవర్ 1-బిట్ ACK ని మైక్రోకంట్రోలర్‌కు పంపుతుంది.

ఆపు: బానిస పరికరంలో వ్రాత ఆపరేషన్ పూర్తయిన తరువాత, మైక్రోకంట్రోలర్ బానిస పరికరానికి స్టాప్ కండిషన్‌ను పంపుతుంది.

దశ 5: ఆర్టీసీ ప్రోగ్రామింగ్

మాస్టర్ నుండి స్లేవ్ వరకు ఆపరేషన్ రాయండి:

  1. ప్రారంభ పరిస్థితిని మాస్టర్ నుండి బానిసకు జారీ చేయండి
  2. SDL లైన్‌లో బానిస చిరునామాను రైట్ మోడ్‌లో బదిలీ చేయండి
  3. నియంత్రణ రిజిస్టర్ చిరునామాను పంపండి
  4. నియంత్రణ / స్థితి రిజిస్టర్ 1 విలువను పంపండి
  5. నియంత్రణ / స్థితి రిజిస్టర్ 2 విలువను పంపండి
  6. ఇలాంటి నిమిషాలు, సెకన్లు మరియు గంటల తేదీని పంపండి
  7. స్టాప్ బిట్ పంపండి

# చేర్చండి

sbit SCL = P2 ^ 5
sbit SDA = P2 ^ 6
శూన్య ప్రారంభం ()
శూన్య హోస్ట్‌లు (సంతకం చేయని చార్)
ఆలస్యం (సంతకం చేయని చార్)

void main ()
{

ప్రారంభం ()
వ్రాయండి (0xA2) // బానిస చిరునామా //
వ్రాయండి (0x00) // నియంత్రణ రిజిస్టర్ చిరునామా //
వ్రాయండి (0x00) // నియంత్రణ రిజిస్టర్ 1 విలువ //
వ్రాయండి (0x00) // కంట్రోల్ రెజిటర్ 2 వ్లా //
వ్రాయండి (0x28) // సెకను విలువ //
వ్రాయండి (0x50) // నిమిషం విలువ //
వ్రాయండి (0x02) // గంటల విలువ //
}

శూన్య ప్రారంభం ()
{

SDA = 1 // డేటాను ప్రాసెస్ చేయడం //
SCL = 1 // గడియారం ఎక్కువ //
ఆలస్యం (100)
SDA = 0 // డేటాను పంపారు //
ఆలస్యం (100)
SCL = 0 // క్లాక్ సిగ్నల్ తక్కువ //
}
శూన్యమైన వ్రాత (సంతకం చేయని చార్ d)
{

సంతకం చేయని చార్ k, j = 0 × 80
(k = 0k<8k++)
{
SDA = (d & j)
జ = జ >> 1
SCL = 1
ఆలస్యం (4)
SCL = 0
}
SDA = 1
SCL = 1
ఆలస్యం (2)
c = SDA
ఆలస్యం (2)
SCL = 0
}
శూన్య ఆలస్యం (int p)
{
సంతకం చేయని, బి
(A = 0a<255a++) //delay function//
(బి = 0 బి}

స్లేవ్ నుండి మాస్టర్ వరకు ఆపరేషన్ చదవండి:

# చేర్చండి
sbit SCL = P2 ^ 5
sbit SDA = P2 ^ 6
శూన్య ప్రారంభం ()
శూన్యమైన వ్రాత (ఉపయోగించిన చార్)
void read ()
void ack ()
శూన్య ఆలస్యం (సంతకం చేయని చార్)
void main ()
{
ప్రారంభం ()
వ్రాయండి (0xA3) // రీడ్ మోడ్‌లో బానిస చిరునామా //
చదవండి()
అయ్యో()
sec = విలువ
}
శూన్య ప్రారంభం ()
{

SDA = 1 // డేటాను ప్రాసెస్ చేయడం //
SCL = 1 // గడియారం ఎక్కువ //
ఆలస్యం (100)
SDA = 0 // డేటాను పంపారు //
ఆలస్యం (100)
SCL = 0 // క్లాక్ సిగ్నల్ తక్కువ //
}
శూన్యమైన వ్రాత (సంతకం చేయని చార్ d)
{

సంతకం చేయని చార్ k, j = 0 × 80
(k = 0k<8k++)
{
SDA = (d & j)
జ = జ >> 1
SCL = 1
ఆలస్యం (4)
SCL = 0
}
SDA = 1
SCL = 1
ఆలస్యం (2)
c = SDA
ఆలస్యం (2)
SCL = 0
}
శూన్య ఆలస్యం (int p)
{
సంతకం చేయని, బి
(A = 0a<255a++) //delay function//
(బి = 0 బి}
శూన్యం చదవడం ()
{
సంతకం చేయని చార్ j, z = 0 × 00, q = 0 × 80
SDA = 1
(j = 0j<8j++)
{
SCL = 1
ఆలస్యం (100)
ఫ్లాగ్ = SDA
if (ఫ్లాగ్ == 1)

z = (z
void ack ()
{
SDA = 0 // SDA లైన్ తక్కువకు వెళుతుంది //
SCL = 1 // గడియారం ఎక్కువ నుండి తక్కువ //
ఆలస్యం (100)
SCL = 0
}

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