logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Odczyt pamięci 29F040 za pomocą Atmegi. Przebiegi czasowe

phanick 28 Lis 2010 12:49 1836 7
REKLAMA
  • #1 8799456
    phanick
    Poziom 28  
    Witam ponownie tym pięknym śnieżnym niedzielnym popołudniem :)
    Przymierzam się do odczytu za pomocą Atmegi32 pamięci Am29F040:
    Datasheet: http://www.datasheetcatalog.org/datasheets/400/135891_DS.pdf

    Połączyłem już odpowiednie piny pamięci z nóżkami kontrolera, mam jednak pewien problem w ustaleniu protokołu komunikacji.
    Nie wiem czy pamięć jest pusta czy nie, ale nie ważne. Czytając z dokumentacji dowiaduje się, że odczyt spod adresu 00XXh powinien zwrócić wartość bajtu 01h czyli kod producenta.

    W tym datasheecie jest taki schemacik co do przebiegów czasowych podczas odczytu, mam jednak mały problem z jego zrozumieniem. Przepraszam, nie jestem po elektronice. Gdyby ktoś posiadał jakąś książkę w której jest to opisane, z chęcią poczytam.
    Do rzeczy. Schemacik wygląda tak:
    Odczyt pamięci 29F040 za pomocą Atmegi. Przebiegi czasowe

    Czy to oznacza że powinienem:
    ustawić linię WE w stan wysoki
    ustawic na liniach adresowych odpowiedni adres
    chwilkę poczekać
    ustawić linię CE w stan niski
    chwilkę poczekać
    ustawić linię OE w stan niski
    chwilkę poczekać
    odczytać z lini danych wartość bajtu
    ustawić linię CE i OE w stan wysoki
    ?

    Czy przed wszystkimi tymi operacjami powinienem ustawić linię CE, OE i WE w stan niski?


    A druga sprawa - czy taki pojedynczy cykl powinien mi zwrócić odpowiedni bajt z pamięci? Oglądając tabelkę 4 z tego datasheetu widzę, że większość operacji ( w tym operacja read) składa się z kilku cykli (np drugi wiersz w tej tabelce) i zdębiałem kompletnie...

    Odczyt pamięci 29F040 za pomocą Atmegi. Przebiegi czasowe
  • REKLAMA
  • #2 8799577
    tadzik85
    Poziom 38  
    Z tym czekaniem chwilkę to dobrze przeanalizuj Czasu widzę rzędu 50ns być może czekanie nie będzie konieczne a wystarczy wykonanie przez procesor tym zmian takt po takcie. I masz racje odczytanie czy zapis jest bardziej złożony i wg tej tabelki wymaga kilku cykli.
  • REKLAMA
  • #3 8802734
    phanick
    Poziom 28  
    Dlatego to jest takie w cudzysłowie czekanie, bo w zależności od prędkości procesora wystarczy od jednej do kilku instrukcji NOP.

    Może jakaś zabłąkana dusza pomoże?
  • #4 8802748
    tadzik85
    Poziom 38  
    Pomoc? cóż twoje myślenie jest poprawne więc czas na testy. spróbuje to po prostu uruchomić i zobaczysz co i jak. Myślę ze jtag tu byłby bardzo pomocny.
  • REKLAMA
  • #5 8802919
    phanick
    Poziom 28  
    Uruchamiam, lecz na wyjściu zawsze jest zero, więc nie wiem czy to wina tego że w pamięci nie ma nic zapisane czy że coś nie tak z komunikacją, albo połączeniami.
  • REKLAMA
  • #6 8803594
    phanick
    Poziom 28  
    A Jtag chyba nie przydałby się, bo po podłączeniu tej pamięci do procesora zostają tylko dwa wolne piny. A Jtag chyba pracuje na 3-4.
  • #7 8803914
    szelus
    Poziom 34  
    Po włączeniu zasilania pamięć jest w trybie odczytu danych. Jeżeli jest cała skasowana powinna zawierać same 0xFF o ile dobrze pamiętam.
    Aby odczytać sygnaturę, o której piszesz w pierwszej wypowiedzi, należy przełączyć pamięć do trybu Autoselect, wydając komendę (sekwencja zapisu) Autoselect. Aby czytać potem dane, należy pamięć przełączyć z powrotem do "normalnego" trybu wydając komendę Reset.
    Jeżeli bez wydawania żadnych komend czytasz same zera z całej pamięci, to raczej coś jest nie tak.
  • #8 10964969
    phanick
    Poziom 28  
    Pamięci dają się spokojnie programować i czytać mikrokontrolerem ATMEGA.
    Bardzo szczegółowe dane na temat przebiegów nie są konieczne - wystarczy pamiętać, że podczas odczytu: CS=0, WE=1, OE = 0, a podczas zapisu: CS=0, WE=0, OE=1.
    Przy zapisie adres jest zatrzaskiwany na późniejszym z opadających zboczy
    (WE, CS), natomiast dane są zapisywane na wcześniejszym z rosnących zboczy (WE, CS).
REKLAMA