Четене на времето

Прочитането става по подобен начин на писането. Инженерите от Philips са улеснили максимално работата с часовника благодарение на автоматичната инкрементация на адресите, тази функция спестява и излишна комуникация по I$ ^{2}$ C шината.

 
Soft_I2C_Start();               // започни комуникацията
Soft_I2C_Write(0xA0);           // обърни се към PCF8583
Soft_I2C_Write(2);              // започни от адрес 2
Soft_I2C_Start();               // рестартирай комуникацията
Soft_I2C_Write(0xA1);           // адресирай PCF8583 за четене

seconds = Soft_I2C_Read(1);     // прочети секундовия байт
minutes = Soft_I2C_Read(1);     // прочети минутовия байт
hours = 0x3f&Soft_I2C_Read(1);  // прочети часовия байт
day = Soft_I2C_Read(1);         // прочети байта за година/ден
month = Soft_I2C_Read(0);       // прочети байта за месец
Soft_I2C_Stop();                // спри

seconds  =  ((seconds & 0xF0) >> 4)*10 + (seconds & 0x0F);  // преобр. секундите
minutes  =  ((minutes & 0xF0) >> 4)*10 + (minutes & 0x0F);  // преобр. месеца
hours    =  ((hours & 0xF0)  >> 4)*10  + (hours & 0x0F);    // преобр. часа
year     =   (day & 0xC0) >> 6;                             // преобр. годината
day      =  ((day & 0x30) >> 4)*10    + (day & 0x0F);       // преобр. деня
month    =  ((month & 0x10)  >> 4)*10 + (month & 0x0F);     // преобр. месеца

Предвидено е и запазване на времето в случай на отпадане на захранването. Тъй като интегралната схема консумира малък ток от порядъка на 50$ \mu$ A е предвидено резервиране с никел-метал хидридна батерия на 3,6 V. На следващата фигура е показано схемното решение на резервирането.

Figure: Принципна схема на часовника с резервиране
\includegraphics[width=320pt]{figs/Fig24.pdf.ps}

PCF8583 няма допълнителен извод за батерия, затова е направена външна елементарна схема за поддържане на часа при отпадане на захранването. Резервирането се състои от елементите R55, D1, D2 и G1. Съпротивлението R55 има предназначението да дозарежда батерията при работа на системата. Капацитета на батерията бе избран да бъде 47mAh, от където при консумация от 50$ \mu$ A на часовника батерията би могла да поддържа приблизително до 940 000 часа часовника. Стойността за R55 се изчислява така, че да дозарежда батерията с ток 1/50та от капацитета й.

$ R55[k\Omega]=\dfrac{5}{\dfrac{1}{50}.47mAh}=5.32k\Omega$

Избира се стандартна стойност 6.8$ k\Omega$ .



Deyan Levski 2013-06-22