-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathi2C.h
74 lines (47 loc) · 1.22 KB
/
i2C.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
/*
* File: I2C.h
* Author: Jamie
*
* Created on 30 November 2018, 17:24
*/
#ifndef I2C_H
#define I2C_H
#include "globals.h"
//Second start type definitions
#define RepeatedStart 0
#define StopStart 1
//Pages 204 - 236 in data sheet
/*
* Sets up I2C module as Master mode clock = FOSC/(4 * (SSPADD + 1)) - 8MHz/(4 * (SSPADD + 1))
* Uses TRIS0 and TRIS1 for data and clock
*/
void i2C_Setup(void);
/*
* Waits if the I2C module is busy
*/
void i2C_Wait(void);
/*
* I2C start for master
*/
void i2C_Start(void);
/*
* I2C start for master
*/
void i2C_RepeatedStart(void);
/*
* I2C stop for master
*/
void i2C_Stop(void);
/*
* I2C send data
* NOTE: i2C_address must be given as bits 7:1 Address, last bit as 0
* This is so the last bit can be altered to give read or wright
*/
void i2C_SendData(uint8_t i2C_address, uint8_t bytes[], uint8_t numberOfBytes);
/*
* I2C receive data
* NOTE: i2C_address must be given as bits 7:1 Address, last bit as 0
* This is so the last bit can be altered to give read or wright
*/
void i2C_ReceiveData(uint8_t i2C_address, uint8_t sendBytes[], uint8_t numberOfSendBytes, uint8_t secondStartType, uint8_t *recievedBytesPointer, uint8_t numberOfReceivedBytes);
#endif //I2C_H