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

Ograniczenia pamięciowe Atmega16

bodziolak 17 Lut 2011 09:03 1086 6
REKLAMA
  • #1 9162895
    bodziolak
    Poziom 2  
    Witam.

    Mam taki problem. Zaprojektowałem układ, w którym Atmega16 obsługuje 3 urządzenia poprzez magistralę i2c, wyświetlacz LCD 2x40, RS232 oraz klawiaturkę membranową 4x4. Wszystko śmiga jak należy. Problem pojawia się tylko, gdy chcę dołożyć obsługę karty SD. Po samym dołączeniu potrzebnych kodów umożliwiających komunikację z kartą SD zajęte jest 96% pamięci flash atmegi i nie wiem dlaczego pojawiają się krzaki na wyświetlaczu, rs nie działa jak należy i podczas komunikacji i2c również występują błędy. Gdy odłączę pliki wszystko wraca do normy.
    Czy winą może być nadmierne przeciążenie atmegi? Czy błędy te mogą być spowodowane zbyt małym rozmiarem pamięci SRAM? Dodam, że oprócz samego dołączenia plików NIE wprowadzam żadnych zmian w kodzie. Czy zastosowanie Atmega32 mogłoby rozwiązać problem? Bardzo proszę o pomoc.

    Z góry dziękuję.
  • REKLAMA
  • #2 9162957
    _Robak_
    Poziom 33  
    Jeśli problemem jest brak pamięci, a z tego co piszesz raczej tak jest, to zamiana na ATmege32 rozwiąże problem. Pamiętaj że nie możesz nigdy zapchać całej pamięci RAM bo program zawsze odkłada na stosie potrzebne dane, no chyba że piszesz w asm;)
  • REKLAMA
  • #3 9163033
    asembler
    Poziom 32  
    Na 100 nie piszesz w ASM a pisząc w innym nieokreslonym jezyku podejrzewam że na 'B' postraj sie tak przerobić program aby uzywał jak najmniej RAM. Jak to zrobić to nie wiem może zmienne lokalne, może zmiana typu zmiennych. Zobacz ile same poprogramy na SD (prawdopodobnie >512) potrzebują RAM-u a bedzie wiedział czy uda ci się swoj program tak z optymalizować aby ciskał sie w Atmedze 16, A jak nie to jak wyżej atmega32
  • #4 9163067
    bodziolak
    Poziom 2  
    Dzięki za pomoc. W takim razie będę próbował z ATmega32.
    Kod piszę w ANSI C.
  • REKLAMA
  • #5 9163090
    tmf
    VIP Zasłużony dla elektroda
    Jeśli piszesz w ANSI C to istotnie może być problem :) Przejdź na C z rozszerzeniami charakterystycznymi dla AVR to problem może zniknie i na ATMega16 - podpowiedź - używasz PROGMEM do umieszczenia stałych w pamięci FLASH?
  • REKLAMA
  • #6 9163088
    asembler
    Poziom 32  
    Około 31.6% postów byłoby mnie jakby w temacie był mus zaznaczyć język programu w klamerkach tak jak jak jest w ogłoszeniach [Kupie][Sprzedam].

    Moderator czyta?

    Ja oczywiscie będę miał zwolnienie?;-)

    Wystarczy jak przy broni masowego rażenia literki ABCN.
  • #7 9163972
    bodziolak
    Poziom 2  
    ATmega32 rozwiązała problem.

    Dzięki:)
REKLAMA