FreeCalypso > hg > freecalypso-sw
annotate gsm-fw/bsp/abb+spi/abb_inline.h @ 148:63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
| author | Michael Spacefalcon <msokolov@ivan.Harhan.ORG> | 
|---|---|
| date | Sat, 16 Nov 2013 19:03:37 +0000 | 
| parents | |
| children | 971e84124a6f | 
| rev | line source | 
|---|---|
| 
148
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
1 /**********************************************************************************/ | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
2 /* TEXAS INSTRUMENTS INCORPORATED PROPRIETARY INFORMATION */ | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
3 /* */ | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
4 /* Property of Texas Instruments -- For Unrestricted Internal Use Only */ | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
5 /* Unauthorized reproduction and/or distribution is strictly prohibited. This */ | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
6 /* product is protected under copyright law and trade secret law as an */ | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
7 /* unpublished work. Created 1987, (C) Copyright 1997 Texas Instruments. All */ | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
8 /* rights reserved. */ | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
9 /* */ | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
10 /* */ | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
11 /* Filename : abb_inline.h */ | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
12 /* */ | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
13 /* Description : inline functions to drive the ABB device. */ | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
14 /* The Serial Port Interface is used to connect the TI */ | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
15 /* Analog BaseBand (ABB). */ | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
16 /* It is assumed that the ABB is connected as the SPI */ | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
17 /* device 0. */ | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
18 /* */ | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
19 /* Author : Pascal PUEL */ | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
20 /* */ | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
21 /* Version number : 1.0 */ | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
22 /* */ | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
23 /* Date and time : Dec 2002 */ | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
24 /* */ | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
25 /* Previous delta : Creation */ | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
26 /* */ | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
27 /**********************************************************************************/ | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
28 | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
29 #ifndef __ABB_INLINE_H__ | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
30 #define __ABB_INLINE_H__ | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
31 | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
32 #include "l1sw.cfg" | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
33 | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
34 #if (OP_L1_STANDALONE == 0) | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
35 #include "main/sys_types.h" | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
36 #else | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
37 #include "sys_types.h" | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
38 #endif | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
39 | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
40 #include "spi/spi_drv.h" | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
41 | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
42 // MACROS | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
43 #define ABB_WRITE_REG(reg, data) { \ | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
44 SPI_WRITE_TX_MSB((data << 6) | reg) \ | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
45 SPI_START_WRITE } | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
46 | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
47 #define ABB_READ_REG(reg) { \ | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
48 SPI_WRITE_TX_MSB(reg | 1) \ | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
49 SPI_START_READ } | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
50 | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
51 | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
52 #define ABB_SET_PAGE(page) ABB_WRITE_REG(PAGEREG, page) | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
53 | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
54 #define SEVEN_CYCLES_13M_NS 539 | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
55 | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
56 // INLINE FUNCTIONS | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
57 /*-----------------------------------------------------------------------*/ | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
58 /* ABB_SetPage() */ | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
59 /* */ | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
60 /* This function sets the right page in the ABB register PAGEREG. */ | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
61 /* */ | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
62 /*-----------------------------------------------------------------------*/ | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
63 static inline void ABB_SetPage(SYS_UWORD16 page) | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
64 { | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
65 volatile SYS_UWORD16 status; | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
66 | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
67 ABB_SET_PAGE(page); | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
68 while(((status = * (volatile SYS_UWORD16 *) SPI_REG_STATUS) & WE_ST) == 0); | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
69 | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
70 // if IBIC is already processing another request (from the BSP) | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
71 // the USP request is delayed by 3 clock cycles | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
72 // which gives a total of 7 clock cycles ( = 539 ns at 13 MHz) in the worst case | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
73 wait_ARM_cycles(convert_nanosec_to_cycles(SEVEN_CYCLES_13M_NS)); | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
74 } | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
75 | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
76 | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
77 /*-----------------------------------------------------------------------*/ | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
78 /* ABB_WriteRegister() */ | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
79 /* */ | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
80 /* This function writes "data" in the ABB register "abb_reg". */ | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
81 /* */ | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
82 /*-----------------------------------------------------------------------*/ | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
83 static inline void ABB_WriteRegister(SYS_UWORD16 abb_reg, SYS_UWORD16 data) | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
84 { | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
85 volatile SYS_UWORD16 status; | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
86 | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
87 ABB_WRITE_REG(abb_reg, data); | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
88 while(((status = * (volatile SYS_UWORD16 *) SPI_REG_STATUS) & WE_ST) == 0); | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
89 | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
90 // if IBIC is already processing another request (from the BSP) | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
91 // the USP request is delayed by 3 clock cycles | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
92 // which gives a total of 7 clock cycles ( = 539 ns at 13 MHz) in the worst case | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
93 wait_ARM_cycles(convert_nanosec_to_cycles(SEVEN_CYCLES_13M_NS)); | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
94 | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
95 } | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
96 | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
97 | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
98 /*-----------------------------------------------------------------------*/ | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
99 /* ABB_ReadRegister() */ | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
100 /* */ | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
101 /* This function reads the ABB register "abb_reg" and returns */ | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
102 /* the real register value. */ | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
103 /* */ | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
104 /*-----------------------------------------------------------------------*/ | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
105 static inline SYS_UWORD16 ABB_ReadRegister(SYS_UWORD16 abb_reg) | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
106 { | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
107 volatile SYS_UWORD16 status; | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
108 | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
109 // First part of read access to the ABB register | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
110 ABB_READ_REG(abb_reg); | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
111 while(((status = * (volatile SYS_UWORD16 *) SPI_REG_STATUS) & RE_ST) == 0); | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
112 | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
113 // if IBIC is already processing another request (from the BSP) | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
114 // the USP request is delayed by 3 clock cycles | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
115 // which gives a total of 7 clock cycles ( = 539 ns at 13 MHz) in the worst case | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
116 wait_ARM_cycles(convert_nanosec_to_cycles(SEVEN_CYCLES_13M_NS)); | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
117 | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
118 // Second part of read access to the ABB register | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
119 ABB_READ_REG(abb_reg); | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
120 while(((status = * (volatile SYS_UWORD16 *) SPI_REG_STATUS) & RE_ST) == 0); | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
121 | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
122 // if IBIC is already processing another request (from the BSP) | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
123 // the USP request is delayed by 3 clock cycles | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
124 // which gives a total of 7 clock cycles ( = 539 ns at 13 MHz) in the worst case | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
125 wait_ARM_cycles(convert_nanosec_to_cycles(SEVEN_CYCLES_13M_NS)); | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
126 | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
127 return ((SPI_ReadRX_LSB() >> 6) & 0x3ff); | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
128 } | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
129 | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
130 | 
| 
 
63750f70796d
gsm-fw/bsp/abb+spi: initial import from the Leonardo TCS211 version
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
131 #endif // __ABB_INLINE_H__ | 
