Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Adresowanie pamięci flash AM29F010B kontrolerem ATmega 32

Rico77 29 Jul 2007 22:39 3034 20
  • #1
    Rico77
    Level 10  
    Witam Wszystkich z szacownego grona speców...:-)
    Jestem początkujący w tych sprawach i proszę o pomoc, ponieważ mam taki problem:
    wykonuję układ z matrycami LED 8x5, z mikrokontrolerem ATmega 32 i mam też układ pamięci flash (AM29F010B-120PD Układ scalony Flash EPROM 5V 128x8 DIP32). Niestety brakuje mi wyprowadzeń z mikrokontrolera do pamięci, która "potrzebuje" 16 bitów adresowych, w związku z czym czy jest możliwe adresowanie jej poprzez 2x dekodery 3 z 8 wówczas będę potrzebował tylko 6 wyprowadzeń. Czy to jest możliwe do zrealizowania i czy nie spowolni to odczytu/zapisu danych?
    Dzięki wielkie za wszelką pomoc;-)
  • #2
    Rico77
    Level 10  
    hmm..?albo zadałem głupie pytanie...? albo mój problem nie cieszy się zbytnim zainteresowaniem..:cry:
  • #3
    ZbeeGin
    Level 39  
    Forum to nie hotline. Uszanuj nasz wolny czas.

    Nie napisałeś do czego ta pamięć będzie Ci potrzebna: pamięć programu, specyficzna pamięć danych...?
    Jeśli jako pamięć danych to będzie kłopot bo trzeba będzie zaimplementować jakiś mechanizm przełączania banków. Niestety nie będzie to łatwe zadanie. Mniejszy problem będzie jak wykorzystasz ją jako pamięć "danych". Wtedy skorzystasz z dodatkowej linii portu, którą będziesz sterował przed właściwą procedurą odczytu. Ale nie zapomnij, że pamięć zewnętrzna danych procesorów AVR jest przedłużeniem wewnętrznej pamięci danych. Zatem jej początkowa część byłaby przykryta.
  • #4
    Rico77
    Level 10  
    Przepraszam za chwilowe milczenie, ale zniknął mi net...dziś wieczorem postaram się szerzej opisać mój projekt...
    pozdrawiam
  • #5
    Michał_z1
    Level 16  
    Witam.
    Moim skromnym zdaniem lepiej by było wysterować matrycę LED z dekoderów, a FLASHa połączyć bezpośrednio do portów uP.
    Pozdrawiam.
  • #6
    Rico77
    Level 10  
    Witam
    Zanim napiszę o zastosowanej pamięci Flash.. może parę słów o projekcie...
    Otóż mój projekt ma za zadanie przedstawić niektóre z możliwości technologii Bluetooth, czyli ma zadanie przedstawić na wyświetlaczu matrycowym słowo, które zostanie zadane i wysłane przez użytkownika. Użytkownik będzie tutaj wysyłał jakieś słowo z komputera, które następnie poprzez tzw. "dongla" dołączonego do portu USB będzie transmitowane do odbiornika, którym będzie system mikroprocesorowy. W skład tego systemu wchodzi moduł Bluetooth WT11, który odbierze przesłane słowo i prześle je to mikrokontrolera. Ten z kolei odpowiednio wysteruje moduły matrycy tak aby wspomniane słowo zostało na nich wyświetlone.

    Dodano po 19 [minuty]:

    Poniżej przedstawiłem "odręczny szkic" układu podstawowego zawierającego WT11, AtMegę 32 oraz pamięć Flash. Pamieć Flash jest tutaj układem opcjonalnym, niemniej chciałbym tą kość zastosować na wszelki wypadek gdyby zabrakło pamięci na dane (ewentualnie na program).
    Jak już wspomniałem w pierwszym poście problem sprowadza się do niewielkiej ilości wyprowadzeń mikrokontrolera.
    Drugim problem (być może już ktoś miał taki problem - jeśli tak, to przepraszam, ale nie udało mi się znaleźć takiego postu) - to różne poziomy napięć w jakich pracują WT11 oraz atmega 32. Zdaję sobie sprawę że takie "sztywne" połączenie wyprowadzeń RxD oraz TxD obu układów (w ramach interfejsu USART) jest nie prawidłowe. Problem jest jaki układ wstawić w miejsce pytajnika? dzielnik czy jakiś bufor?
    Proszę o pomoc.
    Za wszelkie wskazówki wielkie dzięki...:D
  • #7
    Rico77
    Level 10  
    ZbeeGin troszkę się pogubiłem w tym co napisałeś:

    "...Jeśli jako pamięć danych to będzie kłopot bo trzeba będzie zaimplementować jakiś mechanizm przełączania banków. Niestety nie będzie to łatwe zadanie. Mniejszy problem będzie jak wykorzystasz ją jako pamięć "danych"".

    Mechanizm przełączania banków o którym piszesz dotyczy wykorzystania Flasha jako pamięci danych czy programu?
  • #9
    PioTherm
    Level 15  
    1) Z tego co widzę, to ja zrezygnowałbym w ogóle z zastosowania takiej pamięci, chyba że chcesz przechowywać sporo danych.
    Jak chcesz to drugie to zastosuj pamięć sterowaną przez magistrale I2C. Wtedy zajmiesz tylko 2 końcówki SCL i SDA.
    Z praktyki wiem że nie zapełnisz ATMEGI 32 programem który miałby realizować podane przez Ciebie funkcje.

    2) Jako konwerter napięć musisz zastosować układzik MAX232 w układzie z noty katalogowej

    3) W jakim języku będziesz pisał soft na ten procek ?

    4) Co to ma być za wyświetlacz matrycowy ? Multipleksowany ? To jakiś moduł gotowy (sterowany przez SPI?) jest czy sam będziesz podawał sygnały sterujące i multipleksujące ?

    Pozdro
  • #10
    ZbeeGin
    Level 39  
    Rico77 wrote:
    ZbeeGin troszkę się pogubiłem w tym co napisałeś:

    "...Jeśli jako pamięć danych to będzie kłopot bo trzeba będzie zaimplementować jakiś mechanizm przełączania banków. Niestety nie będzie to łatwe zadanie. Mniejszy problem będzie jak wykorzystasz ją jako pamięć "danych"".

    Mechanizm przełączania banków o którym piszesz dotyczy wykorzystania Flasha jako pamięci danych czy programu?

    Przepraszam miało być "Pamięć kodu". :D
  • #11
    Rico77
    Level 10  
    wielkie dzięki za odpowiedź...PioTherm... bardzo mi pomogłeś!
    1) Chyba pozostanę przy tym drugim rozwiązaniu i zastosuję pamięć sterowaną przez I2C, czyli mam rozumieć że masz na myśli pamięć EEPROM?
    Nie ukrywam, że jest to moja pierwsza przygoda z mikroprockami, więc Twoja uwaga odnośnie pamięci programu okazała się cenna.
    2) Zanim napisałem tutaj posta dużo szukałem na forum elektrody.. i znalazłem niemal identyczny problem:
    https://www.elektroda.pl/rtvforum/topic411573.html
    wiem że nie jest to odkrywcze, ale wnioskuję z tego posta że muszę wykorzystać 2 konwertery rs232->ttl (MAX232) na jedną linię. Jeden który przekonwertuje mi napięcie 3,3 V na standard rs232 a póżniej od strony mikroprocka - drugi konwerter, który przekonwertuje mi z rs232 na 5 V. Czy dobrze rozumuję?
    3) Soft na procka zamierzam pisać w asemblerze w WinAVR Studio 4.0

    Dodano po 8 [minuty]:

    4) Co się tyczy samego układu wyświetlacza to będzie to układ multipleksowany złożony tak jak na schemacie poniżej z 10 modułów matryc LED 8x5 (układ wspólnej katody). Wiersze tego wyświetlacza będą sterowane z wyjść mikroprocka PA0-PA7 - poprzez kabel wstążkowy. Natomiast kolumny wyświetlacza będą sterowane z interfejsu SPI -poprzez rejestry szeregowo-równoległe.
  • #12
    Rico77
    Level 10  
    odnośnie punktu 2)
    Zamiast konwertera aby zminimalizować koszty myślałem o dzielniku rezystancyjnym 22k/33kohma, ale troszkę zmylił mnie ten post:
    https://www.elektroda.pl/rtvforum/topic411573.html

    zwłaszcza stwierdzenie:
    "...2. pomysł będzie działał tylko gdy linie są jednokierunkowe. linie z uP do bt dać przez dzielniki rezystorowy. linie z bt do uP podpiąc bezpośrednio.
    procek 3,3v wykrywa jako stan wysoki. ja tak zrobiłem z kartą MMc i chodziło. ..."
    i teraz nie jest pewny czy moje rozumowanie jest poprawne.
    pozdrawiam i dziękuję za wszystkie odpowiedzi
  • #13
    PioTherm
    Level 15  
    Witaj,

    Więc robisz bardzo ciekawy projekt który sam kiedyś miałem zamiar zrobić. Mam tutaj na myśli głównie sterowanie tymi wyświetlaczami punktowymi.
    Przyznam szczerze że na pierwszą przygodę z mikrokontrolerami to dość odważny projekt wymyśliłeś <brawo>
    1) Tak. Mam na myśli pamięć EEPROM do przechowywania danych np. 24C256 (8kB) Są i większe oczywiście.
    2) Nie mam dokumentacji tego modułu. On jest zasilany 3,3V ? Może nie będziesz potrzebował żadnego konwertera w takim układzie bo się oba systemy dogadają ? Trzeba poszperać w dokumentacji tego modułu dokładnie. Podrzuć mi jak masz to popatrze sobie z ciekawości
    3) No to w kwestii oprogramowania to Ci nie pomogę :( Będziesz musiał w razie problemów pytać kogoś innego. Ja od urodzenia specjalizuję się głównie w BASICU, więc tylko na BASCOMie znam się co nie co.

    Mam jeszcze pytanko odnośnie tego sterowania tych wyświetlaczy. Jak planujesz to sterować ?

    pozdro
  • #14
    Rico77
    Level 10  
    Tak, moduł bluetooth WT11 jest zasilany z 3,3 V.
    Producentem tego układu jest firma Bluegiga. W Polsce łownym dystrybutorem jest firma Acte - stąd też mam ten moduł.
    Wspomniany przez Ciebie moduł zawarłem w załączniku...
    Reszta dokumentacji jest na stronie producenta...
    http://www.bluegiga.com/default.asp?f=2&t=1&p=8700&subp=200
    Attachments:
  • #15
    PioTherm
    Level 15  
    Hmmm to ja spróbowałbym to dogadać bez żadnych układów pośredniczących. Czy mógłbyś wystawić załącznik bez prowizji punktowej ? :)
    Najwyżej rezystor 220-470Ohm na lini nadawczej od strony procka dokoptować. Ale bez przeczytania dokumentacji to tylko takie tam moje przemyślenia :D
  • #16
    Rico77
    Level 10  
    Niestety Plik ma >250 kB i dlatego naliczają mi dodatkowe punkty za transfer..
  • Helpful post
    #17
    PioTherm
    Level 15  
    Dobra już mam tego doka :)
    A te wyświetlacze będziesz multipleksował ? Ile ich będziesz podłączał ? One mają wspólne katody, anody ?
  • #18
    Rico77
    Level 10  
    Możesz sobie ściągnąć zupełnie za darmo ze strony producenta...
    patrz link:
    http://www.bluegiga.com/default.asp?f=2&t=1&p=8700&subp=200
    pozdro

    Dodano po 15 [minuty]:

    10 modułów matryc będę multipleksował..są to układy ze wspólną katodą (tak jak na rys.)
    Jest jeszcze jedna rzecz której nie jestem pewien...czy można łączyć sygnał RESET z mikroprocka z wejściem sterującym ENABLE (tak jak na rysunku - Układ wyświetlający) rejestru szeregowo-równoległego? Czy to nie ma sensu?
  • #19
    PioTherm
    Level 15  
    No poczytałem trochę. To ja bym próbował procka dogadać bez układów pośredniczących z tym modułem. Wstawiłbym na linii nadawczej od strony procka rezystor 470Ohm I diodą zenera 3V3 na początek przyciął trochę i tyle.
    Szkoda że nie zamieściłeś schematu tego multipleksowania tych matryc. To ma działać na rejestrze przesuwnym jakoś ? Nie bardzo bez schematu jestem w stanie pojąć Twoją koncepcję.
    Czy będziesz na tym wyświetlaczu przesuwał cyklicznie jakiś tekst tak jak na reklamach świetlnych jest ?

    Ale dobra. Już nie zawracam głowy. Nie to w końcu było tematem tego postu :D
  • #20
    Rico77
    Level 10  
    Tak będę przesuwał tekst...
    Zasada działania układu jest identyczna z działaniem wyświetlacza multipleksowanego. W tym przypadku matryca z kolumnami katod odpowiada wyświetlaczowi 7-segmentowemu ze wspólną katodą. Schemat pojedynczego modułu matrycy przedstawiłem na poniższym rysunku...tyle że takich modułów jest w moim projekcie 10. A więc wejść sterujących wieraszami jest 8, a wejść sterujących kolumnami aż 50.
    O zapaleniu diody w konkretnym wierszu decydują sygnały W1...W8 tserujące tranzystory w stopniu wzmacniającym UDN 2981. Nasycenie któregokolwiek z tranzystorów powoduje podanie na odpowiedni wiersz napięcia zasilania (poprzez rezystor ograniczający). Poziom niski na jednym z wejść sterujących jest równoznaczny z zaświeceniem się diody w odpowiednim wierszu. Zamknięcie obwodu przepływu prądu jest realizowane za pomocą tranzystorów w jednym ze stopni wzmacniających ULN2803 - sterowanych z rejestrów 4094.
    Dla każdego cyklu obsługi aktywne może być tylko jedno wyjście zespołu rejestrów (stan "1"), co powoduje świecenietylko jednej kolumny.

    To tyle... mam nadzieję że oto Ci chodziło PioTherm i chyba o ten schemat.
    Pozdrawiam

    Dodano po 1 [minuty]:

    aha...i jeszcze schemat ...zapomniałem go dołaczyć:D
  • #21
    PioTherm
    Level 15  
    Przyznam że bardzo efektowne urządzonko :)
    Bardzo jestem ciekaw efektu końcowego no i połączenia tego wszystkiego z procesorem oraz zgrania w czasie.
    W procku będziesz potrzebował jeszcze generator znaków zrobić :)
    Nie wiem tylko czy całość uda Ci się wykonać na jednym procesorku, bo ja to przeważnie takie układy rozdzielałem już na dwa moduły żeby nie było np przeskoków wyświetlania multipleksowanego podczas gdy procesor obsługuje np.: port szeregowy.

    Jakbyś miał chwilkę pomiędzy etapami realizacji projektu albo jakieś pytanka to możesz naskrobac parę zdań do mnie nawet na E-mail :).
    Trzymam kciuki :D


    Piotrek