Povezivanje RTC-a (DS1307) s mikrokontrolerom i njegovim programiranjem

Isprobajte Naš Instrument Za Uklanjanje Problema





RTC je elektronički uređaj koji igra bitnu ulogu u dizajn ugrađenog sustava u stvarnom vremenu . Pruža precizno vrijeme i datum u raznim programima kao što su sistemski sat, sustav pohađanja učenika i alarm itd., Koji prate trenutno vrijeme i pružaju dosljedne rezultate odgovarajućeg zadatka. Ovaj članak predstavlja RTC povezivanje s 8051mikrokontrolerom i osnovnim pristupom internim registrima.

RTC povezivanje s mikrokontrolerom 8051

RTC povezivanje s mikrokontrolerom 8051



RTC programiranje i povezivanje

RTC povezivanje s mikrokontrolerom 8051 slično je svim ostalim vrstama 'Satova u stvarnom vremenu' koje su s njim povezane. Pa pogledajmo jednostavno RTC povezivanje s 8051 mikrokontroler i postupak programiranja koji u to uključuje.


Korak 1: Odaberite RTC uređaj

Razne vrste RTC čipova dostupne su u ugrađenom svijetu u stvarnom vremenu, a klasificirani su na temelju različitih kriterija kao što su vrsta paketa, napon napajanja i konfiguracija pina itd. Nekoliko vrsta RTC uređaja je



  • Dvožično serijsko sučelje (I2C sabirnica)
  • Trožično serijsko sučelje (USB BUS)
  • Četverožično serijsko sučelje (SPI BUS)

Prvo, moramo odabrati vrstu RTC uređaja prema kategoriji na temelju zahtjeva poput I2C Bus RTC ili SPI Bus RTC ili drugog, što odgovara za međusobno povezivanje s odgovarajućim mikrokontrolerom. Tada možemo odabrati značajke RTC uređaja, ovisno o zahtjevima primjene, poput trajanja baterije, prikladnog paketa i frekvencije takta. Razmotrimo dvožično povezivanje RTC s 8051 mikrokontrolerom kao što je DS1307 .

Korak 2: Interni registar i adresa RTC uređaja

RTC je sat u stvarnom vremenu koji pruža godine, mjesece, tjedne, dane, sate, minute i sekunde na temelju frekvencije kristala. RTC se sastoji od ugrađenog RAM memorija za pohranu podataka . Osigurati će se sigurnosna kopija baterije u slučaju kvara glavnog napajanja spajanjem baterije na RTC uređaj.

RTC DB1307 konfiguracija:

RTC interni blokovi i dijagram pinova

RTC interni blokovi i dijagram pinova

A0, A1, A2: su adresne igle RTC DB1307 čipa, koje se mogu koristiti za komunikaciju s glavnim uređajem. Možemo kontrolirati osam uređaja s RTC sučeljem 8051 mikrokontroler bitovima A0, A1, A2 koristeći I2C protokol.


VCC i GND: VCC i GND su pinovi za napajanje, odnosno za uzemljenje. Ovaj je uređaj radio u rasponu od 1,8 do 5,5 V.

VBT: VBT je pin za napajanje baterije. Izvor napajanja baterije mora biti između 2 V i 3,5 V.

SCL: SCL je pribadača serijskog sata i koristi se za sinkronizaciju podataka na serijskom sučelju.

SDL: To je serijski ulazni i izlazni pin. Koristi se za prijenos i primanje podataka na serijskom sučelju.

Isključite sat: To je opcijski izlazni pin s kvadratnim valom.

OSC0 i OSC1: Riječ je o klinovima kristalnog oscilatora koji se koriste za davanje satnih signala RTC uređaju. Standardna frekvencija kristalnog kvarca je 22,768KHzs.

Adresiranje uređaja:

I2C protokol sabirnice omogućuje istodobno mnoge podređene uređaje. Svaki slave uređaj mora se sastojati od vlastite adrese koja će na njemu biti predstavljena. Glavni uređaj komunicira s određenim pomoćnim uređajem adresom. Adresa RTC uređaja je '0xA2', a '1010' daje proizvođač, a A0, A1, A2 su adresa koju definira korisnik i koristi se za komunikaciju osam RTC uređaja na I2C protokol sabirnice .

Adresa uređaja

Adresa uređaja

R / W bit se koristi za izvršavanje operacija čitanja i pisanja u RTC-u. Ako je R / W = 0, izvodi se operacija pisanja, a R / W = 1 za operaciju čitanja.

Adresa rada čitanja RTC = '0xA3'

Adresa operacije upisivanja RTC = '0xA2'

Registri memorije i adresa:

RTC registri nalaze se na adresnim mjestima od 00h do 0Fh, a RAM memorijski registri nalaze se na adresnim mjestima od 08h do 3Fh, kao što je prikazano na slici. RTC registri koriste se za pružanje funkcionalnosti kalendara i vremena vožnje te za prikaz vikenda.

Registri memorije i adresa

Registri memorije i adresa

Kontrolni / statusni registri:

DB1307 sastoji se od dva dodatna registra kao što su control / status1 i control / status2 koji se koriste za upravljanje satom u stvarnom vremenu i prekida .

Registar kontrole / statusa1:

Registar kontrolnog statusa1

Registar kontrolnog statusa1

  • TEST1 = 0 normalni način rada

= 1 način rada EXT-sata

  • STOP = 0 RTC počinje

= 1 RTC zaustavljanje

  • TESTC = 0 uključeno resetiranje isključeno

= uključeno resetiranje uključeno

Registar kontrole / statusa2:

Registar kontrolnog statusa2

Registar kontrolnog statusa2

  • TI / TP = 0 INT aktivno cijelo vrijeme

= 1 INT aktivno potrebno vrijeme

  • AF = 0 Alarm se ne podudara

= 1 podudaranje alarma

  • TF = 0 Ne dolazi do prelijevanja timera

= 1 Dolazi do prelijevanja timera

  • ALE = 0 Onemogućivanje prekida alarma

= 1 Omogućeni prekidi alarma

  • TIE = 0 Onemogućavanje prekida timera onemogućeno

= 1 Omogućeni prekidači odbrojavanja

Korak 3: Povezivanje RTC-a ds1307 s 8051

RTC može biti povezan s mikrokontrolerom korištenjem različitih protokola serijske sabirnice poput I2C i SPI protokoli koji pružaju komunikacijsku vezu između njih. Slika prikazuje međusobno povezivanje sata realnog vremena s mikrokontrolerom 8051 pomoću protokola I2C sabirnice. I2C je dvosmjerni serijski protokol koji se sastoji od dvije žice kao što su SCL i SDA za prijenos podataka između uređaja povezanih na sabirnicu. 8051 mikrokontroler nema ugrađeni RTC uređaj, stoga smo se spojili izvana putem a serijska komunikacija za osiguravanje podataka koji se sastoje.

RTC povezivanje s mikrokontrolerom 8051

RTC povezivanje s mikrokontrolerom 8051

I2C uređaji imaju otvorene odvodne izlaze, stoga povlačni otpornici moraju biti povezani na I2C magistralu sa izvorom napona. Ako otpornici nisu spojeni na SCL i SDL vodove, sabirnica neće raditi.

Korak 4: RTC format uokvirivanja podataka

Budući da RTC povezivanje s mikrokontrolerom 8051 koristi I2C sabirnicu, stoga je prijenos podataka u obliku bajtova ili paketa, a svaki bajt prati potvrda.

Prijenos podatkovnog okvira:

U načinu prijenosa, master otpušta uvjet pokretanja nakon odabira pomoćnog uređaja prema bitnom adrese. Adresni bit sadrži 7-bit, koji slave uređaje označava kao ds1307 adresu. Serijski podaci i serijski sat prenose se na SCL i SDL linijama. Uvjeti START i STOP prepoznaju se kao početak i završetak serijskog prijenosa. Operacije primanja i prijenosa prate R / W bit.

Prijenos podatkovnog okvira

Prijenos podatkovnog okvira

Početak: Prvenstveno, slijed prijenosa podataka koji je pokrenuo master koji generira početni uvjet.

7-bitna adresa: Nakon toga master šalje pomoćnu adresu u dva 8-bitna formata umjesto u jednoj 16-bitnoj adresi.

Adresa za kontrolu / status registra: Adresa kontrolnog / statusnog registra dopušta kontrolne registre statusa.

Registar kontrole / statusa1: Registar kontrolnog statusa1 koji se koristi za omogućavanje RTC uređaja

Registar kontrole / statusa2: Koristi se za omogućavanje i onemogućavanje prekida.

R / W: Ako je bit za čitanje i pisanje nizak, tada se izvodi operacija zapisivanja.

ALAS: Ako se operacija upisivanja izvodi u slave uređaju, tada prijemnik šalje 1-bitni ACK mikrokontroleru.

Stop: Nakon završetka operacije upisa u podređeni uređaj, mikrokontroler šalje uvjet zaustavljanja na podređeni uređaj.

Okvir primanja podataka:

Okvir primanja podataka

Okvir primanja podataka

Početak: Prvenstveno, slijed prijenosa podataka koji je pokrenuo master koji generira početni uvjet.

7-bitna adresa: Nakon toga master šalje slave adresu u dva 8-bitna formata umjesto jedne 16-bitne adrese.

Adresa za kontrolu / status registra: Adresa kontrolnog / statusnog registra omogućuje omogućavanje kontrolnih registara statusa.

Kontrolni / statusni registar1: kontrolni registar statusa1 koji se koristi za omogućavanje RTC uređaja

Registar kontrole / statusa2: Koristi se za omogućavanje i onemogućavanje prekida.

R / W: Ako je bit za čitanje i pisanje visok, tada se izvodi operacija čitanja.

ALAS: Ako se operacija upisivanja izvodi u slave uređaju, tada prijemnik šalje 1-bitni ACK mikrokontroleru.

Stop: Nakon završetka operacije upisa u podređeni uređaj, mikrokontroler šalje uvjet zaustavljanja na podređeni uređaj.

Korak 5: RTC programiranje

Napišite operaciju od gospodara do slave:

  1. Izdajte uvjet pokretanja od glavnog do podređenog
  2. Prenesite pomoćnu adresu u načinu pisanja na SDL liniji
  3. Pošaljite adresu kontrolnog registra
  4. Pošaljite kontrolnu / status registra1value
  5. Pošaljite vrijednost kontrolnog / statusnog registra2
  6. Pošaljite datum sličnih minuta, sekundi i sati
  7. Pošaljite graničnik

#include

sbit SCL = P2 ^ 5
sbit SDA = P2 ^ 6
void start ()
void hostovi (nepotpisani char)
kašnjenje (nepotpisani znak)

void main ()
{

početak()
write (0xA2) // slave adresa //
write (0x00) // adresa kontrolnog registra //
write (0x00) // kontrolni registar 1 vrijednost //
write (0x00) // upravljanje regiter2 vlaue //
write (0x28) // sec vrijednost //
write (0x50) // vrijednost minute //
write (0x02) // vrijednost sata //
}

void start ()
{

SDA = 1 // obrada podataka //
SCL = 1 // sat je visok //
kašnjenje (100)
SDA = 0 // poslao je podatke //
kašnjenje (100)
SCL = 0 // signal sata je nizak //
}
void write (nepotpisani znak d)
{

nepotpisani char k, j = 0 × 80
za (k = 0k<8k++)
{
SDA = (d & j)
J = j >> 1
SCL = 1
kašnjenje (4)
SCL = 0
}
SDA = 1
SCL = 1
odgoda (2)
c = SDA
odgoda (2)
SCL = 0
}
odgoda praznine (int p)
{
unsignedinta, b
Za (a = 0a<255a++) //delay function//
Za (b = 0b}

Pročitajte Operaciju od roba do gospodara:

#include
sbit SCL = P2 ^ 5
sbit SDA = P2 ^ 6
void start ()
void write (usigned char)
void read ()
praznina ()
odgoda praznine (nepotpisani znak)
void main ()
{
početak()
write (0xA3) // adresa slave u načinu čitanja //
čitati()
Jao ()
sec = vrijednost
}
void start ()
{

SDA = 1 // obrada podataka //
SCL = 1 // sat je visok //
kašnjenje (100)
SDA = 0 // poslao je podatke //
kašnjenje (100)
SCL = 0 // signal sata je nizak //
}
void write (nepotpisani znak d)
{

nepotpisani char k, j = 0 × 80
za (k = 0k<8k++)
{
SDA = (d & j)
J = j >> 1
SCL = 1
kašnjenje (4)
SCL = 0
}
SDA = 1
SCL = 1
odgoda (2)
c = SDA
odgoda (2)
SCL = 0
}
odgoda praznine (int p)
{
unsignedinta, b
Za (a = 0a<255a++) //delay function//
Za (b = 0b}
Prazno čitanje ()
{
Nepotpisani char j, z = 0 × 00, q = 0 × 80
SDA = 1
za (j = 0j<8j++)
{
SCL = 1
kašnjenje (100)
zastava = SDA
ako (zastava == 1)

z = (z
praznina ()
{
SDA = 0 // SDA linija ide na nizak //
SCL = 1 // sat je visok do nizak //
kašnjenje (100)
SCL = 0
}

To su potrebni koraci za RTC povezivanje s mikrokontrolerom 8051. Kao dodatak ovim koracima, u ovom se članku govori i o okvirima podataka koji se koriste za prijenos i primanje podataka radi korisničkog razumijevanja uz odgovarajuće programiranje. Za daljnju pomoć u vezi s ovim konceptom možete ostaviti komentar u nastavku.