mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik EEPROM 24C256 / 24C512 nicht erreichbar


Autor: Thomas O. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich versuche mit codevision auf die 24Cxx (xx= 512 oder 256) zu
zugreifen aber ohne Erfolg. Ich werde für jede Hilfe dankbar. Wie gehe
ich vor:
24Cxx (xx= 512 oder 256)<--- ->  uC(AT90S8515)
SCL(Pin 6) ------------------->  PORTB.4
SDA(Pin 5) ------------------->  PORTB.5
PINs A0, A1 --> GND
WP -----------> GND
 --------------------
Program:
#include <90s8515.h>
// Standard Input/Output functions
#include <stdio.h>
#include <delay.h>


// I2C Bus functions
#asm
   .equ __i2c_port=0x18 ;PORTB
   .equ __scl_bit=4
   .equ __sda_bit=5
#endasm
#include <i2c.h>
/* read a byte from the EEPROM */
unsigned char eeprom_read(unsigned int address) {
   unsigned char data;

   i2c_start();
   i2c_write(EEPROM_BUS_ADDRESS);
   i2c_write(0x00FF & (address>>8));//(0x1F & (addr>>8))
   i2c_write(0x00FF & address);//(0xFF & addr);

   i2c_start();
   i2c_write(EEPROM_BUS_ADDRESS | 1);
   data=i2c_read(0);
   i2c_stop();

return data;
}

/* write a byte to the EEPROM */
void eeprom_write(unsigned int address, unsigned char data) {

   i2c_start();
   i2c_write(EEPROM_BUS_ADDRESS);

   i2c_write(0x00FF & (address>>8));
   i2c_write(0x00FF & address);
   i2c_write(data);
   i2c_stop();

    delay_ms(5);
}

void main(void)
{
// Declare your local variables here
   unsigned char device;
   unsigned char i, eepVar;
   int temp = 0;

   PORTA=0x07;
   DDRA=0x07;


// UART initialization
   UCR=0x18;
   UBRR=0x19;

// I2C Bus initialization
   i2c_init();

   eeprom_write(0x00aa,0x55); //0x55

   eepVar = eeprom_read(0x00aa);
   if(eepVar){
      printf("EEprom:  %-X", eepVar);
      putchar(eepVar);
      printf("\n\t");
   }
   else
      printf("\n\tEEPROM ERROR !");
//   }
   while (1){
      eeprom_write(0x0011,0x0A); //0x55
      printf("EEPROM: %-X\n", eeprom_read(0x0011));
   }
}

Was ist hier falsch mit den write und read programme?
Danke

Autor: Dominik (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was ist mit dem Pin A2 vom EEPROM? Hast du Pullups für SDA und SCL?

Autor: KoF (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
und sind die adressen auch richtig?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.