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 zmieścić program w 8KB pamięci flash mikrokontrolera AT90S8515?

VolvoX 06 Paź 2003 23:28 2028 7
REKLAMA
  • #1 351458
    VolvoX
    Poziom 11  
    Posty: 16
    oj moja przygoda z mikrokontrolerami sie dopiero zaczyna wiec przedemna wiele niejasnosci. a o to podstawowe:
    jak sie zmiescic w 8kb pamieci flash mikrokontrolera (np at90s8515), czy istnieje mozliwosc powiekszenia tej pamieci, a jak tak to w jaki sposob (typ pamieci) oraz jak to wszystko obslugiwac (przyklady w bascomie wystarcza w zupelnosci)
    wielkie dzieki za pomoc
  • REKLAMA
  • #2 351645
    Eagle
    Poziom 24  
    Posty: 536
    Pomógł: 57
    Ocena: 31
    odp:

    1. Pisać w ASM, pozostałe języki programowania skracają czas pisania kosztem wzrostu kodu wynikowego
    2. Nie są mi znane możliwości powiększenia tej pamięci, jedynym wyjściem jest kupno uC z większą pamięcią. Wnisek z tąd że brak zewnętrznej magistrali adresowej i danych. Gdyby sprawa dotyczyła RAM lub EEPROM możliwości jest wiele ale to nie pamięc programu.
  • REKLAMA
  • #3 351742
    h-doc
    Poziom 27  
    Posty: 1208
    Pomógł: 57
    Ocena: 21
    jeśli potrzebujesz większej ilości pamięci, to niestety - trzeba się zaopatrzyć w mikrokontroler obsługujący zewnętrzną pamięć danych. A wtedy ograniczenia są dużo mniejsze. Tak jak pisał Eagle - jeśli program jest duży - dobrze jest go napisać w asemblerze, chociaż dobre kompilatory C generują dosyć dobrze upakowany kod i w wielu przypadkach niewiele zyskasz pisząc w asemblerze. Nie wiem natomiast jak ma się sprawa z Bascomem.
    Czy pamięć programu będzie potrzebna tylko na program? Bo jeśli sporo miejsca zajmują np. stałe tablicowe, albo jakieś grafiki, sample itd. to można kombinować i umieścić te dane w zewnętrznej pamięci.
  • #4 352795
    VolvoX
    Poziom 11  
    Posty: 16
    no dobra a ktore mikrokontrolery obsluguja zewnetrzna pamiec danych?
  • REKLAMA
  • #5 352801
    ACULA
    Poziom 34  
    Posty: 3005
    Pomógł: 105
    Ocena: 114
    istnieje coś takiego jak dokumentacja, ściągnij, sprawdź
    np 89c8252, 89c51 itd
  • #6 353072
    h-doc
    Poziom 27  
    Posty: 1208
    Pomógł: 57
    Ocena: 21
    Jeśli się decydujesz na zewnętrzną pamięć danych, to może lepiej wziąć kość typu ROMLess, czyli np. 80C31 lub 80C32 produkcji Intela lub Atmela. Są dosyć tanie (ok. 6 pln netto wg cennika TME), mają podwójny DPTR, trochę RAM-u i chodzą z zegarem do 40 MHz.
  • REKLAMA
  • #7 353078
    Tdv
    Poziom 34  
    Posty: 2237
    Pomógł: 150
    Ocena: 53
    Tutaj masz przegląd uC serii AVR:
    http://www.atmel.com/dyn/products/param_table.asp?family_id=607&OrderBy=1262&Direction=ASC

    Jak na mój gust 8k FLASH w 8515 to całkiem sporo... NIe wiem skąd te obawy, może wcześniej programowałeś pod Winzgroze... To nie to samo. AVR mają do 128kB FLASH i to już jest bardzo dużo (ATmega 128 kosztuje coś w okolicach 50 zetów)
  • #8 353103
    ACULA
    Poziom 34  
    Posty: 3005
    Pomógł: 105
    Ocena: 114
    musisz pamiętać że po zastosowaniu pamięci w najgorszym przypadku odpadnie z użycia pół procka, chyba że pokombinujesz
    jeśli masz aż tak rozbudowany system to może zrobić wieloprocesorowo, rozbić na poszczegółne moduły odpowiedzialne za konkretne zadania

    np klawiaturę można zrobić na małym atmelku który komunikowałby się z głównym na mniejszej liczbie połączeń itp

Podsumowanie tematu

✨ Aby zmieścić program w 8KB pamięci flash mikrokontrolera AT90S8515, zaleca się pisanie kodu w asemblerze, co pozwala na maksymalne zredukowanie rozmiaru kodu wynikowego. Kompilatory wysokiego poziomu, takie jak Bascom, generują zwykle większy kod, choć w niektórych przypadkach różnice mogą być niewielkie. Mikrokontroler AT90S8515 nie posiada możliwości powiększenia pamięci programu, gdyż nie obsługuje zewnętrznej magistrali adresowej i danych. W przypadku potrzeby większej pamięci programowej należy wybrać mikrokontroler z obsługą zewnętrznej pamięci, np. z rodziny 89C8252, 89C51 lub układy typu ROMLess, takie jak 80C31 lub 80C32 produkcji Intela lub Atmela. Mikrokontrolery AVR oferują do 128KB pamięci flash (np. ATmega128), co jest znacznym rozszerzeniem względem 8KB w AT90S8515. W przypadku dużych danych stałych, grafik czy próbek dźwiękowych można rozważyć umieszczenie ich w zewnętrznej pamięci danych. Przy rozbudowanych systemach warto rozważyć architekturę wieloprocesorową, dzieląc zadania na moduły komunikujące się ze sobą, co może zmniejszyć obciążenie pojedynczego mikrokontrolera.
Podsumowanie wygenerowane przez AI na podstawie treści dyskusji.
REKLAMA