Hallo,
ich würde gern zwei Software TWI/I2C Busse parallel nebeneinander auf
einem ATMega324PA laufen lassen. Da ich leider keinen Schimmer von
Assembler habe, weiss ich nicht wie ich es hinbekomme, in Fleury's Code
die Pinnummern zu ändern, z.B. indem ich z.B. in der i2c_init() die
beiden Pinnummern für SCL und SDA übergebe. Port ist immer der selbe.
Muss ich jetzt extra Assembler lernen oder kann mir dabei jemand auf die
Schnelle mit dem entscheidenden Tipp/Codebeispiel helfen? Anbei der
Fleury Code + Header.
Gruß und Danke,
Sascha
1 | ;***** Adapt these SCA and SCL port and pin definition to your target !!
|
2 |
|
3 | #define SDA 1 // SDA Port A, Pin 1
|
4 | #define SCL 0 // SCL Port A, Pin 0
|
5 | #define SDA_PORT PORTA // SDA Port A
|
6 | #define SCL_PORT PORTA // SCL Port A
|
und
1 | ;*************************************************************************
|
2 | ; Initialization of the I2C bus interface. Need to be called only once
|
3 | ;
|
4 | ; extern void i2c_init(void)
|
5 | ;*************************************************************************
|
6 | .global i2c_init
|
7 | .func i2c_init
|
8 | i2c_init:
|
9 |
|
10 | cbi SDA_DDR,SDA ;release SDA
|
11 | cbi SCL_DDR,SCL ;release SCL
|
12 | cbi SDA_OUT,SDA
|
13 | cbi SCL_OUT,SCL
|
14 | ret
|
15 | .endfunc
|