mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Gesamte EEPROM Memory auslesen


Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
...versuche gerade den gesamten Speicher Inhalt wie: Name, Main Memory 
bzw. App. Register  auslesen, klappt aber irgendwie nicht.

Es handelt sich hier um One Wire EEPROM (organized as one page of 256 
bits and 64 bit one-time programmable application register)



OneWire ds( input );

byte data[256];

for (int i = 0; i < 256; i++) {
   data[i] = ds.read();
   Serial.print(data[i], HEX);
}

vielleicht kann jemand helfen :(

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
was macht :
   data[i] = ds.read();

was seht da drin

wie arbeitet:
   Serial.print(data[i], HEX);


was für ein EEPROM .. typ, bezeichnung ....

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
na ja ich soll die Maxim OneWire DS Bausteine auslesen/beschreiben, ich 
habe es an Arduino Atmega 328 angeschlossen.

Deswegen suche etwas Hilfe da ich nicht weiter komme L

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
was macht denn die funktion :

Serial.print(data[i], HEX);

das steckt dahinter ... das ist ein funktionsaufruf .. zeige die 
funktion und man sieht was sie macht
wenn du hier bereits grübelst was ich meine ...

ich suche :
... print(char* ... , char..)
{
 //hier steht code ....
}


und wie heißt das eeprom ?
typ ?  herstellerlink ...
datenblattlink


mit so spärlichen angaben bisher von dir sage ich es liegt an zeile 47 , 
88 und 0815

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also... ich versuche den DS2431 (1024-Bit 1-Wire EEPROM von MAXIM) zu 
lesen bzw. zu beschreiben.
Die Software zur ARDUINO Board bittet die OneWire Library (OneWire.h) 
zur Verfügung. Mit der Bibliothek versuche ich den EEPROM zu lesen.

Die "Serial.print(data[i], HEX)" Funktion bedeutet - Zeige die 
abgespeicherte im Array (data[]) Werte als HEX im Serial-Monitor.


Ich kann den EEPROM teilweise lesen aber beschreiben funktioniert 
überhaupt nicht...  :(

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das is cshonmal ne einleitung ^^
zumidnest weiß man um was es geht

wie ist deine initiolisierung ?
nicht vom 1wire .. sondern vom EEPROM


das eeprom muss zum auslesen vorher beschrieben werden
mit einem " ich will lesen" befehl
ebeso gibts einen " ich will schreiben" befehl


hast du die onewire lib geprüft wie die übertragung stattfindet und mit 
der übertrgung des DS verglichen ?


wie das EEPROM angesprochen wird steht im datenblatt

Autor: Dietmar Malke (Firma: keine) (didima)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zum Einlesen des EEPROMS DS2431 dient das folgende Programm:
#include <OneWire.h>

OneWire  ds(11);    // 1-wire on pin 2
byte     addr[8];   // Contains the eeprom unique ID
void setup(void)
{
 Serial.begin(57600);
}
 
void loop(void)
{
 byte i;
 byte dat[13];

 SearchAddress(addr);

 dat[0] = 0x01;
 dat[1] = 0x02;
 dat[2] = 0x03;
 dat[3] = 0x04;
 dat[4] = 0x05;
 dat[5] = 0x06;
 dat[6] = 0x07;
 dat[7] = 0x08;
 
 WriteRow(0,dat);
 ReadAllMem();    //print all mem content
 
 while(1);
}

void SearchAddress(byte* address) //Search for address and confirm it
{
 int i;
 if ( !ds.search(address))
 {
   Serial.print("No device found.\n");
   ds.reset_search();
   delay(250);
   return;
 }
 
 Serial.print("ADDR= ");
 for( i = 0; i < 8; i++)
 {
   Serial.print(address[i], HEX);
   Serial.print(" ");
 }

 if ( OneWire::crc8( address, 7) != address[7])
 {
     Serial.print("CRC is not valid, address is corrupted\n");
     return;
 }
 
 if ( address[0] != 0x2D)
 {
     Serial.print("Device is not a 1-wire Eeprom.\n");
     return;
 }
 Serial.println();
}

void WriteReadScratchPad(byte TA1, byte TA2, byte* data)
{
 int i;
 ds.reset();
 ds.select(addr);
 ds.write(0x0F,1);  // Write ScratchPad
 ds.write(TA1,1);
 ds.write(TA2,1);
 for ( i = 0; i < 8; i++)
   ds.write(data[i],1);  
 
 ds.reset();
 ds.select(addr);    
 ds.write(0xAA);         // Read Scratchpad
 
 for ( i = 0; i < 13; i++)    
   data[i] = ds.read();
}

void CopyScratchPad(byte* data)
{
 ds.reset();
 ds.select(addr);
 ds.write(0x55,1);  // Copy ScratchPad
 ds.write(data[0],1);
 ds.write(data[1],1);  // Send TA1 TA2 and ES for copy authorization
 ds.write(data[2],1);
 delay(25); // Waiting for copy completion
 //Serial.print("Copy done!\n");
}

void ReadAllMem()
{
 int i;
 ds.reset();
 ds.select(addr);
 ds.write(0xF0,1);  // Read Memory
 ds.write(0x00,1);  //Read Offset 0000h
 ds.write(0x00,1);
 
 for ( i = 0; i < 128; i++) //whole mem is 144
 {
   Serial.print(ds.read(), HEX);
   Serial.print(" ");
 }
 Serial.println();
}

void WriteRow(byte row, byte* buffer)
{
 int i;
 if (row < 0 || row > 15) //There are 16 row of 8 bytes in the main memory
   return;                //The remaining are for the 64 bits register page
   
 WriteReadScratchPad(row*8, 0x00, buffer);
 
 // Print result of the ReadScratchPad
 for ( i = 0; i < 13; i++)
 {
   Serial.print(buffer[i], HEX);
   Serial.print(" ");

 }
 
 CopyScratchPad(buffer);
 
}

Es ist getestet und funktioniert.
Mir selbst fehlt noch ein ähnliches Programm um diesen Chip zu 
beschreiben.

: Bearbeitet durch Moderator

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.