اطلاعیه

Collapse
No announcement yet.

اتباط ٢ میکرو با i2c

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    #16
    پاسخ : اتباط ٢ میکرو با i2c

    برنامه اسلیو
    #include <mega8.h>
    #include <delay.h>

    // I2C Bus functions
    #asm
    .equ __i2c_port=0x15 ;PORTC
    .equ __sda_bit=0
    .equ __scl_bit=1
    #endasm
    #include <i2c.h>
    char myi2c_read(unsigned char bus_adrs)
    {
    char myi2c;
    i2c_start();
    i2c_write(bus_adrs);
    i2c_start();
    i2c_write(bus_adrs | 1);
    myi2c=i2c_read(0);
    i2c_stop();
    PORTB.0=0x01;
    if(myi2c==0x77)PORTB.1=0x01;
    return myi2c;
    }
    // Declare your global variables here
    char tt;
    void main(void)
    {
    // Declare your local variables here

    // Input/Output Ports initialization
    // Port B initialization
    // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
    // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
    PORTB=0x00;
    DDRB=0xFF;

    // Port C initialization
    // Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
    // State6=T State5=T State4=T State3=T State2=T State1=T State0=T

    // Port D initialization
    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
    // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
    PORTD=0x00;
    DDRD=0x00;

    // Timer/Counter 0 initialization
    // Clock source: System Clock
    // Clock value: Timer 0 Stopped
    TCCR0=0x00;
    TCNT0=0x00;

    // Timer/Counter 1 initialization
    // Clock source: System Clock
    // Clock value: Timer1 Stopped
    // Mode: Normal top=FFFFh
    // OC1A output: Discon.
    // OC1B output: Discon.
    // Noise Canceler: Off
    // Input Capture on Falling Edge
    // Timer1 Overflow Interrupt: Off
    // Input Capture Interrupt: Off
    // Compare A Match Interrupt: Off
    // Compare B Match Interrupt: Off
    TCCR1A=0x00;
    TCCR1B=0x00;
    TCNT1H=0x00;
    TCNT1L=0x00;
    ICR1H=0x00;
    ICR1L=0x00;
    OCR1AH=0x00;
    OCR1AL=0x00;
    OCR1BH=0x00;
    OCR1BL=0x00;

    // Timer/Counter 2 initialization
    // Clock source: System Clock
    // Clock value: Timer2 Stopped
    // Mode: Normal top=FFh
    // OC2 output: Disconnected
    ASSR=0x00;
    TCCR2=0x00;
    TCNT2=0x00;
    OCR2=0x00;

    // External Interrupt(s) initialization
    // INT0: Off
    // INT1: Off
    MCUCR=0x00;

    // Timer(s)/Counter(s) Interrupt(s) initialization
    TIMSK=0x00;

    // Analog Comparator initialization
    // Analog Comparator: Off
    // Analog Comparator Input Capture by Timer/Counter 1: Off
    ACSR=0x80;
    SFIOR=0x00;

    // I2C Bus initialization
    //______________________________khodam ezafe kardam
    //-------------- Initial Setting ---------------
    TWAR = 0x01; // Slave Address
    TWBR=0x05; // Bit Rate: 38.462 kHz
    TWCR = 0xC4; // Clear Int, Set TWEA and TWEN

    i2c_init();
    while(1){
    tt=myi2c_read(0x01);
    if(tt==0x77)PORTB.2=0x01;
    else
    PORTB.2=0x00;
    };
    }
    برای رسیدن به خوشبختی نیازی به تلاش بی وقفه نیست کافی است مثبت اندیشه کنید

    دیدگاه


      #17
      پاسخ : اتباط ٢ میکرو با i2c

      سلام ، من یک برنامه master و slave نوشتم که مستر داده می دهد و اسلیو داده دریافت می کند . فعلا برای ارتباط بین دو میکرو کنترلر با هر فرکانسی درست کار می کند و مشکلی ندارد . بزودی برنامه را کامل می کنم . اگر بدردتون می خوره به من خبر بدهید تا upload کنم

      دیدگاه


        #18
        پاسخ : اتباط ٢ میکرو با i2c

        اگر بدردتون می خوره به من خبر بدهید تا upload کنم
        سلام دوست عزیز
        این موضوع مال خیلی وقت پیشه ولی ازینکه توجه کردین ممنونم اون موقعه من برای ازمایش و یادگیریه ارتباط i2c میخواستم که خدا رو شکر به نتیجه هم رسید حالا اگه شما هم لطف بکنید برنامه تون رو UPload کنید یه چیزی دوباره یادم بیاد و یاد بگیرم بازم ازتون ممنون میشم
        ذکات علم یاد دادنه ....

        دیدگاه

        لطفا صبر کنید...
        X