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

Jak podłączyć zewnętrzną pamięć S-RAM do mikrokontrolera AVR?

kaldachar 11 Cze 2004 01:46 4349 16
REKLAMA
  • #1 685880
    kaldachar
    Poziom 14  
    Posty: 153
    Pomógł: 1
    Witam

    Orientuje się ktoś , czy można ( i jak to zrobić ) podłączyć zewnętrzną pamięć programu do któregoś z avr . Potrzebuje mieć program w pamięci typu S-RAM i takie rozwiązanie było by najlepsze .

    Pozdrawiam
  • REKLAMA
  • REKLAMA
  • #3 686283
    h-doc
    Poziom 27  
    Posty: 1208
    Pomógł: 57
    Ocena: 21
    Zewnętrzna pamięć danych da się podłączyć. Z pamięcią programu jest trochę gorzej. Można spróbować zastosować bootloader i wczytanie programu z zewnętrznej pamięci podczas startu systemu, ale to chyba niezbyt szczęśliwe rozwiązanie.
  • #4 686577
    kaldachar
    Poziom 14  
    Posty: 153
    Pomógł: 1
    Szkoda :-( . To może to któregoś z PIC-ów się da podłączyć zewnętrzną pamięć programu ??

    Pozdrawiam
  • REKLAMA
  • #5 687302
    elektryk
    Poziom 42  
    Posty: 11029
    Pomógł: 439
    Ocena: 240
    kaldachar napisał:
    Szkoda :-( . To może to któregoś z PIC-ów się da podłączyć zewnętrzną pamięć programu ??
    Były chyba jakieś PIC17, ale to antyk. AVR i PIC to z założenia procesory jednoukładowe i mają pamięć w środku, a ile jej chcesz to wybierasz odpowiedni model.
  • #6 687516
    JarGol
    Poziom 14  
    Posty: 175
    Pomógł: 3
    Ocena: 7
    Chyba źle zrozumiałem?? Dlaczego chcesz umieścić program w S-RAMie? Każda utrata zasilania spowoduje utratę programu!!
  • REKLAMA
  • #7 687684
    fantom
    Poziom 31  
    Posty: 1649
    Pomógł: 108
    Ocena: 41
    JarGol napisał:
    Chyba źle zrozumiałem?? Dlaczego chcesz umieścić program w S-RAMie? Każda utrata zasilania spowoduje utratę programu!!

    Zgadza sie ale sa procesory ktore maja wlasnie pamiec typu SRAM na program.Tyle ze kod jest przetrzymywany w pamieci szeregowej na IIC ktory jest sciagany do wewnetrznego SRAMU po kazdym wlaczeniu zasilania.
  • #8 687807
    JarGol
    Poziom 14  
    Posty: 175
    Pomógł: 3
    Ocena: 7
    robilem troszke ukladow na uP ale nigdy nie korzystalem z pamieci na I2C ale chyba niedlugo bede musial bo w ramach pracy inzynierskiej musze zaprojektowac sterownik basenu.. po krotkim przegladzie zdecydowalem sie wybrac procesor 80c552 i do niego wlasnie mozna dolaczyc pamiec programu na I2C... czy konieczne jest oprocz tego dolaczenie s-ramu do ktorego bedzie ladowany program, czy kolejne rozkazy moga byc pobierane z pamieci szeregowej?? wiem ze troche zboczylem z tematu bo to rodzina 8051 a nie avr ale sprawa dotyczy rowniez zewnetrznej pamieci programu wiec pytam tutaj...
  • #9 687875
    h-doc
    Poziom 27  
    Posty: 1208
    Pomógł: 57
    Ocena: 21
    Niestety, programu nie da się pobierać z pamięci szeregowej. Chyba, że tak jak pisałem wcześniej - przy pomocy boot loadera.
  • #10 687962
    JarGol
    Poziom 14  
    Posty: 175
    Pomógł: 3
    Ocena: 7
    w nocie aplikacyjnej do 80c552 pisze:
    8k*8 ROM expandable externally to 64k bytesz

    zrozumialem ze ten procek zawiera 8k pamieci programu, ale czy jest to pamiec flash? chyba tak skoro ma w nazwie c.., jaki programator w takim razie obsluguje te procki - chodzi o zaprogramowanie pamieci wewnetrznej... i po co istnieja moduly zewnetrznej, szeregowej pamieci eeprom np. PCF8582 jesli nie mozna jej wykorzystac jako pamiec programu??
  • #11 689008
    mzielin
    Poziom 22  
    Posty: 483
    Pomógł: 31
    Ocena: 16
    80C552 dawniej znaczyło, że procek ma 0 "zero" pamięci wewnętrznej. Natomiast 80552 była to wersja z ROM. Byc może coś się zmieniło. Dawno nie korzystałem z serii 51.
  • #12 701802
    genetix
    Poziom 24  
    Posty: 669
    Pomógł: 42
    jeśli Ci tak zależy na ściąganiu pamięci programu z zewnątrz to może AVR'em z BOOT-loaderem?
  • #13 702272
    kaldachar
    Poziom 14  
    Posty: 153
    Pomógł: 1
    Niestety takie rozwiązanie odpada . Będe musiał przerzucić software na 8051 . Ale to wymaga czasu :-) .


    Pozdrawiam
  • #14 702421
    r00cky
    Poziom 16  
    Posty: 186
    Pomógł: 5
    A podoba mnie sie to. Czy moze ktos napisac cos wiecej o bootloaderze lub podac jakies info z www. ( na jakiez jazaszie to dziala itp )
  • #15 703569
    BoskiDialer
    Poziom 34  
    Posty: 1530
    Pomógł: 353
    Ocena: 42
    Z tego co mi wiadomo do procesorów AVR (niektórych np 8515/8535/mega128) można podłączyć zewnętrzną pamięć RAM (do danych) i pamięć PROM (lub zamiennik jako pamięć programu).
    wykorzystuje się do tego porty PortA i PortC (o ile pamientam), pin AEN oraz RE/WR.
    Czemu niepodłączyć pamięci ram tak, aby odczyt programu powodował odczyt z pamięci ram, zapis do właściwego ramu by powodował zapis do tej samej pamięci i problem z głowy.
    Wtedy należy tylko uruhomić procesor w trybie programu wewnętrznego+zewnętrznego. wewnętrzny program by odczytał jakąś kość pamięci stałej oraz zapisał do ramu, potem nasptąpił by skok pod adres początku rozszeżonego programu. jedyny problem jaki by był to przerwania ale i to można obejść (w pamięci wewnętrznej podprogramy wykonujące skok do przestrzeni adresowej zewnętrznej pamięci).
  • #16 703605
    genetix
    Poziom 24  
    Posty: 669
    Pomógł: 42
    BoskiDialer napisał:
    Z tego co mi wiadomo do procesorów AVR (niektórych np 8515/8535/mega128) można podłączyć zewnętrzną pamięć RAM (do danych) i pamięć PROM (lub zamiennik jako pamięć programu).

    Więc powtarzam, że procesory AVR nie mają możliwości czytać programu z zewnątrz! Nie pozwala im na to ich architektura. Natomiast mogą same modyfikować własną pamięć FLASH, czyli same się programować. Jeśli koniecznie chcecie mieć RAM, to możecie kopiować z tego ramu przy pomocy bootloadera program do FLASHA i stamtąd go odpalać, ale to raczej nie ma większego sensu.

    :arrow: r00cky
    Bootloader został pomyślany do aplikacji do których nie ma łatwego i szybkiego dostępu w razie konieczności przeprogramowania. Tzn. część kodu (bootloader) jest "stała" i odpowiada za załadowanie właściwego programu do FLASH'a. Czyli np. taka budka telefoniczna może sama sobie ściąnąć oprogramowanie z centrali jeśli pojawi się nowsza wersja. I nie ma tu konieczności "objechania" całego miasta przez montera z workiem EPROM'ów. Po szczegóły odsyłam do Atmela.

    :arrow: kaldachar
    1. takie coś można zrobić z 8051 (mówię o programie w zewn. RAM)
    2. ten temat chyba był juz "mielony" na elektrodzie.
  • #17 703688
    kaldachar
    Poziom 14  
    Posty: 153
    Pomógł: 1
    Wiem o tym że taką rzecz można zrobić na 8051 :-) . Chiałem to samo zrobić na avr . Teraz już wiem że się nie da :-) To mi wystarczy .

    Pozdrawiam

Podsumowanie tematu

✨ Procesory AVR nie obsługują zewnętrznej pamięci programu ze względu na ich architekturę, która wymusza przechowywanie kodu w wewnętrznej pamięci FLASH. Możliwe jest podłączenie zewnętrznej pamięci SRAM jedynie do danych, nie do programu. Jako obejście stosuje się bootloader, który podczas startu systemu może wczytać program z zewnętrznej pamięci do wewnętrznej FLASH, jednak jest to rozwiązanie ograniczone i nie zawsze praktyczne. W przeciwieństwie do AVR, niektóre procesory z rodziny 8051 (np. 80C552) umożliwiają rozszerzenie pamięci programu zewnętrzną pamięcią, w tym pamięcią szeregową I2C, jednak program nie jest wykonywany bezpośrednio z tej pamięci, a jedynie ładowany do wewnętrznego SRAM. PIC17 to starsza rodzina procesorów, która również miała możliwość podłączenia zewnętrznej pamięci programu, ale jest to rozwiązanie przestarzałe. W przypadku AVR, porty takie jak PortA, PortC oraz sygnały AEN, RE/WR służą do podłączenia zewnętrznej pamięci danych, ale nie programu. Próby wykonania programu bezpośrednio z zewnętrznej pamięci SRAM są niemożliwe bez specjalnych mechanizmów, a utrata zasilania powoduje utratę danych w SRAM, co czyni takie rozwiązanie niepraktycznym.
Wygenerowane przez model językowy.
REKLAMA