Přístup do sériový Eeprom 24LC64

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Zpráva
Autor
Uživatelský avatar
Celeron
Příspěvky: 20517
Registrován: 02 dub 2011, 00:00
Bydliště: Nový Bydžov

#16 Příspěvek od Celeron »

Díky moc za info. Jak vidno, není to až tak jednoduchý a jednoznačný. Abych si tam nezanesl chybu tím mým zapojením, zkusím 24LC64 nejdříve na políčku a přímo na portech procesoru na HW emulátoru od Amitu. V podstatě stačí ten "návodovej program" poupravit na správný porty a může se hned zkoušet a pak teprve zkusit to mý zapojení.
24c16 jsem tam dal jen že Eagle neměl 24c64 ale nohy jsou stejně.
Dám vědět, jak jsem dopadl.
Jirka

edit: Koukal jsem na A51 driver, co jsi poslal. Vidím, že v tom je i obsluha klávesnice.
Driver však není pro 24LC64, ale jen pro max 8 kusů EEPROM délky 256 byte na čipu. U 24LC64 se musí nejdříve poslat identifikace čipu A + 3 bity výběru příslušné EEPROM 0-7 a pak následuje 13 bite adresy vevnitř EEPROM. Musí se to rozšířit na odeslání High adresy v EEPROM, co v tom driveru chybí. Vypadá to, že přístup je tak jak jsem si myslel.
Díky, ušetří mě to čas při bádání
Uživatelský avatar
vlado5
Příspěvky: 157
Registrován: 19 črc 2011, 00:00
Bydliště: Trenčín

#17 Příspěvek od vlado5 »

Ja som to tiež prerábal na 24C128, ako píšeš treba to rozšíriť o zadanie HIGH adresy EEPROM, ale rozumieš tomu, tak si to pochopil na jednotku Treba ešte u EADRS, odstrániť horné 3 bity adresy u 24C64 a vyššej. Okrem toho, že som to prerábal na inú EEPROM, musel som to prepísať na inštrukčný súbor 8748 a to bol iný zážitok, veľa inštrukcií tento procesor z inštrukčného súboru jadra 51 nemá. Bolo to celé treba prerobiť, a škriabať sa, ako sa hovorí pravou rukou za lavým uchom-cez hlavu. To je tak, keď niekto opisuje-pri vlastnom vývoji by som to od základu robil inak pre daný procesor rady 48.
K tomu poďakovaniu-rado sa stalo, pokiaľ môžem, pomôžem, k tomuto je toto fórum. Nech sa dielo darí !!!!
Uživatelský avatar
Celeron
Příspěvky: 20517
Registrován: 02 dub 2011, 00:00
Bydliště: Nový Bydžov

#18 Příspěvek od Celeron »

Tak jsem přidal ještě jeden registr na High adresu v EEPROM a dopsal oboustranný přenos EEPROM - externí RAM s použitím P2 a R0.
Ještě to trochu učešu podprogramama, spoustu řádků je pro všechny varianty přenosů společných.
Taky jsem předělal pro urychlení čtení na blokový po maximálně po 256 bytech a zápis po blocích maximálně 32 bytů.
Ještě bych měl jeden dotaz, nějak se mi to nepovedlo v šítu načíst. Při blokovým čtení mohu přenést, (pokud bych předělal počítatlo přenesených byte z DB na DW) celou EEPROM, tedy 8KB naráz. U zápisu bloky jsou jen maximální délka 32 byte a nebo to jsou bloky násobku 32 počínaje adresou 0000 v EEPROM? Dnes si 2 24LC64 přivezu a můžu začít zkoumat. :)
Díky
Jirka
Uživatelský avatar
vlado5
Příspěvky: 157
Registrován: 19 črc 2011, 00:00
Bydliště: Trenčín

#19 Příspěvek od vlado5 »

Ano, ako píšeš podľa datašitu by sa mala dať načítať celá-tzv. sekvenčné čítanie až po stop bit. Ja čítam u 24C128 naraz 256 bytov, na zápis mám nastavené bloky po 64 byte krát ich násobok (4xpo 64 byte=256 bytov).
Pri vývoji som urobil v SW chybu a načítalo mi naraz 500 byte bez prerušenia.
Uživatelský avatar
Celeron
Příspěvky: 20517
Registrován: 02 dub 2011, 00:00
Bydliště: Nový Bydžov

#20 Příspěvek od Celeron »

Já si to myslel, že to jsou násobky adresy EEPROM 0, 32, 64 atd. Ty máš u 24LC128 zápisový blok 64 a já u 24LC64 blok 32.
Já jsem radši u dražší a prostorově náročnější varianty 8 ks EEPROM x 8KB, protože je požadavek aby šlo zvolit na DIL přepínači HW blokování přepisu kalibrace pro 8 typů měrových sond. To bych na 128 nebo 256 nemohl.
Zjistil jsem, že programátor Xeltec co mám, umí nahrát 24LC00 až 24LC512, takže hned budu vedět, jestli jde dobře čtení a pokud by byl problém, tak znadno zjistím, zda mám blbě čtení nebo zápis, případně je blbá EEPROM.
A propo, jakej kmitočet hodin jsi zkoušel nejvíc?
Jirka
Uživatelský avatar
vlado5
Příspěvky: 157
Registrován: 19 črc 2011, 00:00
Bydliště: Trenčín

#21 Příspěvek od vlado5 »

Ja som správnosť svojej práce tiež konfrotoval s programátorom, ktorý mi dosť pomohol, len ma dosť štvalo prekladanie EEPROM z jednej pätice do druhej-čo som absolvoval asi 50x. Kmitočet som vôbec neskúšal na max. hranicu, pretože som si uvedomil pomalosť proužitého procesora (použitý X-tal je 6 MHz, inštrukčný cyklus 2,5 mikrosek.) a vynechal som aj inštrukcie NOP. EEPROM pracovala bez akéhokoľvek problému.
Uživatelský avatar
Celeron
Příspěvky: 20517
Registrován: 02 dub 2011, 00:00
Bydliště: Nový Bydžov

#22 Příspěvek od Celeron »

Napadlo mě, zda 24lc64 vůbec potřebuje registr SDA a SCL jak jsem posílal malůvku. Nešlo by ji posadit signálem SDA přímo na DB0 sběrnice? A SCL ovládat přímo signálem /MR a /MW samozřejmě s podmínkou jedinečný adresy.
Jirka
Uživatelský avatar
vlado5
Příspěvky: 157
Registrován: 19 črc 2011, 00:00
Bydliště: Trenčín

#23 Příspěvek od vlado5 »

Umiestniť priamo SDA EEPROM na DB0 je zaujimavá myšlienka. Neviem ako by sa to riešilo u takéhoto zložitého systému, kde je určite na zbernici frkot Pri prenose dát môže prísť aj k prerušeniu, a to by bolo v čase obsluhy EEPROM treba zakázať. To by mohlo mať vplyv na časovanie iných periférií.
Úplne nemožné by to podľa mňa bolo pri riadení EEPROM z externej pamete programu, pretože čas zbernice vyhradený na zápis - čítanie byte potrebuje pamäť súvislú sekvenciu dát a pri čítaní ďalšej inštrukcie riadiaceho SW by bolo treba túto prečítať z ext. pamäti programu-a tým by bola na tento moment zbernica vyhradená zas pre toto zariadenie. Tá postupnosť dát je pred lachtom tiež prerušovaná a zbernica je medzičasom pridelovaná iným zariadeniam, ale na to slúži lacht, aby si zapamätal posledný stav, ktorý bol naň zapísaný.
Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“