Nic nie daje i w żaden sposób nie wpłynie. Różnica będzie dopiero wtedy gdy zostanie przekroczony rozmiar zadeklarowanych wartości. Wtedy po prostu program się wykrzyczy. Deklaruje się po prostu trochę więcej niż absolutne minimum. A gdy się ma dużo wolnej pamięci RAM to chyba nejlepiej zadeklarować jak najwięcej. Nie ma żadnego skutecznego sposobu...
[syntax=asm]00E51353 sub esp,0F0h [/syntax] Tutaj masz ustawiany rozmiar stosu na zmienne lokalne, dzieje się tak w każdej funkcji. Jest także ustawiana ramka stosu. Odnoszenie się do zmiennych odbywa się poprzez obliczanie ich pozycji względem wartości rejestru ebp. W linii (z włączonym "Show symbol names"): [syntax=asm]00E5136E mov dword ptr [i],2...
Zmień rozmiar stosów i ramki
Bo trochę zajmuje stos i ramka. I na zmienne zostaje mniej niż 128B pamięci. W C sprawa wygląda tak samo tylko że kompilator C nie sygnalizuje błędu.
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
krzyfn : Jeśli funkcja potrzebuje miejsce na zmienne lokalne, to zaraz po skopiowaniu ESP do EBP zmniejszasz ESP np o 16 - zostanie przydzielone 16 bajtów lub inaczej mówiąc 4 DWORD'y dostępne przez Dodano po 14 Co do przekazywania wskaźnika - nie wiem w czym problem. Wskaźnik to nic innego jak zmienna zawierająca adres. Tak więc musisz pobrać ze stosu...
Potrzebuje odpowiedzi na pytania : 1)Działanie przerwania pseudoniemaskowalnego i co to jest 2)Ramka stosu podczas przerwania 3)Układy peryferyjne kontrolera 68HC11 4)Struktura wew 68HC12
zebrac 50-100 broadcastow UDP po 150 bajtow w 50-100ms Ale w czym problem. Pogubiłem się. Uzgodniliśmy że to są obiekty o dość dużej bezwładności, a na pewno dotyczy to pomieszczeń biurowych, jeden pomiar na minutę w zupełności wystarczy, dla innych urządzeń niech będzie to kilka kilkanaście sekund. Tyle masz czasu na reakcję. Chyba nie chcesz powiedzieć,...
Zmienne lokalne są alokowane na stosie (w tzw. ramce stosu) w momencie wejścia do funkcji. Wtedy też odbywa się ich inicjalizacja - u Ciebie na wartość "...". A teraz zastanów się, w jaki sposób wartość wpisana do Sc przez strcpy pod WM_COMMAND mogłaby zostać wykorzystana pod WM_PAINT? W WndProc jest tylko switch, który raz przelatuje od góry do dołu...
No właśnie w ogóle mało pisze ile chce czy też co chce zrobić a to jest ważniejsze niż ot takie tam zwiększanie ramki. Stos z tuxgraphics ma mocne ograniczenia i nadaje się do bardzo prostych zastosowań. Jeśli więc coś bardziej zaawansowanego robić to pewnie, że już lepszym byłby uIP albo i mocniejszy procek w ogóle.
ad. 2. W asmemblerze MC68k :], a co? jak dowolny, to dowolny :] (asm x86 nie znam za bardzo) Założenia: argument funkcji podawany jest przez stos (wskaźnik stosu - rejestr A7, stos rośnie w dół) Wartość (wskaźnik) zwracana jest w rejestrze D0. Reszta rejestrów pozostaje niezmieniona. Za obsługę stosu odpowiada funkcja wywołująca, więc po powrocie z...
mirekk36 : ad 1/ Kod zerujący sekcję bss oraz ładujący sekcję data znajduje się gdzieś w okolicach .init3. Niestety kod zerujący sekcję bss już zakłada, że r1 jest równy zero, a więc z formalnego punktu widzenia zerowanie musi znaleźć się w .init0. Ze względu na obecność kodu zerującego bss oraz ładującego data stałymi z pamięci flash, skok do main...
volatile stosowałbym w tym konkretnym przypadku (jak już wyjaśniłem) z powodów określonych w standardzie, ale nie tych, które zacytowałeś - w celu uniemożliwienia kompilatorowi usunięcia zmiennej w wyniku optymalizacji. Moim zdaniem w tym konkretnym przypadku zachodzi pewność, że ani nikt mi tej zmiennej nie zmodyfikuje, ani jej nie odczyta, więc (podkreślam...
Gdzie i jak masz obsługiwane przerwania? Jak wygląda sprawa stosów/ramki?
Sprawdzam, co jest przydatne - x/0; daje "undefined operation" a nie "div by zero" Akurat ostatnio się tym bawiłem i aby dzielenie przez zero wywołało faulta (Usage Fault), to trzeba sobie to włączyć w odpowiednich rejestrach rdzenia. 1. Jak to się dzieje że r1 jest argumentem funkcji? Gdzie jest to opisane? r1 nie jest argumentem funkcji, tylko jej...
Na pierwszy ogień drastycznie zmniejszy Ci sie program jesli zamiast łączonych warunków przez "AND" rozbijesz je na dwa pojedyncze IF'y tylko UWAGA - te które nie mają w sobie "ELSE" - z else musisz zostawić jak jest, bo zaczną się cuda dziać :) EDIT: I jeszcze mi się przypomniało... jak nadal będzie ciasno to wszystkie flagi - zmienne typu BIT - zamień...
Bardzo dziękuje za wytłumaczenie. W pliku pomocy Bascoma było zdecydowanie słabiej to wytłumaczone. Czyli jeśli by było +2 overlay to w nowa zmienna pomijała by pierwsze dwa bajty?. Kiedy można spodziewać się wyjaśnienia odnośnie ramki i stosu?.
http://www.elektroda.pl/rtvforum/topic74... ENC28J60 , stos na mikrokontrolerze sterujacym.
Nie ma znaczenia jakiego protokołu użyjesz powyżej. Traktuj to jako kolejną warstwę stosu komunikacyjnego, która służy do dzielenia strumienia danych na poszczególne ramki.
Odpowiedź jest prosta (wykonanie niekoniecznie): trzeba zmodyfikować stos. Wyciąć ramki, które zostały utworzone po rozpoczęciu zadania, aktualną przesunąć i zmodyfikować adres powrotu z przerwania (albo aktualną też wyciąć i zrobić skok). Po powrocie przywrócić kontekst. Jest to oczywiście sposób niezalecany. Może pokaż kod... Coś takiego robi obsługa...
Jeśli zaś wywołana funkcja wywołana nawet z takiej pętli będzie miała argument bez volatile to w odróżnieniu od pętli głównej main() która nie wie co się dzieje w komórce pamięci 0x0060 - to nasza funkcja otrzyma prawidłowy adres argumentu ! i na wejściu odczyta aktualną - zmienianą w przerwaniu wartość tej komórki. Absolutnie nie. To zależy od kompilatora...
Sprawdziłem w symulatorze ten program o błąd w którym pytałem wcześniej. Mam taki właśnie komunikat oznaczający zachodzenie na siebie ramki i stosu, jak z tym walczyć?, próbowałem zmieniać rozmiary na inne w opcji kompilatora ale cały czas mam ten błąd
int *funkcja(int par1, int par2, int par3,int par4,int par5) { int wynik[2]; // jakieś tam obliczenia na przesłanych danych wynik[0]=2; wynik[1]=11; return wynik; } Na przyszkość: Zdecydowanie odradzam tego typu praktyki - tablica jest tworzona na stosie, z funkcji zwracasz wskaźnik, jeszcze poprawny, ale w...
To rozumiem to tak że zmienna "i" jest już na stałe w pamięci i zadanie tej funkcji jest wykonywane najszybciej jak to możliwe Tak zmienna ma swoje stale miejsce w pamięci. Nie koniecznie wykonanie jest najszybsze bo najszybciej to działa jak zmienna jest w rejestrze procesora a globalną trzeba zapisać do pamięci przynajmniej przed wyjściem z funkcji...
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ć...
No to odpal atmel studio, wczytaj tego hexa, odpal symulator i pobaw się w śledzenie kodu. Jeśli to kompilat C to na początku będzie inicjalizacja zmiennych globalnych czyli kopiowanie z flash do SRAM. To można olać. Kolejny taki blok powinien być odpowiedzialny za liczenie jakiegoś zabezpieczenia kodu - szukaj jak pisałem LPM/ELPM. Przejrzyj też plik...
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...
char tablica[ROZMIAR]; int i; for (i = 0; i < ROZMIAR; ++i) tablica[i] = ... Oczywiście ROZMIAR nie może być zmienną. Jesteś tego pewien? Ja zrobiłem u siebie mały test, w samym środku funkcji wstawiłem tablicę o rozmiarze ustalanym przez zmienną (nie można wartości ustalić w czasie kompilacji, sama tablica nie może być usunięta...
Witam Moze mi ktos wyjaśnic roznice miedzy FCS ktore jest dolaczane na koncu ramki Ethernetowej a Internetowa Suma Kontrolna CRC? Wiem ze pierwsza jest 4 bajtowa a druga 2 bajtowa. FCS to suma kontrolna calej ramki ethernetowej. Gdy karta sieciowa odbiera ramke to liczy sume kontrolna i porownuje z tym co jest na koncu. Suma kontrolna IP to jest protokol...
zamiast funkcji [syntax=cpp]void move_lewo()[/syntax] musisz miec [syntax=cpp]void move_lewo(void* Args)[/syntax] void* to nie to samo co void. void oznacza brak, void* oznacza wskaznik na cokolwiek. void ma 0 bajtów void* ma rozmiar int (czasami bedzie 4 bajty czasami 8 bajtow) void* to sposób wskazników który nie ogranicza Cie w typach, może on wskazywać...
W i386 ABI zmienne do funkcji przekazuje się przez stos i potem w następnej ramce czyta z niego względem BP . To jest chyba najpowszechniejszy sposób użycia stosu.
1. Modem musi mieć wbudowany stos TCP z obsługą przez komendy AT 2. Przy pomocy rozkazów AT nie można wysłać jednej ramki TCP. Można natomiast nawiązać połączenie TCP a następnie przesłać jakiś dane. 3. Nie istnieje jeden ustalony standard obsługi stosu TCP przez rozkazy AT. Różni producenci stosują różne rozwiązania. 4. Każdy modem GPRS pozwala na...
witam. Kol.Seb jeśli stosuje się zestaw podstawowych słów w bascomie, unikając gotowców i tworząc własne procedurki, to można napisać sensowny program i w bascomie tak jak w C i nie będzie robił dziwnych rzeczy. A co do pomocy w temacie to już ją uzyskałeś, tak jak napisano unikaj waitms itp. opóźnień, zrób sobie swoją pętlę opóźniającą w której coś...
teraz tak na starej wyskakuje mi ten błąd, a na nowej nie czyta mi w ogóle cipa . hahahahah :D odpal combofixa. Moze pomoze i dodaj jeszcze deklaracje programowego stosu i ramki. Narazie zwiekszyles tylko stos sprzetowy. Moim zdaniem jest to typowy blad z kompem a nie z kodem. Ja bym poazadnie go przeczyscil. A w tej nowej wersji co ci nie czyta chipa,...
Kilka uwag w przypadkowej kolejności 1. Nie bój się C++ - niekoniecznie cała biblioteka standardowa jest optymalna i właściwa na uK, ale jest wiele kochanych ficzerów samego języka. a) niepubliczne pola i metody - to ci się bardzo przyda, jak chcesz mieć architekturę b) konstruktory, w tym obiektów statycznych (moduły mogą się rejestrować do modułu...
Zobacz coś takiego: $regfile = "m328pdef.dat" 'definicja mikrokontrolera $crystal = 16000000 'częstotliwość taktowania mikrokontrolera $baud = 9600 'szybkość transmisji szeregowej $hwstack = 40 'rozmiar stosu sprzętowego $swstack = 40 'rozmiar stosu programowego $framesize = 40 'rozmiar ramki stosu 'Inicjalizacja portów wejściowych i wyjściowych...
RTOS to dużo dodatkowych kłopotów - zarządzanie pamięcią, problem jednoczesnego dostępu do zasobów itd. W twoim przypadku nie widzę jakiegoś sensownego podziału na oddzielne zadania, co by uzasadniało zabawe z RTOS. Weź też pod uwagę, że na AVR debugowanie takiej aplikacji jest praktycznie niemożliwe - żaden debugger nie wspiera takich rzeczy, a zabawa...
Podnieś Bascom do nowszej wersji. Wersję 2078 już spokojnie znajdziesz w sieci. Na 2080 się to kompiluje bez błędów mimo iż program zgłasza kilka ostrzeżeń o dwukrotnej deklaracji tych samych zmiennych itd.. Musisz wiedzieć że AVR-DOS potrzebuje minimum 1500B SRAM i w Mega32 zostaje Ci 500B SRAM. Nie zadeklarowałeś wielkości stosów HW i SW oraz ramki...
Zauważyłem, zauważyłem, ale o tym że to teraz nieużywane już nie wspomniałeś Ty. Tak samo jak nie piszesz w kodzie jakie są rozmiary stosów i ramki. Dlatego czasem szkoda czasu na rozpatrywanie takich pytań jak o tyle rzeczy jeszcze trzeba dopytać... Napisz uczciwie ile miałeś poustawiane w IDE na te stosy ;) a najlepiej umieszczaj deklaracje w kodzie.
Ukryte rozkazy w mikrokontrolerze to temat, o którym pierwszy raz słyszę. Czy to były jakieś mity czy to miało jakieś podstawy? Żadne mity, już Z80 miał takowe, wynikały one z rozszerzenia instrukcji 8080 przez dodatkowy kod przed właściwym, uzyskiwało się w ten sposób dodatkowe operacje. Była oficjalna lista rozkazów ale okazało sie że te przedrostki...
Jak powinien być zakończony program PLANSZA.asm ? END? HALT? RET ? Zdecydowanie podprogram musi kończyć się RET (o czym za chwile dłużej) a nie może HALT. Mam dla Ciebie niedobrą wiadomość: nie da się postąpić dalej jako tzw "praktyk", bez czytania. RET i HALT to instrukcje, są przenoszone do kody wynikowego *), ale END to tylko "wtręt organizacyjny",...
Dziękuje, Czyli nie ma rozwiązania takiego, że ramkę przygotowana już przez stos TCP wysyłam po RMII do PHY takiego który obsługuje WIFI i posyłam już pakiet radiem. Oczywiście wcześniej łącze się z siecią itd.
Poczekaj , może ja się nieprecyzyjnie wyraziłem, więc powtórzę. Ja dlatego uważam, że stos z tux jest lepszy bo zawiera choćby obsługę SNTP której nie ma w drugim, lepszą wg mnie obsługę UDP , poza tym posiada bardzo ważną rzecz jak przygotowaną obsługę client/serwer dzięki której możemy przesyłać swoje dane na jakiś NORMALNY serwer web na którym to...
Kod, który podałem działa wyśmienicie;)) Jak widać jest możliwość napisania tego pod C;) Oczywiście wspomagałem się debuggerem :) Na stronach atmela jest sporo o pisaniu w C. Na avr-y w C można napisać kod odpowiadający temu w ASM. Bo avr-y zaprojektowano pod CCCCCCCCCCCC !!!!!!!!! Tak, sporo, całe dwie noty, w dodatku poświęcone raczej optymalizacji....
W bascomie avr nie sprawdzę ile to zajmuje,jeśli brakuje niewiele to może zmniejszyć rozmiar stosu i ramki,programator do avr-ów jest b.prosty,demo daje 4Kb kodu,możesz przejść na atmegę 8 i po problemie albo zoptymalizować procedurki które już masz
Dziwne, ale do tej pory na to nie trafiłem, ale właśnie problem w tym że tutaj znowu jest to zrobione na innym uP, w tym wypadku PIC. Ale tutaj warto poczytać o samym sposobie wykonania projektu, więc na pewno się przyda. Co do samych projektów Radii internetowych to jest ich kilka w internecie, nawet fajnie zebrane w jednym miejscu. [url=http://www.mikrocontroller.net/arti...
Witam. Nie miałem takowych problemów z podanymi instrukcjami. Wrzuć na forum kod który źle chodzi to prędzej coś może ktoś wydedukuje. Jeśli program po wykonaniu gosub i powrocie returnem nie działa tak jak powinien to podejrzewam że w stosunku do tego co wytworzyłeś masz ustawiony za mały stos sprzętowy,programowy lub ramkę. Sprawdź to bo z powodu...
Z tym poprawianiem kodu to trzeba bardzo rozsądnie - tak naprawdę to im więcej masz zmiennych w pętli głównej programu, tym więcej zajmujesz sram'u przy wejściu do przerwania. Już dokładnie nie pamiętam, ale bascom przy wchodzeniu do obsługi przerwania "zapobiegawczo" odkłada zmienne na stos (w bascomie to jeszcze dodatkowo oprócz "prawdziwego" stosu...
To wyślij dwie identyczne, jedną ze swojego stosu i jedną z UIP i sprawdź czym się różnią bajt po bajcie. No wlasnie to zrobilem. Przez identycznosc struktury mialem na mysli ze nie roznia sie w ogole "bajt po bajcie" - nawet adresy IP sa takie same (oczywiscie dwa procki nie pracuja w tym samym czasie). Roznice wynikaja jedynie z innych identyfikatorow...
właściwie pisząc stos opierałem się tylko i wyłącznie o rfc (o warstwie fizycznej też tam powinno być) i zrzuty z ethereal. jedynie podczas pisania sterownika do kontrolera sieci (odbieranie ramek i wysyłanie) spoglądałem w różne gotowce. Mówiąc o warstwie fizycznej dajesz do zrozumienia, że chcesz generować ramki i je odbierać programowo... niewiem...
A czy z tego programu Hercules dobrze wysyłam ramkę? Czy wcześniej coś muszę ustawić?
Radzę zdobyć trochę wiadomości nt. sieci komputerowych, w szczególności stosu TCP/IP. ENC38J60 dostarcza tylko ramki ethernetowe, wszystko "powyżej" (protokół IP i wyższe warstwy) musisz zaimplementować sam (ew. skorzystać z gotowego stosu, w zależności z jakiego uC korzystasz).
Witam kolego niveasoft. Wszystkie Twoje odpowiedzi są jak najbardziej trafne, lecz po ich wykorzystaniu nadal problem pozostaje nierozwiązany. Próbowałem dodać dodatkową zmienną, zwiększyć stos i ramkę, umieszczać warunek sterowania portem w różnych miejscach programu i nic, nie posunąłem się do przodu nawet o jeden krok. Może ktoś z Was drodzy forumowicze...
Teoretycznie wystarczy, ale jak już było powiedziane rozjadą sie czasy. Ja np. zawsze robię obsługę DS w przerwaniach i nigdy nie mam błędów... dla początkującego może to byc trudne, bo trzeba zdążyć z obsługą przed kolejnym wywołaniem przerwania. Odpowiednie ustawienie stosu i ramki to kolejny ważny element aby zmienne przyjmowały właściwe wartości...
Wykorzystuję F103 +MAC/PHY ENC, F107, F2. Apropo taniości to pierwsze rozwiązanie jest chyba najtańsze skoro MAC/PHY ma podobną cenę jak sam PHY a procek sporo tańszy. Problemy miałem jedynie z serią F2 ale jest już to w erracie opisane. Tak w ogóle to się zainteresuj czy nie da się go kupić też w pobliżu 20 zł bo coś kojarzę że widziałem taką cenę...
Zmodyfikowałem ten handler do postaci https://obrazki.elektroda.pl/7811206300_... Gdy dodałem jako atrybut do funkcji "naked" (/* uprzednio weak -> błąd pisarski */) żeby kompilator nie dodawał na wejciu odkładania na stos to wchodzi i działa ale tak czy inaczej zawiesza się potem gdy chce zapisywać do BKP wartości z ramki stosu do...
Jestem na etapie sprawdzania czy nie wysypuje się przez brak miejsca w procesorze. Jestem raczej baskomowcem i w C czuje sie niepewnie. Nie wiem jak sprawdzić ile waży kod wynikowy, ile stosu , ile ramki..... Generalnie program NIE wysypuje się w pętli for. Wystarczy wpisać pętlę for ze wskaźnikiem i zmienną 'i' do listingu. Program tam nie wchodzi...
Może inaczej. Czy ktoś obczaił programowy stos IRDA?
Zapoznaj się ze stosem CycloneTCP http://www.oryx-embedded.com/cyclone_tcp...
MinisterQ - cos sciemniasz z tymi parametrami do funkcji przekazywanej jako wskaznik. W czym konkretnie miales problem? Podobnie ilosc rejestrow - piszac w C masz pewien poziom abstrakcji od sprzetu, zabawa z rejestrami moze posluzyc do napisania optymalniejszego kodu, ale nigdy nie jest to problemem. Kompilator powinien sie wszystkim zajac sam. W...
Po kliku próbach zmieniłem rozmiar stosu sprzętowego i programowego, a także rozmiar ramki i problem ustąpił. Tak więc zamykam temat. Pozdrawiam!
Skasuj te słowa "Iram" - w wersji 2075 ten numer nie przejdzie w ten sposób. Pod deklaracją procesora powinieneś też określić wielkości stosów i ramki. Na przykład: [syntax=vbnet] $regfile = "attiny13.dat" 'typ proca $crystal = 1200000 $hwstack = 8 $swstack = 8 $framesize = 24[/syntax] Musisz też wiedzieć że nowy Tiny13 jest taktowany predkością 1,2MHz...
Kliknij sobie kolego słowo Select i naciśnij klawisz F1, dowiesz się wtedy jak wygląda instrukcja Select Case. Wywal też 2 ostatnie End If i wstaw je w odpowiednich miejscach, Jeśli nie wiesz gdzie, to ponownie skorzystaj z klawisza F1. Dorzuć jeszcze deklaracje wielkości stosu i ramki i powinno się skompilować. I jeszcze jedna rada na przyszłość nawet...
A może by tak zamiast pokazać zdjęć z przesyłanych pakietów to napisać coś o tym z jakiego stosu TCP korzystasz? na jakim procku? w jakim języku? jeśli własny stos - to jak tworzysz ramkę klienta UDP itd ....... Bo pewnie tu gdzieś leży błąd jeśli nie w aplikacji na PC. Bo chyba samą aplikację na PC sprawdziłeś w każdą stronę - robiąc i klienta i serwera...
Witam! W necie i na tym forum znalazłem dosyć ogólnikowe informacje po co liczyć cepstrum sygnału - można wyznaczyć np. wysokość mowy. Moje pytanie: Jeśli podziele sygnał na ramki (załóżmy, że ramki nachodzą na siebie -> tzn niech każda ramka ma długość 1024 próbki, a następna jest przesunięta w stos. do poprzedniej o 512 próbek) i oblicze cepstrum...
Nie ma znaczenia czy parametry są przekazywane przez rejestry, czy nie. Chciałem wymusić przekazanie przez stos, żeby lepiej było widoczne jak kompilator tworzy ramkę wywołania funkcji. Dla rejestrów jest podobnie, z tym, że czytający taki przykład musiałby znać ABI kompilatora, żeby wiedzieć na co patrzy. Indeksowanie parametrów na stosie jest po prostu...
Jeśli chcesz tylko wysyłać dane(komunikacja w jedną stronę) to nie trzeba pisać całego stosu TCP/IP a tylko generować ramki potrzebne do przesłania informacji co już nie powinno być większym problemem przy zastosowaniu UDP.
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...
Myślę że błąd się czai jakiś prosty. Masz na pewno wszedzie Return w tych Sub`ach? Chodzi mi o to że jak nie ma Return to program skacze pod Label ale potem nie wraca tylko czyta kolejny sub i dopiero kiedy w nim napotka Return to wraca. Jest to błąd o którym kompilator Cię nie poinformuje bo to jakby zamierzone działanie programisty. Inaczej trudno...
Troszkę za dużym ogólnikiem rzuciłem... Tak, stos to HW Stack (sprzętowy) i Soft Stack (programowy). Należało by zwiększyć rozmiar stosu sprzętowego, bo używasz przerwania od Trmer1. Wywołanie obsługi przerwania powoduje zajęcie 32 bajtów stosu (czyli tyle, ile masz zadeklarowane), a nie tylko do tego jest on używany. Możesz ustawić np. dwukrotnie więcej....
Często widuję konstrukcje typu: for(i=0; i<8; i++) jakasfunkcja(1 << i); Taka konstrukcja ma sens przy kompilowaniu na różne platformy, jednak w przypadku avr'ów warto zauważyć, że brak jest instrukcji przesuwania w lewo o dowolną ilość bitów, przez co przesuwanie o zmienną zostaje przekształcone w pętlę co wydłuża wykonywanie....
Witam serdecznie, piszę obecnie w Bascomie dość rozbudowany projekt na Atmegę32 używający przerwania Timera T0 oraz komunikacji z drugim mikrokontrolerem za pomocą kontroli przerwania Urxc i bufora nadawania. Projekt nie używa procedur ani funkcji zawierających zmienne lokalne ani skoków Gosub. Jedynym elementem zwiększającym stos jest przerwanie od...
Tak się dzieje jak stosujesz instrukcje Gosub, program idzie do procedury a tam znowu stosujesz Gosub i w tej na koncu nieszczęsne Retrurn. Program idzie w "krzaki" bo przepełniasz stosy i nadpisujesz w pamięci Ram zmienne. Poczytaj o procedurach i funkcjach w pomocy Bascoma, użyj Declare Sub a potem Sub: i END SUB. Stosuj też deklaracje ramki i stosu...
Ok, jasne. Z tym, że w ramce request pole to może mieć wartość z sufitu bo i tak jest ignorowane.
Co do hasla to w zaleznosci od ustawien idzie ono golym teksem. Jakies bezpieczenstwo zaczynasz miec dopiero jesli negocjujesz bezpieczne polaczenie, ale to juz zaczyna przerastac AVRa. Co do stosu TCP to na takie kontrolery zwykle jest on pisany przy zalozeniu, ze otrzymywane ramki sa poprawne i nikt nie probuje tego stosu rozpirzyc. W Internecie to...
Chodzi o program, który pokaże punkt czasowy i hosta, na którym nastąpiła chwilowa przerwa. Używałem dawno temu takiego preogramu, ale nawet nie pamiętam jego nazwy. A można prosić o definicję chwilowej przerwy? Jak powszechnie wiadomo chwila to trzy momenty :-). Przypominam, że transmisja w sieci komputerowej jest pakietowa i w zasadzie po każdej...
parafka --> no tak moja wina ;) na wykresy sobie nie spojrzałem ..... (a taki wykres jest chyba praktycznie w PDF'ie każdego procka) ... z drugiej strony, można sobie przy 3,3V dać OSCCAL na max'a i też będzie 8MHz ;) ...ok jutro postaram się sprawdzić to jednak na 3,3V i na tych ok 7,5MHz Dodano po 13 ----------------------------------------...
Tu pewnie chodzi o adres do wmbusmeters, wyrzuca błąd: Can't send to wmbusmeters... Restarting... Tak, dokładnie -- taki WDT. Jak przez pewien czas nie uda się wysłać ramki po TCP (więc też klient musi działać po tej drugiej stronie) to robię restart. Takie podobne rozwiązanie jak w komponencie MQTT (podobno ten stos sieciowy w ESP32 nie jest stabilny).
Tylko że TCP daje mi to że mam potwierdzenia(ack), a UDP nie działa tak że mogę coś zgubić ? Masz rację, TCP jest protokołem połączeniowym, UDP bezpołączeniowym (za to o wiele szybszym i prostszym). Skoro wysyłasz po 220 bajtów, to z tego co kojarzę, te 220 jest wysyłane w "eter" dopiero jak zbierze się pełna ramka (znów nie pamiętam - musiałbym zajrzeć...
Witam! Jak każdy 17-latek pewnego pięknego dnia naszła mnie myśl o rozgryzieniu transmisji w sieciach LAN. :D:D:D Jako że miałem pod ręką ATMEGA32 i ENC28J60 (karta sieciowa na ISP), zabrałem się do pisania kodu w moim ulubionym języku - C. Komunikacja z ENC28J60: bez najmniejszego problemu. Wysyłanie stworzonej na sztywno w programie ramki ARP - OK....
Ważne jest jak zwykle wszystko. Dlaczego nie używasz sprzętowego TWI które na pewno ma pewne mechanizmy wspomagające transmisję? Kiedy tylko rozkład pinów projektu umożliwia skorzystanie z przeznaczonych do tego peryferii należy to zrobić. [syntax=basic4gl]$lib "i2c_twi.lbx" ' biblioteka obsługująca hardwarowe TWI[/syntax] Do tego dochodzi to że na...
Zgodnie z sugestią: mam do zbudowania przyrząd pomiarowy do kontroli produkcji ramek z PS (tworzywo sztuczne). Ramki te posiadają niestety różną krzywiznę. Ramka musi być powieszona na "ścianie " i mierzona jest odległość od " ściany" do ramki w określonych punktach. Obecnie mierzy się to za pomocą podkładania stosu płytek wzorcowych. "Ściana "- w rozumieniu...
Czyli kazdy lokalny pakiet będzie leciał przez router. Tu trochę zależy od implementacji stosu IP bo jak pakiet z 4.x (stara maska) zostanie przesłany dalej przez ruter do 5.x to ruter może wysłać do stacji 4.x pakiet ICMP Redirect podając adres MAC na który trzeba wysyłać ramki. Jeżeli komputer 4.x to przyjmie to kolejne ramki będą szły bez pośrednictwa...
powinno coś być na SDA,SCL. Tak, ale pod warunkiem, że ten T-con ci pracuje, dostając odpowiednie pary sygnałów LVDS oraz zegar i dane z płyty głównej. Procek na T-con dostaje wtedy komendę startu i wymienia się danymi po magistrali z pamiątką, która badasz oraz wydaje już przerobione sygnały do matrycy, magazynując mapę bitową obrazu w pamięci ramki...
Dziwne, ta funkcja zwraca wartosci tylko 0 1 2 3. Zadeklarowałeś zmienną ERROR? W helpie jest to opisane. Ja wczoraj testowałem te funkcje u siebie bo tez mi sie krzaczy program, i zwracała mi różnie. raz miałem 1, potem zwiekszyłem stos i pokazała mi 2, wiec zwiekszyłem programowy stos to teraz krzyczy ze ramka za mała. Jest taki program w BASCOM AVR...
Przy okzaji chialbym dopytać Mundi1970 czy skoro w deklaracji funkcji użyłeś ........ We wszystkich przykładach z katalogu SAMPLES i w helpie, na początku funkcji jest podawany typ danych. Teraz działa nawet i tak :): Zalecił dopisać you need to add : $swstack=16 $framesize=30 I kod zaczął działać...:) Należy też pamiętać że te wartości mogą być większe....
Witam. Mam problem z uruchomieniem stabilnie działającego sterownika ethernetu. Kozystam ze stosu LwIP, a aplikacja pracuje w systemie Free RTOS. Problem polega na tym , że po pewnym (niepowtarzalnym) czasie aplikacja przestaje odbierać ramki. Generalnie sterownik ethernetu oraz stos LwIP implementuje korzystając z przykładowego projektu STM, oraz książki...
No nie właśnie. W zasadzie to w ogóle nie :D A już na pewno nie tymi programowymi. hwstack to stos sprzętowy. Ale jego wierzchołek musi ustawić programista. uP jedynie sprzętowo umieszcza i zdejmuje tam dane, ale gdzie to robić to musi określić programista. swstack to stos programowy. W sumie nie wiem co to :D frame to ramka i też nie wiem co to :D
schemat oraz rozne informacje pochodza m. in. z http://www.ethernut.de/ Mowisz masz stos tcp/ip, ale ramka IP w ethernecie tak po prostu nie wyskakuje do kabla. Pod tymi protokolami sa jeszcze 2 warstwy: fizyczna i lacza danych. Warstwa fizyczna to elektronika ktora pozwala przeniesc 1bit danych pomiedzy nadajnikiem i odbiornikiem. Warstwa lacza danych...
stack a heap to mocno inne rzeczy. One na małych architekturach mogą gdzieś tam się zazębiać, ale generalnie są oddzielne *) A stos w językach wysokopoziomowych - pewnie wiesz - to w praktyce powołanie ramki (frame) funkcji / rezygnacja z ramki (return) (na marginesie, o ile heap jest słowem generalnie jednoznacznym, to stack w 99% oznacza prostą rosnącą/malejącą...
(at)tomek2181 pisaliśmy trochę na PW, jednak doprecyzuję, bo mam chwilkę Zacznijmy od tego, że na CANie, zwłaszcza tutaj CANOpen przez magistralę przechodzi całkiem sporo tych ramek. Trochę o identyfikatorach przeczytasz na wiki -> https://en.wikipedia.org/wiki/CANopen Du... udział w całym ruchu na magistrali mają ramki NMT. Bodaj co 200 ms leci ramka...
To pewnie wynika z tego że powstało dużo różnych AVR`ów. Jeśli na początku ktoś korzystał tylko z jednego typu to mógł sobie w IDE ustawić konfigurację dla stosów a nawet wyświetlacza LCD czy I2C. Stąd dla wstecznej kompatybilności dalej tak można zrobić. Na przykład ustawienia dla stosów są tutaj tylko moje są już zmienione bo mogę szybko wkleić to...
Jeszcze pomecze o jedna rzecz: czy od strony RSa podlaczyliscie to do komputera i tam programistycznie rozbieraliscie i ubieraliscie dane z ramki? Czy tez moze szlo to do jakiegos mikroprocesora? Jesli tak to moze masz jakis godny polecenia, ktory by ladnie wspolpracowal z ramkami M-Busa? I rozumiem ze na tym mikroprocesorze musi byc stos M-Busa? Czy...
Witam, w Internecie na metry mozna znalesc stos rysunkow i badziewnych opisow USB. Poszukuje dokladnego opisu protokolu USB 1.1 - ramka + timing zwlaszcza trybu transmisji 1.5 Mb/s. Bede dzwieczny za wszelakie info
Witam Mam plobrem z odpaleniem w pełni możliwości programu z płyty DVD naszego kolegi pana Mirka. Plobrem polega na tym po naciśnięci klawisza na module ATB nie przychodzi informacja do programu TestyUDP. Obsługa LCD LED i Test portów daje transmisje 2 kierunkową. -Po naciśnięciu klawisza zapala się kontrolka na karcie ENC RX/TX. - Zapora i antywirus...
żarty chyba, z tym watchdogiem... Transmisja przy 19200 ramki danych do telefonu to jak błysk flesza. wina resetowania procka leży w zbyt małym stosie programowym. ( przyjąłem, że piszesz w bascomie i na AVR i nie zrobiłeś błędów w sofcie. Jeżeli mam rację to musisz zwiększyć stos)
Może serwer po GET odpowiada tylko moduł enc28j60 nie przyjmuje ramki, jaką wartość dałeś dla MAX_FRAMELEN ? Klient nie informuje serwer jaką długość segmentu obsługuje, więc serwer wysyła pełną ramkę 1518 bajtów (wszystkie nagłówki + dane + crc). Jeżeli serwer nie otrzyma ACK, to wydaje mi się że serwer ponawia wysyłanie danych z minimalnym rozmiarem...
Jakoś mi ten post umknął pewnie przez to że to weekend :P W Attiny2313 SRAM`u jest dość bo 128 B tylko pewnie zderzyłeś się z czymś o czym ludzie, albo nie wiedzą, albo zapominają. Otóż chodzi o stosy. Nie wgłębiając się w zagadnienie stosów podpowiem, że operacje na stringach Bascom przetwarza w tak zwanej ramce. Kiedy ma podzielić string to robi jego...
Tzn. wysyłam ramkę UDP to wireshark widzi go jako protokół ICMP i adres docelowy pokazuje taki sam jak źródłowy czyli adres komputera. W ten sposób stos zgłasza błąd, że host nie jest osiągalny. Z jakiegoś powodu nie jest możliwe wysłanie pakietu UDP. Wywołaj w PC okienko konsoli i wpisz arp -a Zobacz czy na liście pojawi się adres MAC płytki z uP....
Witam W jednej wersji elektroniki zdarza mi się, że dostaję ramki z PHY z błędnym CRC. Generalnie kiedy elektronika i kabel są ok to błędów CRC nie miałem więc dla mnie ten problem to nowość. Ramki z błędnym CRC widzę w rejestrze: Ethernet MMC received frames with CRC error counter register (ETH_MMCRFCECR) W momencie jak przychodzi taka 'uszkodzona'...
deklaracja stosu pamięć stosu analiza stosu
schemat podłączyć silnik fazowy corolla verso czujki zewnętrzne
Czas ładowania zestawu ogniw 24V 25Ah - analiza Schemat budowy sprzęgła wkrętarki Einhell