10 #define INLINE__ static inline
11 #define PostEffect__(X, Y) __extension__({ int32_t tmp__ = (X); (X) = (Y); tmp__; })
13 #define INLINE__ static
15 #define PostEffect__(X, Y) (tmp__ = (X), (X) = (Y), tmp__)
18 INLINE__ int32_t Min__(int32_t a, int32_t b) {
return a < b ? a : b; }
19 INLINE__ int32_t Max__(int32_t a, int32_t b) {
return a > b ? a : b; }
20 INLINE__ int32_t Rotl__(uint32_t a, uint32_t b) {
return (a<<b) | (a>>(32-b)); }
21 INLINE__ int32_t Rotr__(uint32_t a, uint32_t b) {
return (a>>b) | (a<<(32-b)); }
22 INLINE__ int32_t Shr__(uint32_t a, uint32_t b) {
return (a>>b); }
23 int32_t SPI::Start(int32_t _clockdelay, int32_t _clockstate)
25 Clockstate = _clockstate;
26 Clockdelay = (Max__((((
CLKFREQ / 100000) * _clockdelay) - 4296), 381));
30 int32_t SPI::Shiftout(int32_t Dpin, int32_t Cpin, int32_t Mode, int32_t Bits, int32_t Value)
32 DIRA = ((
DIRA & (~(1 << Dpin))) | (1 << Dpin));
33 OUTA = ((
OUTA & (~(1 << Cpin))) | ((Clockstate & 0x1) << Cpin));
34 DIRA = ((
DIRA & (~(1 << Cpin))) | (1 << Cpin));
36 Value = (Rotl__(Value, 1));
39 int32_t _limit__0001 = Bits;
40 for(_idx__0000 = 1; _idx__0000 <= _limit__0001; (_idx__0000 = (_idx__0000 + 1))) {
41 OUTA = ((
OUTA & (~(1 << Dpin))) | ((((Value = (Rotr__(Value, 1))) & 0x1) & 0x1) << Dpin));
47 Value = (Value << (32 - Bits));
50 int32_t _limit__0003 = Bits;
51 for(_idx__0002 = 1; _idx__0002 <= _limit__0003; (_idx__0002 = (_idx__0002 + 1))) {
52 OUTA = ((
OUTA & (~(1 << Dpin))) | ((((Value = (Rotl__(Value, 1))) & 0x1) & 0x1) << Dpin));
60 int32_t SPI::Shiftin(int32_t Dpin, int32_t Cpin, int32_t Mode, int32_t Bits)
64 OUTA = ((
OUTA & (~(1 << Cpin))) | ((Clockstate & 0x1) << Cpin));
65 DIRA = ((
DIRA & (~(1 << Cpin))) | (1 << Cpin));
70 int32_t _limit__0005 = Bits;
71 for(_idx__0004 = 1; _idx__0004 <= _limit__0005; (_idx__0004 = (_idx__0004 + 1))) {
72 Value = ((Value << 1) | ((
INA >> Dpin) & 0x1));
80 int32_t _limit__0007 = (Bits + 1);
81 for(_idx__0006 = 1; _idx__0006 <= _limit__0007; (_idx__0006 = (_idx__0006 + 1))) {
82 Value = ((Shr__(Value, 1)) | (((
INA >> Dpin) & 0x1) << 31));
86 Value = (Shr__(Value, (32 - Bits)));
91 int32_t _limit__0009 = Bits;
92 for(_idx__0008 = 1; _idx__0008 <= _limit__0009; (_idx__0008 = (_idx__0008 + 1))) {
94 Value = ((Value << 1) | ((
INA >> Dpin) & 0x1));
101 int32_t _limit__0011 = (Bits + 1);
102 for(_idx__0010 = 1; _idx__0010 <= _limit__0011; (_idx__0010 = (_idx__0010 + 1))) {
104 Value = ((Shr__(Value, 1)) | (((
INA >> Dpin) & 0x1) << 31));
107 Value = (Shr__(Value, (32 - Bits)));
112 int32_t SPI::Postclock(int32_t _cpin)
121 int32_t SPI::Preclock(int32_t _cpin)