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

Attiny 13 i zmienne, bascom avr, nie mogę użyć zmiennej.

gremlin2001 16 Cze 2009 20:02 3562 6
REKLAMA
  • #1 6664777
    gremlin2001
    Poziom 12  
    Witam

    Wlasnie pierwszy raz zainstalowalem bascoma avr (v. 1.11.9.1 demo) i jesli zadeklaruje na poczatku programu procesor : attiny13 to nie moge uzyc nawet 1 zmiennej tzn np program "ktory nic nie robi":

    $regfile = "attiny13.dat"                      'najpierw określamy typ proca
    $crystal = 1000000                   'z jakim taktowaniem będzie pracował
    
    
    Config Portb = Output                   'pprt b jako wyjścia
           Portb = &B0000000                'wszędzie stan spoczynkowy-0
        Dim A As Byte
       Do
    Loop 
    End
    

    Nie dziala, tzn przy kompilacji wyrzuca "Error 22, Out of SRAM space"

    Po zmianie na poczatku programu na np $regfile = "attiny2313.dat" wszystko jest ok, czy naprawde Attiny13 ma tak malo pamieci ze bascom nie moze zdefiniowac nawet 1 zmiennej?
    Pewnie cos zle robie lub moze cos trzeba zmienic w ustawieniach bascoma?

    Chcialm uzyc pozniej petli For .. Next ale do tego trzeba zdefioniowac choc jedna zmienna.


    Pozdrawiam
  • REKLAMA
  • REKLAMA
  • #3 6665369
    janbernat
    Poziom 38  
    $hwstack ustawiony domyślnie zajmuje Ci całą pamięć
  • REKLAMA
  • Pomocny post
    #4 6665386
    manekinen
    Poziom 29  
    Zadeklaruj ile i gdzie chcesz przydzielić pamięci. Przykładowo
    $hwstack = 32
    $swstack = 18
    $framesize = 8
    

    Połączenie ATTiny13 z bascomem to fatalne rozwiązanie, ale przy odrobinie samozaparcia da się coś zrobić. Z tymi ustawieniami udało mi się użyć 6 zmiennych, przy czym program w symulatorze i tak szedł w krzaki. Jak będziesz pisał to musisz unikać skoków do podprogramów, rób wszystko w pętlach do - loop.
  • REKLAMA
  • #5 6666583
    gremlin2001
    Poziom 12  
    Faktycznie po wpisaniu na poczatku:
    $hwstack = 32
    $swstack = 18
    $framesize = 8

    Dziala :), Dzieki

    Rozumiem ze tymi parametrami ograniczam ilosc pamieci przeznaczona na cos innego i te wartosci w bascomie ustawia sie experymentalnie, tzn w pewnym momencie beda za male przy tym procesorze....

    Pozdrawiam
  • #6 6669076
    ZbeeGin
    Poziom 39  
    Tych wartości nie ustala się eksperymentalnie. Nawet podałem na forum przepis co i jak... Szukać!

    $HWSTACK = 32 - jak nie używasz przerwań to możesz zmniejszyć nawet dwukrotnie. Pamiętaj tylko by nie używać zbyt dużo zagnieżdżonych odwołań GOSUB.
    $SWSTACK = 18 - jak nie ma poleceń CALL, SUB, FUNCTION, LOCAL to to taka wartość to marnotrawstwo RAM. W skrajnym przypadku można tu wstawić nawet 0. Proponuję jednak zostać przy 8.
    $FRAMESIZE = 8 - Ramka powinna mieć 24 bajty. Skoro jednak brak UARTu, a pinów też mało by podpiąć LCD to wartość 8 jest do przyjęcia. Chyba że wewnętrznie użyjesz do czegoś STR, VAL, itp.
  • #7 6669559
    manekinen
    Poziom 29  
    Kolego ja te wartości dobierałem właśnie eksperymentalnie, kierując się wynikami pracy symulatora i działania zbduowanego układu i są one dobrane do mojego indywidualnego przypadku. Przepis przepisem, to dobre ustawienia na początek, ale działanie programu w praktyce może wymagać zmian :)
REKLAMA