- Akku Tests und Balkonkraftwerk Speicher         
Ergebnis 1 bis 3 von 3

Thema: I²C mit 24C512

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Benutzer Stammmitglied
    Registriert seit
    28.09.2006
    Beiträge
    67

    I²C mit 24C512

    HI

    Ich habe hier testweise für I²C Master lib von Fleury ein kleines EEprom angeschlossn. Ein PortExpander zum schreiben funktioniert einwandfrei.
    Das EEProm auslesen aber leider nicht

    Code:
    int main(void)
    {
        unsigned char ret = 0;
        
    
    	USART_INIT( MYUBRR);
    	USART_Puts("EEPROM \n \r");
        i2c_init();                                // init I2C interface
    
        /* write 0x75 to eeprom address 0x05 (Byte Write) */
        ret = i2c_start(DevAdd_W);       // set device address and write mode
    	_delay_ms(5);
        if ( ret ) {
            /* failed to issue start condition, possibly no device found */
            i2c_stop();
     		USART_Puts("Start Failed");
        }else {
            /* issuing start condition ok, device accessible */
            i2c_write(0x20);                       // write address = 5
    		_delay_ms(5);
    		i2c_write(0x75);
    		_delay_ms(5);
            i2c_stop();                            // set stop conditon = release bus
    
    		i2c_start_wait(DevAdd_W);
    		i2c_write(0x20);
    		_delay_ms(5);
    		i2c_rep_start(DevAdd_R);                 // set device address and read mode
    		_delay_ms(5);
    		ret = i2c_readNak();                    // read one byte
            i2c_stop();
    
    		USART_Puts("Read from EEPROM: ");
    		USART_Puts(ret);
    		USART_Puts("\n\r");
      
        }
        
        for(;;);	
    }
    Ist größtenteils eigentlich der Beispielcode vom Peter Fleury...
    Im Hypterterm ist aber folgendes zusehen

    EEPROM
    Read from EEPROM: †uI˜~!%R8¼¦v…¥»ÁEDDÍU„f¼‰âš§0ƒ¥Žò
    `"’°Çk
    “€½0$@.Ä
    ˆ
    Ich bin jetzt schon am timing rumspielen wie ihr seht, aber irgendwie wills ned so recht
    Seht ihr den Fehler..
    Mfg Bubi
    Achja Pullups hab ich[/highlight]

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    04.09.2004
    Ort
    Bürstadt
    Alter
    36
    Beiträge
    383
    hmm
    du schreibst 0x75 in adresse 5 und liest es wieder ein.

    Du gibts die 0x75 dann über uart_puts aus.. vll ist das der fehler.
    hab mal in einer ASCII Tabelle nachgeschaut. 0x75 entspricht 'u' oder dezimal 117. Ich würd einfach mal anstatt 0x75 eine dezimale 49(entspricht '1') reinschreiben und sie mit uart_putc ausgeben..

    wollt demnächst auch mal nen EEprom zum laufen bekommen. Datenblatt habe gelesen.

    MfG
    Ringo
    Nobody is Perfect
    Visit www.ringo.roboterbastler.de last update: 23.05.2009

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    28.09.2006
    Beiträge
    67
    So Fehler gefunden und gelöst
    Das EEPROM braucht 2 Addressen eine High und eine Low, also wie ein 2 Dimensionales Array... und so ganz nebenbei hatte ich auch noch nen Fehler in meinen UART funktionen

Berechtigungen

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

12V Akku bauen