Avatar billede oleoleo1 Nybegynder
11. april 2009 - 17:02 Der er 1 kommentar og
1 løsning

problemer med Ekstern EEprom 24LC256

Hej Eksperten.

Jeg sidder og roder med en Atmel Atmega16 og en ekstern seriel eeprom - 24LC256, som jeg skal have til at virke.

For at skære tingene ud i pap for mig selv har jeg hooked SDA og CLK og datadirection (denne fra Atmegaen) op til nogle switches så jeg kan styre det manuelt for at finde den rigtige måde at gøre det på. Den opfører sig tilsyneladende rimeligt godt i den forstand at den giver forventede ACK's på de rigtige tidspunkter, men det som ligger på adressen er ikke det forventede. Jeg har parallelforbundet SDA til data ind på en seriel latch med 8 LED's på udgangen som jeg kan reset'e når det passer mig. Desuden har jeg LED's (via en buffer) på SDA, SCL, Latch-reset, latch-CLK.

--------------------------
Her er min write-algoritme:
prekondition: SDA = SLC = 1

SDA = 0 ; start
CLK = 0 ; klar

(Sætter SDA når CLK er lav. Derefter CLK = 1, CLK = 0)

- første byte: 1010 000 0 (1010 = ctrl, 000 = chip select (A2, A1, A0 forbundet til GND), 0 = write))

- ack: skift data-direction, CLK -> 1-0 (9'ende cycle). eeprommen sætter data lav.

på samme måde med de næste bytes:

- adr høj: 0b00000000+ack
- adr lav: 0b00001111+ack
- testByte: 0b10111001+ack

- nu er SDA = SLC = 0
- CLK = 1, SDA = 1 (stop!)

------------
Read:

1010 000 1 (samme som i write bortset fra at sidste 1 = read)+ack

- adr høj: 0b00000000
- Atmega-ack: SDA = 0, CLK -> 1-0
- adr lav: 0b00001111+Atmega-Ack

data-dir = in
- Reset latch ("display")
8 x CLK+latchCLK -> 1-0 (intet ack)

data-dir = out
CLK = 1, SDA = 1 (Stop!)

--------------

Bare spørg hvis jeg skal uddybe noget!

Jeg ved af gode grunde ikke om det er i skrive eller læse rutinen at det går galt, håber der er nogen som kan hjælpe.

(PS. Jeg programmerer det i Avr assembler, please lad være med at paste C-kode ind!)
Avatar billede oleoleo1 Nybegynder
11. april 2009 - 23:43 #1
hmm har lige fundet ud af at read algoritmen er lidt forkert, jeg vender tilbage hvis jeg får noget fornuftigt output..
Avatar billede oleoleo1 Nybegynder
12. april 2009 - 14:22 #2
Har fundet fejlen (det er vist en klassiker). Jeg fik ikke kigget grundigt nok i datasheet'et. Read algoritmen indvoldverer også en "write", for overhovedet at kunne fortælle eeprommen at man vil læse fra den, hvis man følger datasheet side 11 "random read" virker det (for mig)..
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester