- fchao-Sinus-Wechselrichter AliExpress         
Ergebnis 1 bis 5 von 5

Thema: Problem mit i2c (c)

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Begeisterter Techniker Avatar von avrrobot
    Registriert seit
    12.01.2011
    Beiträge
    210
    Blog-Einträge
    9
    Ja, ich denke schon das ich alles richtig angeschlossen habe.
    Die beider controller haben die selbe Spannungsversorgung, also auch Masse.
    Als Pull-Up habe ich zwei 5,6 kOhm Widerstände gewählt.
    Als Code für den Slave mit dem LCD habe ich:
    Code:
    #define SLAVE_ADRESSE 0x50
    
    
    void lcd_puti( const int val )
    {
        lcd_clrscr();
        char buffer[8];
        lcd_puts( itoa(val, buffer, 10) );
    
    }
    
    
    int main(void)
    {
        init_twi_slave(SLAVE_ADRESSE);
        for(uint8_t i=0;i<i2c_buffer_size;i++)
        {
            i2cdata[i]=10+i;
        }
        lcd_init(LCD_DISP_ON);
        _delay_ms(500);
        lcd_puti(i2cdata[5]);
    }
    natürlich mit includes
    und als code für den master:
    Code:
          i2c_init();
        if(!(i2c_start(SLAVE_ADRESSE+I2C_WRITE))) 
        {
              i2c_write(0x00);
              i2c_write(30);
              i2c_stop();
        }
        else
        {
          PORTB |= (1<<PB0);
        }
    Hier praktisch direkt von RN-Wissen übernommen.
    Für Testzwcke habe ich den Code noch nicht wirklich verändert.
    Die LED an B0 geht immer an.

  2. #2
    Erfahrener Benutzer Roboter Genie Avatar von BMS
    Registriert seit
    21.06.2006
    Ort
    TT,KA
    Alter
    34
    Beiträge
    1.192
    Hallo,
    wenn ich das richtig nachvollzogen habe, dann wird hier:
    Code:
    i2c_init();
    if(!(i2c_start(SLAVE_ADRESSE+I2C_WRITE))) 
    {
     i2c_write(0x00);
     i2c_write(30);
     i2c_stop();
    nur das "nullte" Byte des Arrays auf 30 gesetzt.
    Du liest aber mit
    Code:
    lcd_puti(i2cdata[5]);
    das 5. Byte aus, welches ja nicht vom Master verändert wurde.
    Könnte das vielleicht die Ursache sein?
    Grüße,
    Bernhard

  3. #3
    Erfahrener Benutzer Begeisterter Techniker Avatar von avrrobot
    Registriert seit
    12.01.2011
    Beiträge
    210
    Blog-Einträge
    9
    Nein, ich hatte das ganze auch schon mit 0 getestet.
    Der Wert stimmt auch dann nicht. Außerdem leuchtet ja die LED, was anzeigt, dass der Master gar nicht schreiben konnte.

Ähnliche Themen

  1. ATMega32 UART problem --> Problem gelöst
    Von ChristophB im Forum C - Programmierung (GCC u.a.)
    Antworten: 3
    Letzter Beitrag: 12.03.2010, 18:45
  2. Problem mit Atmega644P Erkennung (Bascom-Versions-Problem)
    Von Rohbotiker im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 11.08.2008, 18:52

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen