Rev 1275 Rev 1283
Line 46... Line 46...
46 // Condition. After this period, the first clock is generated. 46 // Condition. After this period, the first clock is generated.
47 //(Thd:sta=4.0us min) 47 //(Thd:sta=4.0us min)
48 mSCL_LOW(); // Clear SCL line 48 mSCL_LOW(); // Clear SCL line
49 // enable_interrupts(GLOBAL); 49 // enable_interrupts(GLOBAL);
50 delay_us( TBUF ); // Wait a few microseconds 50 delay_us( TBUF ); // Wait a few microseconds
51 -  
52 toggle_dome(); -  
53 } 51 }
54 //********************************************************************************************* 52 //*********************************************************************************************
55 // STOP CONDITION ON SMBus 53 // STOP CONDITION ON SMBus
56 //********************************************************************************************* 54 //*********************************************************************************************
57 //Name: STOPbit 55 //Name: STOPbit
Line 71... Line 69...
71 delay_us( TBUF ); // Wait a few microseconds 69 delay_us( TBUF ); // Wait a few microseconds
72 mSCL_HIGH(); // Set SCL line 70 mSCL_HIGH(); // Set SCL line
73 delay_us( TBUF ); // Stop condition setup time(Tsu:sto=4.0us min) 71 delay_us( TBUF ); // Stop condition setup time(Tsu:sto=4.0us min)
74 mSDA_HIGH(); // Set SDA line 72 mSDA_HIGH(); // Set SDA line
75 // enable_interrupts(GLOBAL); 73 // enable_interrupts(GLOBAL);
76   -  
77 toggle_dome(); -  
78 } 74 }
79   75  
80   76  
81 void SMB_send_bit(unsigned char bit_out) 77 void SMB_send_bit(unsigned char bit_out)
82 { 78 {
Line 85... Line 81...
85 else {mSDA_HIGH();} 81 else {mSDA_HIGH();}
86 delay_us(3); 82 delay_us(3);
87 mSCL_HIGH(); // Set SCL line 83 mSCL_HIGH(); // Set SCL line
88 delay_us( HIGHLEV ); // High Level of Clock Pulse 84 delay_us( HIGHLEV ); // High Level of Clock Pulse
89 mSCL_LOW(); // Clear SCL line 85 mSCL_LOW(); // Clear SCL line
-   86  
-   87 toggle_dome();
-   88  
90 delay_us( LOWLEV ); // Low Level of Clock Pulse 89 delay_us( LOWLEV ); // Low Level of Clock Pulse
91 // mSDA_HIGH(); // Master release SDA line , 90 // mSDA_HIGH(); // Master release SDA line ,
92 // enable_interrupts(GLOBAL); 91 // enable_interrupts(GLOBAL);
93   92  
94 toggle_dome(); 93 toggle_dome();
95 return; 94 return;
96 } 95 }
97   96  
98 unsigned char SMB_Receive_bit(void) 97 unsigned char SMB_Receive_bit(void)
99 { 98 {
Line 104... Line 103...
104 mSCL_HIGH(); // Set SCL line 103 mSCL_HIGH(); // Set SCL line
105 delay_us( HIGHLEV ); // High Level of Clock Pulse 104 delay_us( HIGHLEV ); // High Level of Clock Pulse
106 if(input(SDA)) Ack_bit=1; // \ Read acknowledgment bit, save it in Ack_bit 105 if(input(SDA)) Ack_bit=1; // \ Read acknowledgment bit, save it in Ack_bit
107 else Ack_bit=0; // / 106 else Ack_bit=0; // /
108 mSCL_LOW(); // Clear SCL line 107 mSCL_LOW(); // Clear SCL line
-   108  
-   109 toggle_dome();
-   110  
109 delay_us( LOWLEV ); // Low Level of Clock Pulse 111 delay_us( LOWLEV ); // Low Level of Clock Pulse
110 // enable_interrupts(GLOBAL); 112 // enable_interrupts(GLOBAL);
111   113  
112 toggle_dome(); 114 toggle_dome();
113 return Ack_bit; 115 return Ack_bit;
114 } 116 }
115   117  
116   118  
117 //********************************************************************************************* 119 //*********************************************************************************************
Line 210... Line 212...
210 else 212 else
211 { 213 {
212 j=0x00; 214 j=0x00;
213 i--; 215 i--;
214 } 216 }
-   217 toggle_dome();
215 } 218 }
216   219  
217 shift=BitPosition-8; /*Get shift value for crc value*/ 220 shift=BitPosition-8; /*Get shift value for crc value*/
218   221  
219   222  
Line 232... Line 235...
232 } 235 }
233 crc[i]<<=1; 236 crc[i]<<=1;
234 crc[i]+=temp; 237 crc[i]+=temp;
235 } 238 }
236 shift--; 239 shift--;
-   240 toggle_dome();
237 } 241 }
238   242  
239 //Exclusive OR between pec and crc 243 //Exclusive OR between pec and crc
240 for(i=0; i<=5; i++) 244 for(i=0; i<=5; i++)
241 { 245 {
242 pec[i] ^=crc[i]; 246 pec[i] ^=crc[i];
243 } 247 }
244 } while(BitPosition>8);/*End of do-while*/ 248 } while(BitPosition>8);
245   249  
246 return pec[0]; 250 return pec[0];
247 } 251 }