DataFlash Atmela - problem przy uruchomieniu

Cześć,

Już ponad tydzień siedzę nad problemem i utknąłem. Może pomożecie. W systemie jest PIC18F2420 i DataFlash AT45DB011. Mam problem z zapisem do MainPage'a jakichkolwiek danych.

Co działa:

1) czytam status - działa 2) zapis do bufora SRAM - działa 3) odczyt z bufora SRAM - działa 4) zapis do MainPage a następnie odczyt z MainPage - zwraca tylko FF-y.

Co zabawne - Robię tak:

1) Załadowanie strony nr x do bufora SRAM 2) Zapis nowych danych do bufora 3) zaprogramowanie bufora SRAM do Flash'a

W międzyczasie podglądam sobie timingi i podczas zapisu do Flash'a układ nawet jest busy przez 15ms czyli jakby programował. A robię mu potem odczyt a on mi zwraca FF'y. Dla pewności już 1mln razy sprawdziłem że WP jest podciągnięty do +3V.

Dla chętnych pomocy mogę wrzucić zrzuty z analizatora na priva.

Może ktoś wie co jeszcze może być nie tak.

dzięki i pozdrawiam

Rogher

Reply to
Rogher
Loading thread data ...
Reply to
invalid unparseable

Leci tak (wykrzyknik to jeden kompletny rozkaz z argumentami): Jeszcze 1 komentarz: 0x33 - to u mnie don't care bits

//sprawdza STATUS i flagę BUSY

1! (CS: 1->0), 0xD7, (czeka na READY), (CS: 0->1)

//MainMemoryToBuffer

2! (CS: 1->0), 0x53, 0x00, 0x00, 0x33, (CS: 0->1)

//STATUS

3! (CS: 1->0), 0xD7, (CS: 0->1)

//BufferWrite

4! (CS: 1->0), 0x84, 0x33, 0x00, 0x00, 'T', 'O', 'M', 'A', 'S', 'Z', (CS: 0->1)

//STATUS

5! (CS: 1->0), 0xD7, (CS: 0->1)

//BufferToMainMemoryWithBuiltErase

6! (CS: 1->0), 0x83, 0x00, 0x00, 0x33, (CS: 0->1)

//STATUS

7! (CS: 1->0), 0xD7, (tu czeka 15,7ms aż BUSY zostanie skasowane), (CS: 0->1)

i teraz odczyt:

//ContinousArrayRead

8! (CS: 1->0), 0xE8, 0x00, 0x00, 0x00, 0x33, 0x33, 0x33, 0x33, (i teraz DATAFLASH przełącza SDO z 0->1, i puszczam kolejne 10 paczek impulsów na SCK. Odczyt na linii SDO daje 10 razy 0xFF, (CS: 0->1)

KONIEC.

Dzięki za podejście do tematu

Rogher

Reply to
Rogher

Użytkownik Rogher napisał:

Witam, Dobry "hint" na DF to dobry elektrolit/tantal na nogach zasilania. Często gdy magazyn energii jest za daleko, rozkazy zapisu/kasowania Flasha są błędne. Przećwiczone wiele razy. Już zastanawiałem się kiedyś, czy nie zrobić DF+tantal jako 1 element biblioteczny ;) Marek

Reply to
Marek P.

Już sprawdzam....

Rogher

Reply to
Rogher

Ja miałem podobne problemy z AT89C2051. Tak często zapominałem o odsprzęganiu zasilania lizaczkiem 100n, że zacząłęm przylutowywać kondensatory od góry do nóg zasilania procka. Wygląda to śmiesznie, ale działa niezawodnie... bo nie muszę pamiętać o kondensatorze.

W ogóle te kondensatorki powinny być zintegrowane. :P

Kosma

Reply to
Kosma

Niestety, nie pomogło.

Wstawiłem najbliżej jak się dało tantala 22u + 100u (niskoimpedancyjny)

  • 1000u (jakiś zwykły). Bez zmian.

A wcześniej też podejrzewałem jakiś problem może od tej strony i podłączyłem oscyloskop do zasilania DataFlash'a. Nie udało mi się jednak zarejestrować żadnego skoku. Także to chyba nie o to chodzi...

Ale do dalszych prób - kondensatory te zostawiam :)

Rogher

Reply to
Rogher

Użytkownik Rogher napisał:

Piszesz w C? Jesli chcesz podeśle Ci sprawdzone procedurki. Ja oczwiscie mam na AVRki , ale to juz przerobisz sobie. Marek

Reply to
Marek P.

Marek P. napisał(a):

Tak, w C. Jeżeli możesz to podrzuć - może podratuje.

dzięki

Reply to
Rogher

Witam,

Temat cały czas aktualny. Porównałem procedurki od Marka ze swoimi. Mam właściwie identyczne. A kod już jest tak prosty że prostszy nie może być. Tymbardziej że mam podgląd na analizatorze i widzę co idzie faktycznie po SPI.

Co jeszcze może być powodem że nie chce programować Main Memory? (przypominam, że do buforów SRAM zapisuje i odczytuje z nich)

A może jest jakiś hint aby odczytać z MainPage'a. Może zapisało a nie mogę odczytać???

Proszę o wsparcie a ja w międzyczasie mam jeszcze 1 pomysł. Zmajstruję programator A. Dybkowskiego i podejrzę na analizatorze jak wygląda zapis i odczyt czegoś co działa.

A może WriteProtect jest na stałe zablokowany mimo pina podwieszonego??? Zdażyło się kiedyś komuś?

pozdrawiam

Rogher

Reply to
Rogher
Reply to
invalid unparseable

Witam,

Na chwilę obecną wylutowałem DataFlasha z PCB podłączyłem go na pająku do portu LPT (wg opisu A. Dybkowskiego, lecz bez buforów 74LVC244), zasiliłem 3,3V, podłączyłem kondensatory na zasilaniu (22u tantal + 100u niskoimp. + 1000u) i odpaliłem ISPProg'a. linie WP i RST podłączyłem twardo do 3,3V.

  1. Czyta sygnaturę poprawnie.
  2. Próba zapisu kończy się WriteError ("powinno być 0x54 a jest 0xFF").

Podejrzałem sobie timingi z programatora - identyko jak u mnie i u Marka P.

Stawiam na uszkodzoną kość, co objawia się brakiem możliwości zapisu do MainMemory (lub odczytu z niej). Zamówiłem nowe kości. Dam znać jak dostanę i przetestuję.

Rogher

Reply to
Rogher

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.