Bosh sahifa > Yangiliklar > Kontent

FT_Hal_I2C.cpp

May 06, 2019

/ * Ushbu fayl i2c * /

/ * Standart o'z ichiga oladi * /

#include "FT_Platform.h"

#include "..WireWire.h"

#if 0

#inch "FT_DataTypes.h"

#inch "FT_Gpu.h"

#ifdef ARDUINO_PLATFORM

#include

#include

#include

#include

#include

#endif

#endif

#inch "FT_Hal_I2C.h"


ft_int16_t hal_rtc_i2c_init ()

{

Wire.begin ();

ft_delay (100);

qaytish 0;

}


/ * api x ning addr * dan n baytlarini o'qish

ft_int16_t hal_rtc_i2c_read (ft_uint8_tAdd, ft_uint8_t * bufer, ft_uint16_t uzunligi)

{

ft_uint16_t i;

qisqa = 0;

ft_uint8_t writeResult = 0;

(uzunligi> 28)

{

hal_rtc_i2c_read (addr, bufer, 28);

bufer + = 28;

addr = = 28;

uzunlik - = 28;

}


Wire.beginTransmission (0x6f); // qurilmaga uzatish (0x23)

/ * Rtc uchun manzil baytlari 00 dan 0xff * /

Wire.write (addr); // bayt qiymatini yuboradi


/ * uzatishni tugatadi, lekin avtobusdan chiqmaydi - foydalanish rtc * dan tasodifiy ma'lumotlarni o'qilgan holda ishlatiladi *

writeResult = Wire.endTransmission (noto'g'ri); // keyingi ma'lumotni o'qish uchun avtobusni tuting

agar (0! = writeResult)

{

return -1; // xato ishi

}

Wire.requestFrom (0x6f, uzunlik); // tobe qurilmadan qulflangan uzunlik baytlari va keyinchalik uzatishni to'xtatish

(i = 0; i

{

/ * bu erda vaqtni hisobga olish kerak * /

(0 == Wire.available ()); // blokirovka qiluvchi qo'ng'iroq - kamida bitta bayta bo'lishi kerak

bufer [i] = Wire.read ();

}

qaytish 0;

}

/ * Ma'lumotlarning ma'lum joyga yozilishi uchun API * /

ft_int16_t hal_rtc_i2c_write (ft_uint8_tAdd, ft_uint8_t * bufer, ft_uint16_t uzunligi)

{

ft_uint16_t i;

byte writeResult = 0;

agar (0 == uzunligi)

{

qaytish -1;

}

/ * pastki bitni o'qish uchun 1-ga sozlang va yozish uchun 0 * /

Wire.beginTransmission (0x6f);


/ * Rtc uchun manzil baytlari 00 dan 0xff * /

Wire.write (addr); // bayt qiymatini yuboradi

/ * har bir bayt uchun * /

(i = 0; i

{

Wire.write (* buffer ++); // ma'lumotlarni qulga jo'natish

}


/ * tugatish biti bilan uzatishni tugatish * /

writeResult = Wire.endTransmission (); // to'xtatish bitini belgilash orqali uzatishni tugatish

agar (0! = writeResult)

{

returnResult;

}

qaytish 0;

}

/ * Bundan tashqari biror narsa * /