سلام دوستان
بین 2 میکرو با i2c ارتباط برقرار کردم یک برنامه ی سند و رسیو ساده که از فروم برداشتم منتها مشکل اینجاست
میکرو slave اگر از خط برنامه BITWAIT PINB0,RESET استفاده نکنم همیشه دیتا های مزاحم میگیره و اگه استفاده کنم میکرو بیکار میشنه و تا این خط اجرا بشه واین یعنی میکرو به درد نخور میشه چه کار باید کرد که هم دیتای فرستنده رو فقط بگیره و هم بتونه کارای دیگه هم انجام بده:
برنامه MASTER یا فرستنده
برنامه SLAVE گیرنده:
بین 2 میکرو با i2c ارتباط برقرار کردم یک برنامه ی سند و رسیو ساده که از فروم برداشتم منتها مشکل اینجاست
میکرو slave اگر از خط برنامه BITWAIT PINB0,RESET استفاده نکنم همیشه دیتا های مزاحم میگیره و اگه استفاده کنم میکرو بیکار میشنه و تا این خط اجرا بشه واین یعنی میکرو به درد نخور میشه چه کار باید کرد که هم دیتای فرستنده رو فقط بگیره و هم بتونه کارای دیگه هم انجام بده:
برنامه MASTER یا فرستنده
$regfile = "M8DEF.DAT"
$crystal = 8000000
Config Sda = Portd.7
Config Scl = Portb.0
Dim Led As Word
I2cinit
Do
I2cstart
I2csend &HEA , Led , 2
I2cstop
Incr Led
Waitms 500
Loop
$crystal = 8000000
Config Sda = Portd.7
Config Scl = Portb.0
Dim Led As Word
I2cinit
Do
I2cstart
I2csend &HEA , Led , 2
I2cstop
Incr Led
Waitms 500
Loop
برنامه SLAVE گیرنده:
$regfile = "M8DEF.DAT"
$crystal = 8000000
Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.1 , Rs = Portc.0
Config Lcd = 16 * 2
Config Sda = Portd.7
Config Scl = Portb.0
Dim Led As Word
Cursor Off
I2cinit
Do
Bitwait Pinb.0 , Reset
I2cstart
I2creceive &HEA , Led , 2 , 2
I2cstop
Home
Lcd Led ; " "
Loop
$crystal = 8000000
Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.1 , Rs = Portc.0
Config Lcd = 16 * 2
Config Sda = Portd.7
Config Scl = Portb.0
Dim Led As Word
Cursor Off
I2cinit
Do
Bitwait Pinb.0 , Reset
I2cstart
I2creceive &HEA , Led , 2 , 2
I2cstop
Home
Lcd Led ; " "
Loop
دیدگاه