گھر > خبریں > مواد

FT_Hal_I2C.cpp

May 06, 2019

/ * اس فائل میں i2c * /

/ * سٹینڈرڈ میں شامل ہیں * /

# Fclude "FT_Platform.h"

#include "..WireWire.h"

#if 0

"FT_DataTypes.h" شامل کریں

"FT_Gpu.h" شامل کریں

#ifdef ARDUINO_PLATFORM

# stdio.h> شامل کریں

# Arduino.h> شامل کریں

# SPI.h> شامل کریں

# avr / pgmspace.h> شامل کریں

<وائر.h> شامل کریں

#ختم کرو اگر

#ختم کرو اگر

"FT_Hal_I2C.h" شامل کریں


ft_int16_t hal_rtc_i2c_init ()

{

وائر.بیگن ()؛

ft_delay (100)؛

واپسی 0؛

}


/ * api سے n بٹس پڑھنے کے لئے api * /

ft_int16_t hal_rtc_i2c_read (ft_uint8_t addr، ft_uint8_t * buffer، ft_uint16_t لمبائی)

{

ft_uint16_t میں؛

مختصر شمار = 0؛

ft_uint8_t لکھنا = متن = 0؛

جبکہ (لمبائی> 28)

{

hal_rtc_i2c_read (اضافی، بفر، 28)؛

بفر + = 28؛

addr + = 28؛

لمبائی - = 28؛

}


وائر.بیگن ٹرانسمیشن (0x6f)؛ // آلہ میں منتقل (0x23)

/ * ایڈریس بٹس آرٹ کے لئے 00 سے 0xff * /

وائر وائٹ (اضافی)؛ // قیمت بائٹ بھیجتا ہے


/ * ٹرانسمیشن کو ختم کرتے ہیں لیکن بس جاری نہیں کرتے - استعمال کے بے ترتیب اعداد و شمار rtc سے استعمال کیس پڑھ /

لکھیں لکھیں = Wire.endTransmission (غلط)؛ // اگلے ڈیٹا کو پڑھنے کے لئے بس منعقد

اگر (0! = لکھنا لکھیں)

{

واپسی -1؛ // غلطی کیس

}

Wire.requestFrom (0x6f، لمبائی)؛ غلام آلہ سے درخواست کی لمبائی بائٹس اور اس کے بعد ٹرانسمیشن ختم

کے لئے (i = 0؛ میں <لمبائی؛ میں="">

{

/ * ٹائم آؤٹ پر یہاں غور کرنے کی ضرورت ہے * /

جبکہ (0 == وائر. دستیاب ())؛ // بلاکس کال - کم سے کم ایک بائٹ دستیاب ہونا ضروری ہے

بفر [i] = Wire.read ()؛

}

واپسی 0؛

}

/ * API مخصوص جگہ پر ڈیٹا لکھنے کے لئے * /

ft_int16_t hal_rtc_i2c_write (ft_uint8_t addr، ft_uint8_t * بفر، ft_uint16_t لمبائی)

{

ft_uint16_t میں؛

بائٹ لکھا متن = 0؛

اگر (0 = لمبائی)

{

واپسی -1؛

}

/ * کم بٹ کو پڑھنے کے لئے 1 کو مقرر کیا جانا چاہئے اور سیٹ لکھنے کے لئے 0 * /

وائر.بیگن ٹرانسمیشن (0x6f)؛


/ * ایڈریس بٹس آرٹ کے لئے 00 سے 0xff * /

وائر وائٹ (اضافی)؛ // قیمت بائٹ بھیجتا ہے

/ * ہر بائٹ کے لئے چیک کریں *

کے لئے (i = 0؛ میں <لمبائی؛ میں="">

{

وائر.write (* بفر ++)؛ // غلام کو ڈیٹا بھیجیں

}


/ * سٹاپ بٹ کی طرف سے ٹرانسمیشن کو ختم * /

تحریر لکھیں = Wire.endTransmission ()؛ // سٹاپ بٹ قائم کرکے ٹرانسمیشن کو ختم کریں

اگر (0! = لکھنا لکھیں)

{

لکھیں واپس لکھیں؛

}

واپسی 0؛

}

/ * اس سے باہر کچھ نہیں *