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

ATmega32 – jak rozszerzyć pamięć RAM? Sposoby podłączenia zewnętrznego RAM

Bartus_99 08 Kwi 2015 18:33 3522 27
  • #1 14601099
    Bartus_99
    Poziom 9  
    Posty: 22
    Ocena: 1
    Witam

    Przechodząc od razu do rzeczy, potrzebuje rozszerzyć pamięć RAM Atmega 32.
    czy dało by się to zrealizować tak, jak na obrazku? ATmega32 – jak rozszerzyć pamięć RAM? Sposoby podłączenia zewnętrznego RAM
    PS Jestem początkujący i nie za bardzo z tym umiem sobie poradzić
  • #2 14601275
    Steryd3
    Poziom 33  
    Posty: 1641
    Pomógł: 241
    Ocena: 301
    Niestety- mikrokontroler ATmega32 nie posiada możliwości podłączenia zewnętrznej pamięci programu i danych tak jak ma to miejsce na Twoim rysunku. Nie ma możliwości wyprowadzenia magistrali danych i adresowej z tego mikrokontrolera. Oczywiście można podłączyć w inny sposób jakąś pamięć i trzymać w niej dane ale już np. stosu w niej nie umieścisz. AVRy ogólnie oparte są o koncepcję-"brakuje Ci pamięci weź większy". Kilka co prawda posiadają wyprowadzenia magistral i można wykonać proponowane dołączenie zewnętrznej pamięci -wystarczy poszukać na stronach Atmela.
    Jeśli zapotrzebowanie na RAM jest dużo większe od tego co proponują najbardziej "dopakowani" członkowie rodziny może warto zmienić mikrokontroler na np. STM32- tam bez problemu pojemność pamięci osiąga dziesiątki kB.
  • #3 14601377
    tronics
    Poziom 38  
    Posty: 5059
    Pomógł: 358
    Ocena: 839
    Pytanie 1 - dlaczego uważasz kolego, że jest Ci niezbędny większy RAM
    Pytanie 2 - dlaczego nie użyjesz mikroprocesora z obsługą zewnętrznej pamięci - czyli od Mega64 wzwyż.
    Pytanie 3 - dlaczego nie użyjesz mikroprocesora z większą pamięcią wbudowaną na innej architekturze (np. ARMowe LPC, STM32)
  • #4 14601495
    Bartus_99
    Poziom 9  
    Posty: 22
    Ocena: 1
    tronics napisał:
    Pytanie 1 - dlaczego uważasz kolego, że jest Ci niezbędny większy RAM
    Pytanie 2 - dlaczego nie użyjesz mikroprocesora z obsługą zewnętrznej pamięci - czyli od Mega64 wzwyż.
    Pytanie 3 - dlaczego nie użyjesz mikroprocesora z większą pamięcią wbudowaną na innej architekturze (np. ARMowe LPC, STM32)


    1. Potrzebuje więcej pamięci, ponieważ ma to być coś na kształt "komputera". EPROM miał by zajmować "system" (napisany w c++, co już spowodowało by zapchanie całego ramu wbudowanego) a na RAM dokładany wgrywane by były programy do odtwarzania.

    2.ATmega 64 jest wykonana z obudową do smd a ja mam opanowany tylko montaż przewlekany(brak odpowiedniej lutownicy do smd).

    3.Na razie zajmowałem się tylko ATmegą i niczym innym, dlatego postanowiłem użyć czegoś co znam.
  • #5 14601644
    Steryd3
    Poziom 33  
    Posty: 1641
    Pomógł: 241
    Ocena: 301
    Bartus_99 napisał:
    Potrzebuje więcej pamięci, ponieważ ma to być coś na kształt "komputera". EPROM miał by zajmować "system" (napisany w c++, co już spowodowało by zapchanie całego ramu wbudowanego) a na RAM dokładany wgrywane by były programy do odtwarzania.


    Niestety...choć na AVRach można postawić system operacyjny w jakiejś zminimalizowanej formie to robienie na nim czegoś na kształt komputera nie jest dobrym pomysłem. Zasoby pamięciowe oraz moc obliczeniowa predestynują 8-bitowe AVRy raczej do średnio skomplikowanych zadań sterowniczych niż do stawiania systemów operacyjnych które dodatkowo obciążają i tak nie najmocniejszą jednostkę obliczeniową.
    Do stawiania systemów operacyjnych wyśmienicie nadają się wspomniane ARMy ( czyli choćby STM32).
    Co do strachu przed lutowaniem- podejrzewam, że raczej nie chodzi tu o wypuszczenie na rynek setek sztuk produktu a zbudowanie działającego prototypu i testy koncepcji. Tak więc czy nie lepiej kupić jakąś gotową płytę prototypową z wlutowanym mikrokontrolerem?
    Na rynku jest np. STM32 Disco (z wyświetlaczem) która to płyta posiada dodatkową pamięć RAM (chyba 1MB) -kolega na tym nawet linuxa postawił. Koszt takiej płytki to niespełna 150zł (i to pewnie z przesyłką).
  • #6 14601697
    Bartus_99
    Poziom 9  
    Posty: 22
    Ocena: 1
    Steryd3 napisał:
    Co do strachu przed lutowaniem- podejrzewam, że raczej nie chodzi tu o wypuszczenie na rynek setek sztuk produktu a zbudowanie działającego prototypu i testy koncepcji. Tak więc czy nie lepiej kupić jakąś gotową płytę prototypową z wlutowanym mikrokontrolerem?
    Na rynku jest np. STM32 Disco (z wyświetlaczem) która to płyta posiada dodatkową pamięć RAM (chyba 1MB) -kolega na tym nawet linuxa postawił. Koszt takiej płytki to niespełna 150zł (i to pewnie z przesyłką).


    Rozumiem uproszczanie sobie życia(zresztą słusznie), ale jednak wolał bym stworzyć coś samodzielnie. Prosił bym może o jakąś sugestie co do wyboru mikrokontrolera. Co do mocy obliczeniowej to nie musi być ona znaczna chodzi bardziej o model niż o przedmiot stricte użytkowy.
  • #7 14602548
    tronics
    Poziom 38  
    Posty: 5059
    Pomógł: 358
    Ocena: 839
    Cytat:
    Niestety...choć na AVRach można postawić system operacyjny w jakiejś zminimalizowanej formie to robienie na nim czegoś na kształt komputera nie jest dobrym pomysłem
    To zależy czego się oczekuje. 3 dekady temu na 8 bitowym 1MHz procesorze był graficzny system obsługiwany myszą - prawda, nie można napisać wielozadaniowy system czasu rzeczywistego, ale jednak był system i działał na takim procesorze. Baa, są rtos na avr a nawet '51 :)
    Cytat:
    Do stawiania systemów operacyjnych wyśmienicie nadają się wspomniane ARMy ( czyli choćby STM32).

    Tak, ale w tym przypadku trzeba mieć trochę doświadczenia z tymi ARMami, bo nie wszystko robi się w ten sam sposób co na avr, choćby obsługa NVIC jest bardziej skomplikowana.
  • #8 14602557
    Steryd3
    Poziom 33  
    Posty: 1641
    Pomógł: 241
    Ocena: 301
    tronics napisał:
    To zależy czego się oczekuje. 3 dekady temu na 8 bitowym 1MHz procesorze był graficzny system obsługiwany myszą

    Oczywiście tak -pomijając różnice w architekturze tak było te 3 dekady temu. Tyle, że dziś w kieszeni każdy ma "komputer" o możliwościach obliczeniowych których nie powstydziły by się kilkadziesiąt lat temu poważne ośrodki obliczeniowe. Dlatego w obecnych czasach warto zainteresować się nowymi architekturami które dają spore możliwości niż upychać system na już nie najnowszej 8-bitowej architekturze- zwłaszcza, że często ten "wypasiony" mikrokontroler ARM jest tańszy od 8-bitowego AVRa.

    Co do obsługi NVIC ...tu nie ma co demonizować.
    Prawdą jednak jest, że nie trudno jest znaleźć system przerwań bardziej skomplikowany od tego w AVRach ATmega (nawet 8051 miał to bardziej rozbudowane bo miał możliwość określania priorytetów przerwań). Jest to poważna "niedoróbka" tych konstrukcji co potwierdza fakt, że poprawiono to w Xmegach.
  • #9 14603602
    Bartus_99
    Poziom 9  
    Posty: 22
    Ocena: 1
    Jak tak przeglądam to najbardziej odpowiedni wydaje mi się 80C51-można dołożyć do 64k ramu. Potrzebuje jednak pewnej porady, chodzi mianowicie o programator do tego mikrokontrolera. Czy dało by się zbudować nowy programator w tym stylu/zaprogramować za pomocą tego 80C51(obrazek)?(programator oryginalnie do atmega) ATmega32 – jak rozszerzyć pamięć RAM? Sposoby podłączenia zewnętrznego RAM
  • Pomocny post
    #10 14604003
    Steryd3
    Poziom 33  
    Posty: 1641
    Pomógł: 241
    Ocena: 301
    Dało by się. Polecam program ISP Programmer (już niestety nie rozwijany ale i port LPT też już w nowych sprzętach rzadko się pojawia)- za jego pomocą dało się programować AT89S52 (czyli troszkę lepsze 8051-a właściwie 8052 z Atmela).
    Inną kwestią, że 8051 i jego krewni to w porównaniu do AVRów słabizna obliczeniowa. AVRy są to mikrokontrolery RISCowe wykonujące 1 rozkaz na cykl zegara (16MHz kwarc daje w uproszczeniu 16M instrukcji na sekundę) natomiast w '51 częstotliwość z rezonatora dzielona jest przez 12 co tworzy dopiero cykle maszynowe a jedna instrukcja zajmuje nawet do kilku takich cykli( czyli zegar 24MHz daje 2M cykli maszynowych co daje mniej niż 1M rozkazów wykonanych na sekundę). Reasumując- obliczeniowo ...staroć choć nie głupio pomyślany i materiałów do niego jest multum.
    Porównując AT89S52 do ATmega i STM32 to jak odpowiednio rower, skuter, samolot myśliwski.
  • #11 14604120
    Bartus_99
    Poziom 9  
    Posty: 22
    Ocena: 1
    Mam tylko pytanie co do połączenia pinów. Ztego co mi się wydaje to:
    GND ---> GND (to raczej oczywiste)
    RESET ---> RESET (to raczej oczywiste)
    MISO ---> INT1 ???
    MOSI ---> INT0 ???
    SCK ---> ???
    Prosił bym o pomoc w tym temacie.

    Steryd3 napisał:
    Porównując AT89S52 do ATmega i STM32 to jak odpowiednio rower, skuter, samolot myśliwski.

    Fajne porównanie :D
  • #12 14604166
    jaglarz
    Poziom 23  
    Posty: 480
    Pomógł: 58
    Ocena: 47
    80C51 programować za pomocą ISP? A od kiedy to możliwe że się tak spytam??
  • #13 14604238
    Steryd3
    Poziom 33  
    Posty: 1641
    Pomógł: 241
    Ocena: 301
    jaglarz napisał:
    80C51 programować za pomocą ISP?

    Samego 80C51 programować poprzez ISP się nie da natomiast proponowany układ AT89S51 lub AT89S52 (który polecam) które to są w pełni funkcjonalnymi układami MCS 51 (a więc są w stanie wykonywać wszystkie rozkazy z listy rozkazów 8051) można programować przez ISP.

    Co do samych pinów programujących- to oczywiście MISO, MOSI, SCK, RESET, GND to minimum a większość programatorów wymaga jeszcze zasilania czyli zazwyczaj +5V.
    Koledze -głównemu zainteresowanemu układem -polecam jego notę do przeglądnięcia- to wiele może wyjaśnić.
  • #14 14604313
    Bartus_99
    Poziom 9  
    Posty: 22
    Ocena: 1
    Czyli mam rozumieć, że bez problemu mogę zaprogramować AT89S52 w asemblerze tak jakby to był zwykły 8051 i zaprogramować za pomocą pokazanego wyżej programatora podłączając do pinów nazwanych jak w ATmega i wszystko będzie działać tak jak oryginalny 8051?
  • #15 14604320
    jaglarz
    Poziom 23  
    Posty: 480
    Pomógł: 58
    Ocena: 47
    Tylko czy jest sens pchać się w archaiczną architekturę 51??
  • #16 14604738
    dondu
    VIP Zasłużony dla elektroda
    Posty: 13906
    Pomógł: 1292
    Ocena: 809
    Większość koledzy już wytłumaczyli, ale nie wskazali alternatyw. Jeśli więc nadal chcesz wykorzystać AVR, to za pomocą interfejsu SPI podłącz zewnętrzną pamięć SRAM - 128kB wystarczy? Jeśli tak to 23LCV1024

    Za pomocą interfejsu SPI transfer będzie bardzo szybki, co pozwoli Ci na realizację zadania.
  • #17 14605238
    tronics
    Poziom 38  
    Posty: 5059
    Pomógł: 358
    Ocena: 839
    Cytat:
    Jeśli więc nadal chcesz wykorzystać AVR, to za pomocą interfejsu SPI podłącz zewnętrzną pamięć SRAM - 128kB wystarczy

    Ja widzę przynajmniej 2 problemy:
    1. adresowanie urządzeń SPI jest poza pamięcią obsługiwaną przez kompiler (bo to nie jest pamięć procka tylko kontrolera SRAM na SPI) - zatem korzystanie z tej pamięci nie jest aż tak proste i gładkie jak z xram.
    2. Transfer może jest i szybki, ale dla tej pojemności dla 1 bajta to nawet kilkanaście cykli zegara, w porównaniu do kilku w xram.
  • #18 14605288
    dondu
    VIP Zasłużony dla elektroda
    Posty: 13906
    Pomógł: 1292
    Ocena: 809
    @ tronics:

    Oczywistym jest, że zewnętrzna pamięć via SPI nie leży w przestrzeni adresowej CPU mikrokontrolera, więc nie może być adresowana przez kompilator tak jak wewnętrzna pamięć RAM. Takie rozwiązanie wcale nie jest aż tak skomplikowane jak to sugerujesz, a daje możliwość użycia AVR, które autor tematu chce używać.

    Czy takie rozwiązanie nadaje się do konkretnego zastosowania powinien określić autor projektu, bo tylko on zna szczegóły i wymagania techniczne.

    Reasumując, zewnętrzny SRAM jest alternatywą, której autor tematu poszukiwał, a interfejs SPI jest najszybszą możliwością wymiany danych. Czy to zadowoli autora tematu, wie już tylko on.
  • #19 14605925
    tronics
    Poziom 38  
    Posty: 5059
    Pomógł: 358
    Ocena: 839
    Tak w zasadzie jedna rzecz mnie nurtuje jeśli chodzi o ten temat
    Cytat:
    a na RAM dokładany wgrywane by były programy do odtwarzania

    Czy na '51 lub AVR jest w ogóle możliwość wykonywania KODU PROGRAMU z pamięci SRAM? Z tego co się orientuję to nie ma takiej możliwości. Więc konieczne będzie zrewidowanie wymagań skutkujące albo zmianą zamierzeń, albo zmianą mikroprocesora :) Jasne, można zrobić interpreter i "ładować" program z czego się chce, nawet z flash na i2c, tylko pytanie czy o to nam chodzi.
  • #20 14606101
    dondu
    VIP Zasłużony dla elektroda
    Posty: 13906
    Pomógł: 1292
    Ocena: 809
    Szczerze mówiąc "zaszufladkowałem się" tytułem tematu oraz pierwszym postem i przyjąłem, że autor potrzebuje RAM, bo chce operować na danych. Ale po Twoim poście, w którym zwróciłeś uwagę, że autor myśli o programie w RAM, to oczywiście nie jest to już takie proste choć nadal możliwe, bo można wykorzystać bootloader i odczytany z zewnętrznego RAM program załadować do FLASH AVRa. Z tym, że wtedy pytanie, czemu nie dodać karty SD?

    Ale takie kombinowanie ma sens, gdy zna się szczegóły projektu i ograniczenia. Na ten moment wygląda na to, że autor (tylko się nie obraź), ale ma zerowe pojęcie o AVR pomimo, że napisał:

    Bartus_99 napisał:
    3.Na razie zajmowałem się tylko ATmegą i niczym innym, dlatego postanowiłem użyć czegoś co znam.


    Moja propozycja dla autora tematu:
    - zapoznaj się z bootloaderami dla AVR.
    - przedstaw dokładnie co chcesz zrobić i jakie masz ograniczenia. Im więcej szczegółów podasz tym łatwiej będzie Ciebie naprowadzić na właściwe rozwiązanie.
  • #21 14606331
    Bartus_99
    Poziom 9  
    Posty: 22
    Ocena: 1
    dondu napisał:
    Na ten moment wygląda na to, że autor (tylko się nie obraź), ale ma zerowe pojęcie o AVR
    Nie mam się o co obrażać bo to jest ewidentną prawdą. Co prawda zrobiłem prosty program na ATmegę, ale nadal jestem "zielony".
    Interesowało by mnie tylko w jaki sposób rozwiązać połączenie SRAM przez SPI i w jaki sposób obsługiwać je programowo?
  • #22 14607047
    dondu
    VIP Zasłużony dla elektroda
    Posty: 13906
    Pomógł: 1292
    Ocena: 809
    Potrafisz wykorzystać interfejs SPI w AVR? Jeśli nie, to od tergo musisz zacząć.
    Gdy zna się już zasady działania SPI, to napisanie biblioteki do obsługi konkretnej pamięci nie jest trudne.
  • #23 14607226
    Bartus_99
    Poziom 9  
    Posty: 22
    Ocena: 1
    dondu napisał:
    Potrafisz wykorzystać interfejs SPI w AVR? Jeśli nie, to od tergo musisz zacząć.

    Nie niestety nie potrafię. Moje "projekty" to przerabianie prostych układów z Arduino na ATmega8 i to właściwie tyle.
  • #24 14607235
    dondu
    VIP Zasłużony dla elektroda
    Posty: 13906
    Pomógł: 1292
    Ocena: 809
    W takim układzie zapomnij o tych planach, które przedstawiłeś w tym temacie, bo tylko się zniechęcisz i stracisz czas. Ale śmiało próbuj inne projekty realizować i sukcesywnie nabierać umiejętności :)
  • #25 14607318
    Bartus_99
    Poziom 9  
    Posty: 22
    Ocena: 1
    Ok ale czy mógłbyś polecić jakieś źródło info aby się podszkolić w tematyce mikrokontrolerów?
  • #27 14607683
    PiotrPitucha
    Poziom 34  
    Posty: 2658
    Pomógł: 201
    Ocena: 423
    Witam
    Lutowanie SMD jest proste i przyjemne :)
    Wracając do początku dyskusji, wymień Atmegę32 na Atmegę64, skoro znasz te procesory to prościej potrenować lutowanie niż zmienić architekturę.
    W sieci jest trochę poradników jak lutować SMD i warto poćwiczyć na jakichś starych płytkach z PC aby wyzbyć się lęku przed lutowaniem.
    Z drugiej strony jak bardzo się boisz to bez trudu znajdziesz malutkie płytki z Atmegami wyposażone w piny w rastrze typowych układów do montażu przewlekanego.
    Pozdrawiam

Podsumowanie tematu

✨ Użytkownik poszukuje sposobu na rozszerzenie pamięci RAM w mikrokontrolerze ATmega 32, jednak napotyka ograniczenia związane z architekturą tego układu, która nie pozwala na podłączenie zewnętrznej pamięci RAM w tradycyjny sposób. Uczestnicy dyskusji sugerują rozważenie alternatywnych mikrokontrolerów, takich jak STM32, które oferują większe możliwości pamięciowe i obsługę zewnętrznej pamięci. Wskazują również na możliwość użycia zewnętrznej pamięci SRAM poprzez interfejs SPI, chociaż podkreślają, że programowanie i adresowanie takiej pamięci może być bardziej skomplikowane. Użytkownik wyraża chęć samodzielnego tworzenia projektów, ale przyznaje, że ma ograniczone doświadczenie w programowaniu mikrokontrolerów. W końcu, dyskusja dotyka również kwestii lutowania SMD oraz dostępnych zasobów edukacyjnych w tematyce mikrokontrolerów.
Wygenerowane przez model językowy.
REKLAMA