]> git.sur5r.net Git - freertos/blob - Demo/Common/drivers/Atmel/at91lib/peripherals/twi/twi.h
Atmel provided hardware specifics.
[freertos] / Demo / Common / drivers / Atmel / at91lib / peripherals / twi / twi.h
1 /* ----------------------------------------------------------------------------\r
2  *         ATMEL Microcontroller Software Support \r
3  * ----------------------------------------------------------------------------\r
4  * Copyright (c) 2008, Atmel Corporation\r
5  *\r
6  * All rights reserved.\r
7  *\r
8  * Redistribution and use in source and binary forms, with or without\r
9  * modification, are permitted provided that the following conditions are met:\r
10  *\r
11  * - Redistributions of source code must retain the above copyright notice,\r
12  * this list of conditions and the disclaimer below.\r
13  *\r
14  * Atmel's name may not be used to endorse or promote products derived from\r
15  * this software without specific prior written permission.\r
16  *\r
17  * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR\r
18  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
19  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE\r
20  * DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,\r
21  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\r
22  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,\r
23  * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\r
24  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\r
25  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\r
26  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
27  * ----------------------------------------------------------------------------\r
28  */\r
29 \r
30 #ifndef TWI_H\r
31 #define TWI_H\r
32 \r
33 //------------------------------------------------------------------------------\r
34 //         Headers\r
35 //------------------------------------------------------------------------------\r
36 \r
37 #include <board.h>\r
38 \r
39 //------------------------------------------------------------------------------\r
40 //         Global definitions\r
41 //------------------------------------------------------------------------------\r
42 \r
43 // Missing AT91C_TWI_TXRDY definition.\r
44 #ifndef AT91C_TWI_TXRDY\r
45     #define AT91C_TWI_TXRDY   AT91C_TWI_TXRDY_MASTER\r
46 #endif\r
47 \r
48 // Missing AT91C_TWI_TXCOMP definition.\r
49 #ifndef AT91C_TWI_TXCOMP\r
50     #define AT91C_TWI_TXCOMP  AT91C_TWI_TXCOMP_MASTER\r
51 #endif\r
52 \r
53 //------------------------------------------------------------------------------\r
54 //         Global macros\r
55 //------------------------------------------------------------------------------\r
56 \r
57 /// Returns 1 if the TXRDY bit (ready to transmit data) is set in the given\r
58 /// status register value.\r
59 #define TWI_STATUS_TXRDY(status) ((status & AT91C_TWI_TXRDY) == AT91C_TWI_TXRDY)\r
60 \r
61 /// Returns 1 if the RXRDY bit (ready to receive data) is set in the given\r
62 /// status register value.\r
63 #define TWI_STATUS_RXRDY(status) ((status & AT91C_TWI_RXRDY) == AT91C_TWI_RXRDY)\r
64 \r
65 /// Returns 1 if the TXCOMP bit (transfer complete) is set in the given\r
66 /// status register value.\r
67 #define TWI_STATUS_TXCOMP(status) ((status & AT91C_TWI_TXCOMP) == AT91C_TWI_TXCOMP)\r
68 \r
69 //------------------------------------------------------------------------------\r
70 //         Global functions\r
71 //------------------------------------------------------------------------------\r
72 \r
73 extern void TWI_Configure(AT91S_TWI *pTwi, unsigned int twck, unsigned int mck);\r
74 \r
75 extern void TWI_Stop(AT91S_TWI *pTwi);\r
76 \r
77 extern void TWI_StartRead(\r
78     AT91S_TWI *pTwi,\r
79     unsigned char address,\r
80     unsigned int iaddress,\r
81     unsigned char isize);\r
82 \r
83 extern unsigned char TWI_ReadByte(AT91S_TWI *pTwi);\r
84 \r
85 extern void TWI_WriteByte(AT91S_TWI *pTwi, unsigned char byte);\r
86 \r
87 extern void TWI_StartWrite(\r
88     AT91S_TWI *pTwi,\r
89     unsigned char address,\r
90     unsigned int iaddress,\r
91     unsigned char isize,\r
92     unsigned char byte);\r
93 \r
94 extern unsigned char TWI_ByteReceived(AT91S_TWI *pTwi);\r
95 \r
96 extern unsigned char TWI_ByteSent(AT91S_TWI *pTwi);\r
97 \r
98 extern unsigned char TWI_TransferComplete(AT91S_TWI *pTwi);\r
99 \r
100 extern void TWI_EnableIt(AT91S_TWI *pTwi, unsigned int sources);\r
101 \r
102 extern void TWI_DisableIt(AT91S_TWI *pTwi, unsigned int sources);\r
103 \r
104 extern unsigned int TWI_GetStatus(AT91S_TWI *pTwi);\r
105 \r
106 extern unsigned int TWI_GetMaskedStatus(AT91S_TWI *pTwi);\r
107 \r
108 #endif //#ifndef TWI_H\r