Sari la conținut
ELFORUM - Forumul electronistilor

Citire EEPROM cu Arduino Uno


stone100

Postări Recomandate

Salut!

Detin un Cd-player CDR 2005 VDO si acesta are cod de autentificare , acum este blocat casetofonul , exista o modalitate de a citi memoria din el si sa programez alta memorie fara a mai citi codul de autentificare. Toate acestea sa fie facute folosind Arduino Uno R3.

Acum observ ca la citirea lor arata "valoarea" acestora ( 11 , 47 , 145 , 256 etc.) ce semnifica acele cifre ?

Link spre comentariu
  • Răspunsuri 26
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

Pentru scopul în care se doreşte să se folosească arduino ca interfaţă de citire a memoriei...eu cred că se complică inutil...

Sigur că va citi şi scrie de/pe acea memorie ...dar nu ştiu dacă va putea scrie un dump util pentru Cd-player auto.

Cel mai simplu, poate construi o interfaţă (simplă) ...şi va folosi un soft dedicat ...cum ar fi ponyprog(e doar un exemplu)

Editat de elmar
Link spre comentariu

Ah, arduino e folosit pentru programa o gramada de chestii, nu vad de ce ar avea probeleme cu o memorie.

Cine-l intreaba pe gogu de "arduino xxx programer" (xxx poate fi pic, poate fi atmel, poate fi eeprom), primeste destule raspunsuri.

Cand l-am intrebat eu despre 24c16, primul raspuns pe care mi l-a zis a fost http://www.haberocean.com/2015/02/reading-and-writing-data-in-24c16-eeprom-using-arduino-mega-part-1/

Link spre comentariu

"Se face" un program (sketch) care sa ceara/sa primeasca un hex/bin/elf/ce format mai vrei tu (pe seriala) si sa-l trimita la memorie.

Invers e chiar mai usor - se face un program (altul sau tot ala de sus mai mare) care sa citeasca memoria si sa trimita datele pe seriala. Datele le vezi si le poti copia din monitorul serial din IDE-ul arduino.

Cea mai complicata parte e probabil primitul hex-ului de la seriala, da' e facubila si aia.

Link spre comentariu

Scuze ...rămân la părerea mea ...e inutil să se complice atât!Dar...dacă are un modul arduino, probabil că se descurcă cu programarea şi cu realizarea programului de citire scriere hex/bin...

Eu sunt mai conservator ...şi folosesc ”soluţia” tradiţională cu programator şi soft dedicat!

Editat de elmar
Link spre comentariu

@Stone - ideea in mare este urmatoarea:

 

Dacă memoria din el care vrei sa o citești/scrii este 24C16 - conform datasheet (http://www.atmel.com/Images/doc0180.pdf) este o memorie de (16384 bits) adresabilă prin protocolol i2c.

 

Fizic i2c - se implementează pe 2 fire : SDA si SCL. Important : la Arduino Uno sunt pinii: A4 (SDA), A5 (SCL)

 

Protocolul i2c este relativ simplu de operat:

- un device este master (pot fi si mai mulți)

- și există unul sau mai multe device-uri slave - fiecare are o adresă : un numar unic - ex: 0x51 (de regula configurabilă).

 

In mediul arduino protocolul i2c este implementat în biblioteca wire (#include <Wire.h>) : unde ai metode gen: read si write.

 

Cand masterul vrea să comunice (scriere/citire) cu un slave - "strigă" pe cele 2 fire: hei 0x51 ce valoarea ai salvata la adresa 0x1 - și slave-ul îi raspunde.

Ex (master citeste din slave):

Wire.beginTransmission(0x51); 		//hei 0x51 - cu tine vorbesc : fi atent la mineWire.write(int(addr_citire));  		//de acesta adresa vreau sa citescWire.endTransmission();Wire.requestFrom(devaddr, length);	//astept sa-mi timiti date de lungimea lengthuint_t i;byte buffer[256];for (uint_t i = 0; i < length && Wire.available(); i++) {  //mai sunt date disponibile de citit      buffer[i] = Wire.read();		//salvez in variabila mea buffer}

Acuma ce este scris în acea memorie numai cel care a facut programul știe.

 

Tu vei obtine 16384 bits - informație care trebuie interpretată:

- la ce adresă o fi salvat codul de deblocare ?

- este salvat în clar sau criptat ?

 

Defapt de aici incepe munca de detectiv - înca o dată: este aproape imposibil doar privind acești 16384 bits să-ți dai seama ce reprezintă fiecare.

 

Probail o analiză a continutului ei înainte de a introduce codul de blocare cu una de după introducerea codului ar evidenția diferențele (adrese si valori).

 

 

 

Link spre comentariu

O alta idee ar fi sa te conectezi la SDA, SCL -ul memoriei cu Arduino sau cu un analizor logic (o clona Saleae costa cam 80 lei) si sa analizezi traficul pe i2c atunci cand introduci un cod (cu casetofonul pornit) probabil vei obtine de la ce adresa citeste MC-ul casetofonului codul din memoria 24C16.

 

Dupa ce stii adresa si dimensiunea informatiilor returnate - incerci sa scrii acolo (si numai acolo) un cod ....

Link spre comentariu

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări