Co stoi na przeszkodzie na rozszerzeniu stosu na cały zakres pamięci? Teoretycznie nic, kwestia konfiguracji linkera np. ld dla pic32 od niedawna używa całą dostępną pozostalą pamięć na stos a deklaruje się tylko rezerwację minimum stosu. Pomimo to, jak już zauważyli szanowani przedpiścy, wrzucanie takich dużych tablic (szczególnie w ISR) to zazwyczaj...
Jeśli zmiana rozmiaru buforów powoduje że program przestaje działać oznacza to że prawdopodobnie kończy się pamięć na stosie. Kilka rozwiązań jest. 1. zwiększyć stos 2. zdefiniować bufory jako static albo zmienne globalne wtedy nie trafią na stos 3. jeżeli idea projektu na to pozwala podzielić odczyt na mniejsze paczki i zapisywać po trochu(używając...
Orientuje się ktoś czy sterownik SD3 ma pamięć usterek (stos usterek lub błędów) ? Pamiętam że są na nim diody sygnalizujące ostatnie/obecne zdarzenie, a jak z resztą?
Stos, pamięć, kto to wie? Raczej HAL-a nikt nie będzie debugował. Takie podmianki część plików stąd część nie wiadomo skąd - raczej nigdy nie działają. Zrób sobie projekt z Cube i zaimportuj. Nie sądze abyś miał problemy. Albo napisz sobie to samo na rejestrach i zobacz. Praca na 10 minut.
Witam. Ten uC posiada tylko 512 bajtów SRAM. Jest to niestety niezbyt wielka ilość. Najprawdopodobniej wykorzystujesz pamięć w pełni i dlatego program się sypie. Zwróć uwagę na to, że zmienne, tablice i ciągi deklarowane w programie umieszczane są właśnie w pamięci ram, do tego jeszcze skompilowany program używa pamięci jako stosu. Im więcej zagłębień...
Witam E i F w instrukcjach LDMFD, LDMED itd.. wzieło się od Empty Stack - wierzchołek stosu wskazuje pierwszą nieużywaną komórke pamięci (stosu) Full Stack - wierzchołek stosu wskazuje ostatnią używaną komórkę pamięci (stosu) czyli łopatologicznie tą która była jako ostatnia zapisana pozdrawiam:D
Przepełnienie stosu często jest skutkiem rekurencyjnego wywołania funkcji (gdzie pamięć stosu kończy się zanim dojdzie do warunku kończącego rekurencję). Zakładam, że korzystasz z rekurencyjnego algorytmu do liczenia NWD. Zastosuj inny.
Czy ta funkcja zwraca pozostałą dostępną pamięć dla stosu i sterty? Pozostałą, dostępną pamięć dla sterty. Natomiast ESP.getFreeContStack() zwraca dostępną pamięć dla stosu (tylko dla wywołań z Arduino Core). Dodano po 53 muszę jakiś stały rozmiar tablicy choćby zawyżony podać w takiej formie. A co się stanie, kiedy WiFi.scanNetworks() zwróci wartość...
WWDG -> watchdog? Ze znakiem zapytania, bo rzadko piszę na STM, to nie znam wszystkiego na pamięć. Na stosie nie widzę hard fault-a.
CodeVision nawet w tej wersji demo (ograniczenie do 2kB kodu) sprawdza stos i pamięć tak RAM jak i EEPROM. Poza tym można wielkość stosu sobei deklarować. Więc jesli nie wiesz w czym rzecz po próbuj tego kompilatora. Ale niestety on nie jest za darmo w pełnej wersji.
w PIC masz w pełni sprzętowy stos i nia ma do niego dostępu w sposób programowy. Ma stały rozmiar (oddzielna pamięć w procesorze), więc nie da sie go zmienić programowo. Nie znam microbasic'a, ale ten pewnie realizuje stos programowy, więc należałoby zasięgnąć porady dokumentacji tego programu, by się dowiedzieć, czy jest to możliwe.
Taki procek (i pamięć) był stos. w otc ROYAL HCM 3710 (sch. jest na elektrodzie).
Skrypt linkera z Cube'a "działa" tak, że na początku pamięci ram ląduje sekcja data (zmienne inicjalizowane przy starcie programu - lokalne statyczne i globalne), potem jest bss (zmienne zerowane przy starcie programu - nie inicjalizowane statyczne i globalne). Następny kawałek to _user_heap_stack - czyli sterta i stos "w jednym". Rozmiar data i bss...
(at)lycon5 Zmień ustawienia fusebitu M103C - MCU jest sprzedawany z zaprogramowanym fusebitem, co zmienia działanie na tryb kompatybilności z ATMega103 - w efekcie stos jest ustawiany na nieistniejącą pamięć RAM jeśli używasz M64.
zamiast pisać xCALL ... / RET można napisać xJMP ... działa tak samo, a wykonuje się szybciej, oszczędza pamięć i stos
Hmmm...dziwne, ale błąd zniknął. Teraz czy dam =0, czy średnik, czy nazwa bufora - jest OK. Tak powinno być od razu. Myślisz, że błąd nadal się ukrywa? Kombinowałem trochę z dodawaniem kilku (parzystych i nieparzystych ilości) zmiennych do RAM'u, ale nie potrafię zmusić programu, żeby błąd się pojawił. Program zajmuje ok 30kB flash i trochę ponad 8kB...
Mam kila pytań dotyczącej Atmegi 64: 1 Czy dobrze ustawiłem segment deklaracji .INCLUDE "m64def.inc" na scalaku pisze Atmega64 16AU ? 2 Do czego jest pamięć Extended I/0 ? 3 Czy dobrze ustawiłem adres na dane .DSEG ;PAMIĘĆ DANYCH .ORG 0x0100 4 Na symulatorze AVR studio za uwarzyłem gdy zainicjuje stos to część zapisu powstaje w pamięci Extended I/0...
Czyli tak: aby wypełnić jakimiś ustalonymi wartościami całą pamięć RAM muszę to zrobić przed sekcją .init Ściągnij sobie darmowe przykłady do książki "Język C dla mikrokontrolerów AVR..." - II wydanie. Tam masz katalog AlokacjaPamieci, a w nim projekt StackChecker, który robi dokładnie to co potrzebujesz - czyli sprawdza ile pamięci zjada stos i sterta....
Bo też stosu w AVR zazwyczaj się nie zmienia. Domyślnie biblioteka AVRlibc i kod startowy umieszczają go na końcu SRAM, stos rośnie w dół i dopóki go nie przepełnisz nie ma problemu. Można zmienić jego lokalizację (opisałem to w książce), ale w 99% przypadków jest to niepotrzebne. W praktyce położenie stosu (a raczej innych segmentów pamięci, bo ze...
Ile masz pamięci i jak duży jest stos? To:[syntax=c]FILINFO Info[1000];[/syntax]jest proszenie się o kłopoty. Wiesz ile pamięci (na stosie!) zajmuje ta tablica?
Jeśli parametry przekazywane są przez stos, to w czym problem? Ładujesz tylko te parametry, które są Ci aktualnie potrzebne. Jeśli byś miał więcej zmiennych lokalnych, to przydzielasz sobie pamięć ze stosu. Zawsze rejestrów może braknąć, wtedy trzeba posłużyć się pamięcią. Dalszą część postu mam problem zrozumieć.
Do czego używać tą pamięć? Stos czy jakieś zmienne. Kod tylko w SRAM1 (nie do końca, sprawdź wypowiedź kolegi Freddie Chopin niżej), dane mogą być gdziekolwiek.
Raczej za długa. ATMega8 ma 1kB RAM. A Ty do niego ładujesz dwie wielkie tablice: FontTable[97][8] czyli 776B napis[161] czyli 161B razem: 937B tylko na te dwie tablice!!!. Zostaje 87B na pozostałe zmienne i stos. Jeżeli dobrze pamiętam stos w ATMegach zajmuje pamięć od "góry" więc pewnie nadpisuje ci tablice napis. A z tego co widzę to jeszcze w programie...
(at)jari17 Oszacowanie ilości potrzebnej pamięci w nietrywialnych projektach jest bardzo trudne. Chodzi tutaj zarówno o pamięć FLASH oraz RAM. Z tą drugą jest gorzej ze względu na to, że nie ma pewnego sposobu na oszacowanie ilości pamięci potrzebnej na stos. Jeżeli do tego dochodzi jakiś RTOS to zapotrzebowanie na pamięć RAM rośnie znacznie wraz z...
W raporcie wykorzystania RAM kompilator nie uwzględnia zajęcia pamięci przez stos (bo jest dymaiczny), a ten jednak gdzieś się musi zmieścić.
czyli nie używam tego jednorazowo a te 20 bajtów wolę przeznaczyć na coś innego. Pamięć na stosie, zwana type auto, właśnie ma takie cechy. Po powrocie z funkcji (np wysłaniu ramki) wraca. użyj innego, z dowolnym formatowaniem. Opcja -D dla gcc. Popieram oboma rękami, ustawić w skrypcie kompilującym tak, aby było idealnie dostosowane. Żadnych niechcianych...
W C sprawa wygląda tak samo .... No tu kolega troszkę przesadził chyba? ;) .... w C sprawa nie wygląda tak samo chociażby z uwagi na to, że byle makro ISR() nie odkłada i zdejmuje ze stosu absolutnie wszystkich rejestrów procesora co standardowo robi Bascom. A takich kwiatków jest znacznie więcej niestety :( tylko że kompilator C nie sygnalizuje błędu....
Najpewniej jest zapełnić pamięć w obszarze stosu jakąś jedną wartością i sprawdzać od końca dokąd stos ją wykorzystał. Prostszą metodą ale też gorszą jest sprawdzanie adresu SP ale na tym można się nieźle przejechać.
Przykłady często pokazują "jak" używać API, ale nie "kiedy"; w dodatku są tak proste (jak to przykłady) że użycie danego API nie jest potrzebne. Pule to zwyczajne alokatory pamięci. Używa się ich gdy planuje się alokację oraz zwalnianie pamięci. Dwa trochę sztuczne przykłady: - aplikacja z wątkami tworzonymi przy starcie i nie kończącymi się - pamięć...
Atmega128 - domyślnie sprzedawany z zaprogramowanym fusebitem ustawiającym tryb kompatybilności z m103 (bit m103c w efuse). To powoduje, że pamięć ram jest od końca ucięta (o 256 bajtów), a więc spód stosu jest uszkodzony. Wywołanie działa ok, ale powrót powoduje błędy (brak poprawnego adresu powrotu na stosie). Musisz zmienić ten bit w fusebitach,...
ATMega644 ma dwa razy większą pamięć niż ATMega32. A stos narasta od końca pamięci w dół. I pewnie w końcu wchodzi w dane. A sprawdzić to trudno.
Pierwsza opcja to oczywiście zdefiniowanie NAPRAWDĘ DUŻEGO stosu, ale to średnie rozwiązanie jak wiadomo [; Do rozbudowanej aplikacji na ARMa myślę że należy liczyć minimum 1kB, jeśli używa się jakichś potwornych funkcji standardowych (printf!) i to głęboko to lepiej zaopatrzyć się w 2kB (o apetycie tych funkcji na pamięć pisałem ostatnio http://www.elektroda.pl/rtvforum/topic13...
Układ działa. Na EPROM-ie znajduje się prosta implementacja przykładu blink, korzystająca z osobnej funkcji opóźniającej. Czyli pamięć RAM i stos także działają. Ktoś może wie coś na temat jakiejś prostej implementacji BASIC-a, którą dałoby się dostosować do uruchomienia na takich amatorskich konstrukcjach? A co do UPD7220, to widzę wtedy jedną aukcję...
Nie bardzo znam się na tego typu pamięciach więc mam takie pytanie Gdzie to kupić, czym można zastąpić i czy trzeba wstępnie programować Ewentualnie może ktoś ma taką sprawną płytę. Programować tego nie trzeba, to zwykła pamięć ulotna działająca jako zewnętrzna pamięć procesora ('stos danych'). Zastąpić można inną pamięcią co ma 128M i ten sam rozstaw...
To co robisz jest absolutnie błędne. Nie wolno zwracać wskaźnika do zmiennych lokalnych - po wyjściu z twojej funkcji wskaźnik ten nie wskazuje na żaden poprawnie zaalokowany obszar pamięci. To co wcześniej zajmował twoj string będzie od razu nadpisane przez kolejne funkcje - wszystko przecież znajduje się na stosie. Jeśli chcesz zwracać wskaźnik na...
Czyli tak jak myslalem na począku heap to cała pamięć minus stos. Stosy (process i main) mam ustawione na 1024. Nie tworzę w programie żadnych dużych zmiennych mam tylko jedną globalna strukturę i jakieś pojedyncze zmienne Postawiłem natomiast breakpointa w tej funkcji sbrk i co ciekawe jako parametr size przekazywana jest do niej liczba 536870916 :O...
Część zmiennych może trafić do rejestrów, o nich nie ma sensu mówić. Zmienne lokalne przydzielane są na stosie, tak więc nie ma mowy o pozostawaniu zmiennych - wychodząc z funkcji wskaźnik stosu jest przywracany do wartości z przed wywołania. Przy kolejnym wywołaniu funkcji zwolniona pamięć zostanie przydzielona innej funkcji. Patrząc w debugerze wydawać...
Teoretycznie rozmiar stosu ograniczają - przestrzeń adresowa - dostępna pamięć Jednakże, raz jeszcze podkreślę, prawidłowo napisany program nie powinien wymagać rozmiaru stosu większego, niż domyślny (z reguły 1MB).
Pisząc w C tego nie wiesz i wiedzieć nie będziesz (chyba, że zajrzysz w wygenerowany przez kompilator kod assemblera - co swoją drogą jest czasami przydatne). Nie wiem jak daleko działa REGISTER, ale prawdopodobnie kompilator patrzy bardziej na to jak na mocną sugestię niż 100% wymuszenie, bo co by zrobił gdybyś zrobił 20 zmiennych int jako REGISTER?...
No i następne pytanie - jak przetestować obszar pamięci na stos ? Przecież jak coś tam zapiszemy to tester pójdzie w maliny :)
Stos w mikrokontrolerach AVR "rośnie w dół" czyli minimalną wartość stosu najlepiej ustawić na koncu pamięci RAM. Co to znaczy? Może raczej początek stosu umieścić na końcu pamięci RAM?
Stos mi się nie przepełnia - jestem o tym przekonany. Jesteś tylko przekonany, czy pewien? ;-) Właśnie analizuję wygenerowany kod asemblera (plik *.lss) i chyba jestem na tropie... points[67].x=16+CHAR12_X_OFFSET;... 1afc:88 e8 ldir24, 0x88; 136 1afe:90 e0 ldir25, 0x00; 0 1b00:90 93 40 04 sts0x0440,...
Przy starcie mikrokontrolera pamięć CCM jest wyłączona. Należy wystartować mikrokrontroler ze stosem w obszarze SRAM1, włączyć pamięć CCM, RCC->AHB1ENR |= RCC_AHB1ENR_CCMDATARAMEN; a następnie przestawić Stack Pointer do pamięci CCM;
Hmm.. Nie mogę sobie przypomnieć, ale niedawno widziałem na allegro uC na rdzeniu '51 z gotowym zaimplementowanym i zapisanym w pamięci ROM stosem TCP/IP. Jeśli by Cię to interesowało i jak się pojawi ponownie, albo sobie przypomnę jego symbol to dam znać.
Z kodu wynika pewna ciekawa rzecz... Otóż z tego co widzę stos znajduje się... w środku sekcji .bss - nie wiem czy to normalne, ale nie sądzę... 4\/3!!
Sprawdź jeszcze pamięć zdarzeń, podejrzewam że te piknięcia to restarty centrali. Myślę że masz uszkodzoną pamięć na płycie centrali.
Czy w takim razie jeżeli jakieś zadanie alokuje dynamicznie pamięć to ona również pochodzi z puli, której rozmiar jest ograniczony wartością stosu zadania? I druga sprawa, czy w takim razie stos, którego rozmiar ustawiamy w pliku startup jest wykorzystywany jedynie przez system?
Racja _vStackTop = __top_RamLoc32 - 0 , fakt namieszałem ale teraz to ja już nie kumam. Podstawiam prawidłową wartość _vStackTop = (0x10000000 + 0x8000) - 0 = 0x10008000 Patrząc na dołączona tabelkę stos zajmie pamięć od 0x1000 7FFF do 0x1000 0000 ? Czyli aż 32 KB na stos ? http://obrazki.elektroda.pl/7767364600_1...
no dobra a czy z jednej procedury mozna wywolac druga procedure ? Oczywiście, że można wywoływać - można wywoływać dowolnie dopóki pamięci na stos wystarczy. bo tutaj wyglada to tak ze to jest menu wielopoziomowe i z tej drugiej wrocic jakos do pierwszej Gdy skończy się wykonywać ta druga to wróci program do pierwszej.
(at)R-MIK, krzysssztof - zarówno Keil jak i SDCC dla C51 mają określone standardy umiejscowienia określonych danych w określonych rodzajach pamięci. Model pamięci SMALL oznacza, że dane, stos itp. będą trzymane w pierwszych 128B pamięci, czyli także tam gdzie 4 zestawy rejestrów oraz SFR. I trzeba się z tym liczyć nawet jeśli pamięć "zewnętrzna" jest...
A problemem nie jest przypadkiem nie tyle pamięć flash (bo tu BASCOM nie powinien dopuścić do nadpisania jakichś sektorów FLASH'a) co pamięć RAM? Czy przypadkiem stos i inne funkcje nie kolidują ze zmiennymi globalnymi i dlatego wszystko się sypie, bo nadpisuje się RAM?
To zależy, co masz na myśli mówiąc regulować. Standardowo cała dostępna pamięć jest przeznaczona na stos, zmienne statyczne i zmienne dynamiczne. Tzn. na początku pamięci jest obszar zmiennych statycznych, potem ewentualnie obszar zmiennych dynamicznych, który rośnie "w górę". Na końcu jest stos, który rośnie od końca pamięci "w dół". Jeżeli pamieci...
Kod wygenerowany przez kompilator wykonuje na wejściu do procedury jedną operację przydzielającą ze stosu pamięć na wszystkie zmienne lokalne automatyczne (takie, które nie są deklarowane jako static), w tym są zmienne, których w programie w C nie ma - nie zawsze są potrzebne, ale pewnie kompilator zawsze generuje instrukcję, czy sekwencję instrukcji,...
Powinieneś sobie sam "ręcznie" ustawić takie parametry jak: $hwstack = 32 $swstack = 8 $framesize = 16 bo to od nich m.inn zależy ile Bascom będzie zjadał pamięci RAM na Stos, ramkę itp
A jak ominiesz instrukcje Push/Pop w sposób programowy? Ich realizacja programowa trwała by wtedy jeszcze dłużej niż 3 cykle. To bez sensu. Prościej po prostu nie przesuwać stosu na pamięć zewnętrzną. Wtedy mimo że pamięć zewnętrzna jest, i mimo że jest obsługiwana sprzętowo, VUSB będzie działało zupełnie dobrze.
Czy rady pomogły? Masz jak koledzy sugerują znaczne zużycie stosu jak na mikroprocesor. Funkcje używają struktur i buforów lokalnych na stosie, jest to na pewno w jakimś sensie "eleganckie", gdyby funkcje były wielokrotnie (współbieżnie) to zapewni dobre działanie. Przy dobrej kontroli programu takie współbieżne wywołanie ma nie wystąpić. Jakby poprzedzić...
Jest to serwer HTTP, oparty na uC. Jest to dość skomplikowana procedura. 1. Zmontować układ ATMEGA128 + RTL8019AS + pamięć + dodatki 2. Zaimplementować stos IP 3. Zaimplementować protokół HTTP Jeżeli nie masz dużego doświadczenia z uC..... odradzam.
Sprawdzałem kod wiele razy. Jest to program gadający z modułem GSM więc cała masa operacji na stringach, mnóstwo miejsc, gdzie można popsuć program. Raczej wycieków pamięci nie mam więc pomyślałem że może to wina zasilania/ taktowania skoro jestem na granicy (11MHz/ 2.8V)... Z mojego doświadczenia wiem, że przy operacjach na łańcuchach trzeba uważać,...
Witam, przejrzałem tematy od STM32F3 odnośnie migracji z szablonu od Frediego z STM32F4 do F3 ale nie udało mi się zamrugać diodami. Co zrobiłem: # ściągnąłem źródła ze strony Frediego, # w makefile zmieniłem Global_defs # w linkerze obszary pamięci + pamięć na stos # w projekcie dodałem plik stm32f30x.h # zakomentowałem ustawianie PLL projekt się kompiluje...
1.Chyba nie korzystasz z modemu? 3.75MB to rzeczywiście mega objętość :) 2.No nie wiem- SAMy są między sobą kompatybilne, i niezależnie jakiego używa, jeśli karte ma podłączoną do SPI0, NPCS_1, to jedyne co może sprawić problem, to pamięć RAM i stos- w projekcie rzeczywiście dość optymistycznie ustawione jest 64KB. 3.Przekonałeś mnie. Umieszcze same...
Przełączenie się na PRIGROUP modyfikuje zachowanie się kontrolera NVIC. Masz 16 przerwań czyli 4 bity konfiguracyjne, np. dzielisz to na 4 grupy czyli dwa bity będą tworzyć grupę, a dwa podgrupę. Są 4 grupy z 4 subpriorytetami. Teraz np. masz 4 UARTY i ich przerwaniom nadajesz priorytety z tej samej grupy ale z innymi subpriorytetami. Nadchodzi przerwanie...
W FB są static czyli dane które mają pamieć? Temp zapisuje się na stos, czyli po wyjściu z FC już się do niej nie odwołam? Temp ma pamięć tylko w obrębie FC?
Niedawno zrobiłem mały egzamin tej 'inteligencji', marnie wypadła ze znajomości avrów ;) (nie można zagnieździć bold w code, więc będzie rozlazłe) procesor avr ze stosem sprzetowym ChatGPT Procesory AVR, takie jak te z rodziny ATmega, są wyposażone w stos sprzętowy, który jest używany do zarządzania wywołaniami funkcji, przerwami oraz przechowywaniem...
Uff, ale narobiliście bałaganu ;-) Tak po chłopsku: volatile - obojętnie gdzie to tylko wskazówka dla kompilatora, aby nie optymalizować static ma 2 różne znaczenia w zależności gdzie jest użyte: 1. w funkcji - powoduje, że zmienna jest jak pisze atom1477 "nieulotna" czyli jej wartość jest zachowywana pomiędzy kolejnymi wywołaniami. Dlatego, że pamięć...
Tryb zgodności z ATMega103? Dlatego, że ona ma inaczej umieszczoną pamięć RAM, w efekcie stos jest ustawiony nieprawidłowo i zapewne każdy powrót z przerwania (instrukcja RET) kończy się skokiem pod adres 0xffff, skąd procesor realizuje zapewne nieudokumentowane instrukcje i leci aż do 0x0000, gdzie masz wektor RESET.
W main.c nie masz includa fifo.h. Dla bezpieczeństwa header guardy zamień na coś w stylu _FOO_H.
Kolego, ktoś mógł Ci sprzedać płytę z uszkodzoną pamięcią flash. Przez pewien czas wychodziły wadliwe płyty, które po jakimś czasie wychodziły ,,kwiatki. Odpal TS z kołków jeśli się da i spróbuj odczytać pamięć zdarzeń, czy nie występuję błąd pamięci flash, bład stosu pętli głownej...... W każdym razie sprawna płyta tak się nie zachowuje
Pamięć wewnętrzna 2KB - 1514B na ramkę, reszta na stos. Sekcję data, bss oraz opcjonalną stertę wyrzucić do zewnętrznego ramu, chociaż nie wiem na czym niby polega trudność w rzutowaniu wskaźnika - pamięć i wewnętrzna i zewnętrzna są dostępne w dokładnie ten sam sposób. Co do odczytywania przy odbiorze i składania przy nadawaniu można wykorzystać dwie...
co do uruchamiania programów z kart SD przez ATmegi wałkowaliśmy to tutaj http://www.elektroda.pl/rtvforum/topic29... I konkluzja była taka, że to raczej średnio trafiony pomysł. To co chcesz osiągnąć to dołożyć szybką, zewnętrzną pamięć masową do swojego AP, pamięć adresowaną jak NFS lub inny sieciowy system plików, tak? Czyli potrzebna jest...
A jak tam sprawa sie ma z fuse bitem atmegi103? Nie wiem czy on moze miec znaczenie ale lepiej go wylaczyc ;) Na pewno ten fusebit jest przyczyną - kod się wykonuje ponieważ pin jest konfigurowany jako wyjście, ale wywołania funkcji (waitms) powodują zawieszanie się lub reset, gdyż pamięć kończy się na adresie 0xFFF (m103) podczas gdy kompilator zakłada,...
Ponieważ analyzePulseFromIR() jest teraz powiązane z przerwaniem to taki program musi być krótki i nie wolno w nim wykonywać żadnych podprogramów inaczej wyłożymy ESP - skończy nam się stos a jest go raptem 8192 Faktycznie, domyślny rozmiar stosu dla wątku, w którym wykonuje się loop() wynosi 8192 i wartość ta jest ustawiona przez stałą ARDUINO_LOOP_STACK_SIZE...
Przykład działa poprawnie, przyczynę błędu podał już kol. (at)rajszym . Przyczyną jest nowy, sprytny kompilator. Otóż widzi on, że podana pętla wpisująca wartości 0xAB jest efektywnie odpowiednikiem funkcji memset i zamiast pracowicie robić to co mu nakazałeś (tak robiły kompilatory do momentu wydania książki i jeszcze potem przez jakiś czas), zamienia...
push i pop służą do odłożenia /zdjęcia ostatniego elementu Jeżeli chcesz dostać się w dowolny punkt stosu to jak zauważyłeś ponieważ stos jest częścią danych możesz odczytać go jak pamięć Jeżeli chodzi o odłożenie na stosie to tylko push automatycznie zmienia wskaźnik stosu i zwykłe odłożenie danych nie zmieni wskaźnika, o który trzeba zadbać ręcznie....
Witam Szanownych kolegów. Mam problem z Megą. Zasilam przez 78L05 z baterii9V. Używam 1wire,I2C,Timer2,ADC1. Jeśli konfiguruję je wszystkie w programie to po kilku sekundach mniej więcej w tym samym miejscu resetuje się. Jeśli nie skonfiguruję jednego z: ADC, 1wire,Timer2 to wszystko śmiga ale oprócz oczywiście tego usuniętego urządzenia. Reset objawia...
"Początkowo program działa poprawnie" to nie dziwne, że na początku działa ci poprawnie a potem leci w przysłowiowe "maliny" nie potrafisz kolego jeszcze dobrze się posługiwać przerwaniami i samą konstrukcją programu - masz tak namieszane że szok w zasadzie czytając sam program to nie wiadomo dokładnie co chciałeś uzyskać pierwsza wskazówka - najpierw...
Ok. Płyta czterowarstwowa w stosie sig-Gnd-Power-sig - program KIcad. Żeby ruszyć dalej musze wybrać pamięci. Pytanie: czy pamięci powyżej i sposób bootowania będzie dobry - chodzi o mozliwości. Do tego jaka pamięć zazwyczaj stosujecie do zapisywania danych podręcznych typu głośność, jasność wyświetlacza itd. która działa po wyłączeniu zasilania. Flash...
d) To, ile jest zużytej pamięci RAM w sprzyjających warunkach można policzyć. Ogólnie pamięć wewnętrzna jest rozlokowana jakoś tak: data - bss - wolne - stos teoretycznie można pobrać adres pierwszej wolnej komórki, wierzchołek stosu i można policzyć ile pamięci jest wolne - aczkolwiek 'wolne' to pojęcie względne - wywołanie funkcji, przerwań etc będzie...
Chcę móc dynamicznie alokować pamięć, której rozmiar jest z góry znany, a nie ograniczony stosem. A mółbyś tę myśl rozwinąć? Czy stos ma wielkosć nieznaną bo nie rozumiem.
1. Dlaczego złącze USB jest podłączone do PA2 i PA3 zamiast PD6 i PD7? Chcesz robić programową obsługę USB, mając sprzętowy interfejs? 2. Wyjścia driverów portów szeregowych nie są typu OC, więc przynajmniej daj tam szeregowe rezystory, aby nie robić zwarć. 3. Brak rezystorów zamykających pętle po stronie 'zewnętrznej' na portach szeregowych. Z tego...
Kolego. co do sprawdzenia wielkości stosu to może być problem gdyż generalnie na stos jest przeznaczane tyle ile nie zostało wykorzystane na zmienne. co do sprawdzenia przepełnienia.... Oceń ile potrzeba na stos. napisz funkcję która w miejscu maksymalnego szczytu stosu ustawia znacznik. Napisz funkcję która w przerwaniu zegara sprawdza czy znacznik...
Zaczynając od końca - pamięć RAM jest jedna, i stos się też tam musi zmieścić. Dlatego jeżeli dane zajmują 120 bajtów, to niestety przy przerwaniach bedą na pewno "zajeżdżane" przez stos. I to najprawdopodobniej tłumaczy, dlaczego zmienna czas_a jest zwiększana zawsze - po prostu do zmiennej flagi trafiaja dane ze stosu. Przy okazji - nie włączaj iotn2313.h...
1. Nie wiem czy kompilator jest na tyle inteligentny aby przed tym skokiem do START: posprzątać stos. ....hmm a po co sprzątać ten stos? jeśli programowo zainicjalizujemy wskaźnik stosu to program cokolwiek odkładając na stos robi to kolecjno, licząc od wartości zainicjalizowanej... i nie obchodzi go czy tam są jakieś śmieci czy nie... liczy sie tylko...
Zawartość pamięci RAM w Adret 740 nie jest krytyczna. Przy braku poprawnych danych w RAM przy włączaniu generator ustawia się domyślnie na 300 MHz, -129,9 dBm, modulacja wyłączona, dewiacja 0 kHz, głębokość modulacji AM 0%, brak sygnału modulującego. Ale nic się nie blokuje. Sprawdzone z pamięcią bez baterii, sprawdzone też przez wymianę pamięci na...
Na moją pamięć , jak nie jest gorący, jest sprawny. Nie biorę, niestety, jego wieku i wpływu na sprawność. Więc podmiana na inny wskazana. To są składane w środku płytki. Stąd jego nazwa stos prostowniczy selenowy.
Nie ma takiej zależności. Jeśli nie korzystasz z dynamicznej alokacji pamięci to możesz to bardzo zgrubnie oszacować po ilości zmiennych automatycznych (lokalnych), a szczególnie tablic. To co czyni takie oszacowanie szczególnie trudnym to określenie stopnia zagnieżdżenia funkcji - bo to zajmuje sporo pamięci na stosie. A zależy to od ilości przerwań,...
Faktycznie uint8_t hexek Nawet jeśli to pierwsze "działało", to tylko na zasadzie przypadku. A może mi ktoś wytłumaczyć czemu uint16_t Pamięć przeznaczona na stos nie jest workiem bez dna i ma jednak jakieś granice. Fajnie się tak pisze - 3 znaczki i już super - tyle że ta tablica zajmuje prawie 1kB, a bardzo często (np. w moich przykładowych projektach)...
Jeśli tak, to być może przekroczyłeś rozmiar pamięci/stosu. Sprawdź, czy nie masz jakichś dużych danych lokalnych w procedurach (np. łańcuchy tekstowe, bufory do konwersji danych). Odchudź program i sprawdź, czy pomogło.
Nie, to różnica pomiędzy STACK_SIZE a sumą pozostałych stosów. Inaczej miałbyś stos o ujemnym rozmiarze. W moim pliku lpc2148-rom.ld stos jest zdefiniowany zaraz za sekcją bss, jednak nie jest on na końcu pamięci RAM, więc każde przepełnienie stosu będzie kasować zmienne niezainicjowane, czy nie lepiej dla ochrony ustawić stos na koniec pamięci RAM?...
Może sprecyzujmy - rekurencja w sensie wywołania redundantnego. Bo taka generuje problemy ze stosem oraz bardzo znacząco negatywnie wpływa na wydajność. Jeśli coś można zastąpić iteracją należy to uczynić. Może sam akurat źle zrozumiałem wypowiedź poprzednika, bo rekurencja w matematyce i rekurencję w programowaniu nieco inaczej się rozumie :) Oczywiście...
Bez modułu radiowego ten program nawet by się nie uruchomił. To nie zakłócenia. Sprawdzałem oscyloskopem. Szum na poziomie kilkudziesięciu mV nie może zakłócić pracy urządzenia cyfrowego. Wszystko wskazuje na problem w kodzie. Wygląda na to, że w szumie tworzonym przez jakieś nieznane urządzenie w kanale na jakim pracuje CC1101 czasem udaje się mu znaleźć...
Zdecydowanie tak to nie działa. Pamięć flash jest w zasadzie pamięcią typu "tylko do odczytu", zatem nie bardzo nadaje się do przechowywania bieżących wyników obliczeń. To, że można przeprogramować jej zawartość, czasem nawet z programu, to inna sprawa. Natomiast zmienne programu lądują z zasady w pamięci RAM (w mikrokontrolerach zwykle SRAM, nie ma...
W dosyć przystępnych cenach (około 350 złotych) dostępne są w Polsce różne moduły z Linuxem (np. Propox oferuje MMnet1002). Nie jest to wielki wydatek, a przynajmniej będziesz wiedział, czy jest to opcja wystarczająca, czy jednak musisz szukać czegoś większego. Jeśli chodzi o samo szacowanie wymaganej mocy obliczeniowej to na pewno jest to bardzo trudne...
Konfiguracja jest b.stara z 2012r. Po prostu planuję rozbudowę i wymianę płyty i procka. 3770k/ 16GbRAM DDR3(4x8) 2x g-skill i 2x corsair/ Asus p8z77v-pro/ HDD Samsung960pro Monitor EIZO S2433W 1920x1200 długi Prime95 nie wykazuje błędów więc raczej podsystem pamięć procesor chyba OK Mój niepokój budzi mała w stos do karty rozdzielczość i z tym związany...
Tu masz coś o sbrk(), ale dla innego skryptu linkera, więc nieszczególnie Ci pomoże. Twój jednak wygląda mi na dobry (pozatym, że heap_ptr można zainicjalizować normalnie, bez tego if() ). Jak chcesz uciszyć warningi o nieużywanej zmiennej, to wystarczy na początku funkcji zrobić - _s_r = _s_r i po problemie. http://www.elektroda.pl/rtvforum/topic14...
Witam, Czy istnieje możliwość stworzenia sekcji NOLOAD w linkerze wypełniającej pozostałą, dostępną pamięć (ie. bez precyzowania ile to konkretnie ma być). Chodzi mi o coś ala stos tylko bez podawania konkretnej wartości - chcę aby sekcja wypełniała pamięć od momentu jej umieszczenia (czyli np. po bss) az do końca, oraz udostępniała dane o swoim położeniu...
Asembler jest raczej trudny do uniknięcia tam, gdzie potrzebna konstrukcja kodu nie da się napisać np. w C. Np. funkcja, która dostaje argument w rejestrze EAX. Ee... serio? W Delphi nie ma problemu z tym: https://obrazki.elektroda.pl/7016129500_... Przy czym Delphi domyślnie używa przekazywania przez rejestr. W przypadku cdecl (czyli...
Bo nie przekazuj w Bascomie stringów jako stałych "byval" to marnotrastwo pamięci , stosu itp. Najlepiej w ogóle jak doszedłem z doświadczenia jak najmniej parametrów przekazywać jako "byval" lepiej jak już to poprzez referencje "byref" - a najmniej pamięci ci zje jak będziesz posługiwał się zmiennymi globalnymi. Tego zjawiska doświadczych, gdy program...
Dzisiaj kolejna Integra 32 do kolekcji. Wpisy w zdarzeniach m.in.: średnio 2x/godz Restart Centrali, Pamięć RAM zapełniona w 50%. Poza zdarzeniami, wyświetlanie na panelu: Restart panela, Błąd stosu pętli głównej, czasami krzaki na panelu, które znikają po odpięciu zasilań. Czasami w panelu gaśnie podświetlenie i nie reaguje na przyciski. Wg sąsiadów...
Luźne przemyślenia pod rozwagę: -procesor wchodząc do obsługi przerwania stanu ABORT (tryb ARM) podstawia shadow-registers w tym r13 który jest wskaźnikiem stosu używanym w czasie obsługi tego typu wyjątku. W twoim przypadku skoro chcesz wywoływać w procedurze obsługi funkcje do obsługi LCD prawie na pewno trzeba zarezerwować specjalny obszar stosu...
Kombinowanie z pamięcią nic Ci nie da, teoretycznie możesz programowo zwiększyć zegar procesora graficznego Nie może. I dobrze. Bez ingerencji we flash bios laptopa i płytę nie da się z tą "kartą graficzną" nic zrobić. Na całe szczęście. Bo toto już w nominalnych ustawieniach grzeje się jak wszetecznica na stosie.
deklaracja stosu analiza stosu ramka stosu
ładowarka długo ładować bateria falownik prąd silnika samsung sterowniki win10
piotr2608 electrolux zasilanie świetlówki
Ustawienie rozrządu w silniku Nissan YD25 Silnik zaburtowy szarpie na biegu jałowym - przyczyny i rozwiązania