Jeste jeden dotaz na EEPROM 24C16 (CAMPac)

Ing. Roman Kolbábek rkolbabek
Středa Březen 17 14:54:54 CET 2004


OPRAVA v te druhe rutine samozrejme nema byt krok cislo 6 (zapis
bajt)!!!! Omlouvam se za preklep. To je tak, kdyz se pouziva
kopirovani :-( Dalsi text je uz opraven.

> Preji pekny den.

> Vracim se k dotazu na nacitani a zapis EEPROM 24C16 pomoci Visual
> Basicu 6.0 a knihovny PORT.DLL z knihy pana Kainka pres seriove
> rozhrani (dva odpory 5k6 a dve zenerky 5V1 - no ja mam 4V7, protoze
> 5V1 zrovna nemeli).

> Jedna se o program pro cteni a zapis pameti do modelarskych RC
> vysilacu Futaba a tyto pameti (CAMPac-y) jsou dve. Prvni pouziva prave
> 24C16 a vetsi 64kb pouziva specialni na zakazku Futaby delany
> mikroprocesor, ktery komunikuje podobne jako 24C16. V principu ma jen
> osekany identifikator ve stavovem slovu na tvar 00xx misto 1010 a takto
> ziskane dva bity pouziva pro adresaci. Chova se to pak jako ctyri
> pameti 24C16 s ruznym ID a do xx se zapisuji bity A12 a A11 z adresy.

> Zda se, ze mi zakladni rutiny uz pracuji velmi dobre. Zkousim to doma
> na dvou ruznych pocitacich (Pentium 130 a PIII-1000) a cteni i zapis
> probiha naprosto bez chyb. Pouzivam zapis i cteni po jednom bajtu.
> Vice bajtu zaraz zapisovat ani cist nechci i kdyz by to bylo vyrazne
> rychlejsi a s malou pameti mi to pracovalo spolehlive, ale neumi to
> prave ten vetsi CAMPac.
> (Pokud se u teto pameti cte podruhe a neuda se znovu adresa, vraci
> vzdy bajty z prvni "pameti")

> Zapis delam jako:
> 1.start
> 2.zapis (ID + h_adresa*2 + 0)
> 3.pokud neni ack tak stop a GOTO 1
> 4.zapis (l_adresa)
> 5.zapis bajt
> 6.stop
> To opakuji 2048x nebo 8192x (ve 4-tem a 5-tem kroku ACK nekontroluji)

> Cteni delam skoro stejne:
> 1.start
> 2.zapis (ID + h_adresa*2 + 0)
> 3.pokud neni ack tak stop a GOTO 1
> 4.zapis (l_adresa)
> 5.start
> 6.zapis (ID + h_adresa*2 + 1)
> 7.nactu bajt
> 8.noack a stop
> To opakuji 2048x nebo 8192x

> Konecne popisi problem. V praci mam rychlejsi PC (P4-1800) a obcas a
> velmi nepravidelne a pokazde u jine adresy se mi stane, ze pamet
> zustane v jakemsi divnem stavu a drzi stazeny ACK a ignoruje SCL
> impulsy. No a protoze v tom kroku 3 ACK testuji, tak si program mysli,
> ze pamet data prijala a spokojene probehne a pritom to neni pravda a
> precte se (nebo zapise) spravne treba jen prvnich 1852 bajtu.

> Netusite v cem je problem a jak z neho ven? Napadla mne dost kostrbata
> myslenka. Udelat po startu SDA 1 a testovat ACK. Pokud bude porad v
> nule, je jasne ze pamet "zustala" viset a mohl bych se o adresu vratit
> a zacit uplne znovu. Ale nemam poneti, jak "legalne" pamet z teto
> letargie dostat. Hybat s SCL a az se chytne dat stop a znovu start?

> Mozna by bylo lepsi neresit dusledek, ale pricinu, ale nejsem si vubec
> vedom toho, co je spatne.

> Dekuji za kazdou radu.

> Roman Kolbabek
> rkolbabek@volny.cz




-- 
M?j se,
 Kolbi?
 rkolbabek@volny.cz




Další informace o konferenci Hw-list