Hallo zusammen, vielleicht kann mir jemand einen Tipp zu folgendem Problem geben: Die Delay Routine im i2cmaster.S von P. Fleury ist auf 4 MHz µC Takt definiert. Wie lässt sich diese auf 6 MHz bzw. auf N MHz µC Takt einstellen?
1 | ;************************************************************************* |
2 | ; delay half period |
3 | |
4 | ; For I2C in normal mode (100kHz), use T/2 > 5us |
5 | |
6 | ; For I2C in fast mode (400kHz), use T/2 > 1.3us |
7 | |
8 | ;************************************************************************* |
9 | .stabs "",100,0,0,i2c_delay_T2 |
10 | .stabs "i2cmaster.S",100,0,0,i2c_delay_T2 |
11 | .func i2c_delay_T2 ; delay 5.0 microsec with 4 Mhz crystal |
12 | |
13 | i2c_delay_T2: ; 4 cycles |
14 | |
15 | rjmp 1f ; 2 " |
16 | 1: rjmp 2f ; 2 " |
17 | 2: rjmp 3f ; 2 " |
18 | 3: rjmp 4f ; 2 " |
19 | 4: rjmp 5f ; 2 " |
20 | 5: rjmp 6f ; 2 " |
21 | 6: nop ; 1 " |
22 | ret ; 3 " |
23 | .endfunc ; total 20 cyles = 5.0 microsec with 4 Mhz crystal |
Gruß, die amme