nie wiem jak codevision ale w gcc chyba nie da sie tak nisko zejsc zeby wybierac tryb adresowania w instrukcjach, to juz kompilator wybiera sobie , w kodzie mozna sobie tylko napisac cos w stylu: a = *wsk++; *(--wsk) = a; i miec nadziej ze skompiluje sie tak jak chcemy lub gdzie potrzeba szybkiej procedury to w asmie napisac. Ja tam pamiec wewn/zewn...
Witam Najprostszy sposob to po prostu wymienic pamiec na nowa (koszt max 10 pln. W procesorze Amstrada zaszyty jest program startowy ktory przepisuje sie do pamieci po jej wymianie, wada- stracisz dotychczasowe ustawienia lecz chyba z tym juz sobie dzsz rade. Lub wyjac pamiec zgrac program skasowac pamiec i dalej jak wyzej . Zgranie programu jest niezbedne...
Ja bym zaproponował może tak: Przed rozpoczecie ładowania programu istniejący sprawny program kopiujesz do pamieci obojętnie jakiej. Następnie ładujesz program w docelowe miejsce i oczywiscie po weryfikacji odpalasz. Dopisujesz funkcje w programie co ma sie dziac w przypadku błedu weryfikacji lub błednego działania programu - np zadziałanie ...doga...
Niestety jako początkujący użytkownik Deplhi mam pewne problemy z odebraniem danych z portu COM. Mój program działa na zasadzie wysyłania do mikrokontrolera znaku z PC z ilością odczytywanych komórek pamięci danych. Przykładowo jeśli wysyłam 'A' odczytywana jest jedna komórka, 'L' dwanaście komórek itd. Ta funkcja programu działa prawidłowo. Problem...
Czy ktoś potrafi mi wyjaśnić drogę programu od napisania do umieszczenia w mikrokontrolerze ? kompilator odkłada funkcjie main na stosie ? co się dzieje np. z takim zapisem : int wyw(4,5); // deklaracja funkcji wyw int main(void) //Co się dzieje z funkcją i jej ciałem gdzie ona trafia proszę o schemat tego procesu { int zmienna=5;...
Szerokość danych pojedynczego rozkazu wcale jakoś szczególnie nie przyspiesza. Można to łatwo sprawdzić kompilując program używający 64-bitowych zmiennych jako aplikację 32-bitową. Może i nie ale łatwiej pewne sprawy by było rozwiązać mając do dyspozycji 128 bitowe zmienne. No ten skoromny programik pokazuje, że granice architektury 64 bit można szybko...
czy Crossworks jest taki madry, aby sam potwierdzac przerwania w ich ISRach? w kazdym z nich brakuje przypisania dowolnej wartosci do rejestru VIC odpowiedzialnego za adres... osobiscie nie sadze, aby Crossworks zalatwial to sam, bo w koncu oparty jest na gcc, ktory tego nie zalatwia. bez tego kolejne wywolanie przerwan nie bedzie mozliwe raczej......
Zmieniłem nieco kod programu. Obecnie wygląda tak: /***************************************... This program was produced by the CodeWizardAVR V2.03.4 Standard Automatic Program Generator © Copyright 1998-2008 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com Project : Version : Date : 2009-07-12 Author :...
Panel Sterowania -> Programy i funkcje.
C++ jest za wysoki do mikrokontrolerów. Gbyby nawet był kompilator to pewnie jedna funkcja zajeła by jego całą pamięć programu. :cry:
Run time error 6 występuje wtedy gdy komputer nie spełnia wymagań programu, ma zbyt mało pamięci lub błąd jest generowany przez sam program. Jaki system ? Po uruchomieniu programu ile masz wolnej pamięci ? Nie ubywa jej w funkcji czasu ? Sprawdź zaraz po uruchomieniu programu i później w odstępach np.1 godziny ile ubywa wolnej pamięci.
Witam, Zapis do EEPROM jest przykładowy i nie ma tutaj większego znaczenia. W moim docelowym programie używam struktur danych. Dla uproszczenia użyłem zmiennych typu int16_t. Chodzi raczej o przekazanie parametrów (wskaźników do pamięci Flash) w funkcji. W jaki sposób należy prawidłowo to wykonać? Czy należy ustawić wskaźniki poza funkcją? pozdrawiam...
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ń...
nie możesz zwracać dwóch wartości w taki sposób! Albo przygotuj strukturę, albo osobne funkcje, albo skorzystaj z referencji. To co widzisz, to po prostu śmieci z pamięci.
Jak (pamięć w programatorze, czy na PCB) Wylutowałem go Masz odpowiedź, mój programator taki sam jak autora po wybraniu funkcji auto najpierw kasuje pamięć, sprawdza i dopiero potem programuje. jakim programem próbujesz odczytać/zapisać pamięć? Tego autor nie podał, ja mam program 1.30.
Witam jeśli dysponujesz boxem lub kabelkiem rs232 i systemem xp to pobierz sobie sofcik do sagema może być z serii MC9xx i wejdź w self test jest tam funkcja sprawdzenia wyświetlacza włącznie z nasyceniem kontrastu i zapisem do pamięci telefonu , nie używaj innych funkcji w tych programach bo ubijesz telefonik jest jeszcze bodajże wersja softu do serii...
Trzeba włączyć różne optymalizacje g++ - przede wszystkim -Os, ew. dodać inne, np. optymalizację prologów i epilogów funkcji.
Zamiast wstawiać argument do delaya umieść delaya w pętli for ze stałym argumentem. Zmienna zawsze znajdują się w SRAM. Ale stałe można umieścić w pamięci programu.
Najprostsze rozwiązanie. Tworzysz w pamięci programu tablicę funkcji sinus (na 8 bitach). Tworzysz trzy wskażniki do danych w tablicy, przesunięte o 1/3 rozmiaru tablicy. Ze zmienną częstotliwością (zmienianą np. przerwaniem od timera) odczytujesz wartości z tablicy i wystawiasz na trzy porty. Zwiększasz wskaźniki. I to chyba cały algorytm
Czy np. stosowanie tablic, pętli tylko ułatwi programowanie (np. skróci długość programu "polepszy przejrzystość" kodu), czy ma też wpływ na prędkość działania, stabilność pracy? Raczej to pierwsze chociaż na prędkość działania ma oczywiście wpływ sposób w jaki iteruje się po zmiennych. Odnośnie pamięci - czy dla arduino ma znaczenie, że program i...
Pierwszy raz w życiu widzę aby wywoływać rekurencyjnie funkcje main. To tak jakby we wnętrzu programu jeszcze raz uruchamiać samego siebie. Utwórz osobną funkcję silnia i wewnątrz niej wywołuj silnia(n-1). Funkcja main to nie zwykła funkcja i jej argumenty nie mogą być definiowane przez programistę. U ciebie argument funkcji main będzie miał wartość...
W programie PonyProg jest funkcja SWAP ale nie wiem czy o takie odwrócenie Ci chodzi - musisz sprawdzić na próbę wstaw dowolny hex. Pozdr. N.
Niestety avr-gcc zawarte w najnowszej wersji winavr jeszcze nie posiada wsparcia dla 2560. Cały problem polega na tym, że przekroczono magiczną granicę 64k słów programu i każde wywołanie funkcji odkłada 3, a nie 2 bajty na stosie (posypie się obliczanie pozycji argumentów przekazywanych przez stos). Podobny problem dotyczy wskaźników do funkcji i danych...
Nie ma żadnego haczyka.Po prostu przycisk SELECT należy naciskać tyle razy aż pojawi się funkcja programowania, poszukać program, zapamiętywanie jest automatyczne.
_delay_ms(zmienna) To jest właśnie problem. A dlaczego? Zobacz co to za makro i jak go używać. Chcesz użyć zmiennych? To korzystaj z odpowiedniej funkcji i timera.
Jeśli piszesz w WinAVR i otworzysz plik w asemblerze to zobaczysz, że każde nie używane przerwanie prowadzi do resetu. Nieużywane tzn. nie posiada funkcji obsługi przerwania. Przerwanie takie od np. przepełnienia timera może nastąpić jeśli zostanie odblokowane, ale jak mówisz w tym przypadku to nie to. Możesz po prostu wyłączyć watchdoga i upewnić się...
Ależ są poprawnie ładowane. W AVR pamięć programu jest adresowana w słowach, a nie w bajtach.
Do odczytu z pamięci programu użyj: pgm_read_byte lub memcpy_P Tu masz więcej funkcji/makr, które mogą Cię zainteresować: http://www.nongnu.org/avr-libc/user-manu...
(at)rewolt90 Nie jest dokładnie tak jak piszesz. AVR gcc domyślnie umieszcza literały znakowe ("abcd...") w pamięci RAM. W twoim oryginalnym programie te literały były dodatkowo kopiowane na stos przy wywołaniu funkcji main co powodowało przepełnienie stosu. Dodanie static nie wymusza tego, że te zmienne wylądują w pamięci programu. Uniknąłeś w ten...
Robisz to tak samo jak przy pomocy makefile - tyle, że w AS definiujesz nową sekcję i określasz jej adres. Następnie używasz atrybutów gcc, aby wskazać, żeby określona zmienna/funkcja się w tej sekcji znalazła. Resztę robi linker.
Co do roznicy to nie bardzo wiem ale co do stosu: -jest to specjalny "kawalek" pamieci RAM ktory sluzy do odkladania informacji przez procesor. Jest to pamiec typu LIFO (last in first out) Taki przyklad: wykonywany jest program podczas ktorego zostaje wywolane przerwanie. W tym momecie procesor odklada adres w ktorym program zostal przerwany na STOS....
Za mało wiem o projekcie jeszcze. Używasz WinAPI ? Używasz standardowego io ? Można to zrobić pipeliningiem (named pipe), albo wymianą obiektów czymś na wzór bazy danych. Pierwszy program pisze do pliku a drugi z niego czyta. Można to samo zrobić na socketach. Obiekty mogą być serializowane w jednym programie i deserializowane w drugim. Udostępnianie...
Nie napisałeś jakie dokładnie 315, ale zakładając, że nie jest przedpotopowe ;) to masz w nim zajęte jakieś 10-20% pamięci roboczej. Pozostaje pytanie, jak skomplikowany jest ten program. Czy duże znaczenie ma czas jego wykonania oraz obsługa procesu, którym steruje? Pod względem dostępnej pamięci na pewno się zmieścisz w 1214, w nowych firmware'ach...
Cześć Według mnie to nie jest pamięć w której jest przechowywany program panel opisujący jego funkcje do obsługi maszyny. Tam najprawdopodobniej jest "system operacyjny" panela. Chyba że ten panel jest programowany w taki sposób że się wymienia pamięć eprom. Pamięć ta jest kasowana UV czyli bezpośredni w panelu nie może być programowana. Proponuje poszukanie...
To że tam pisze to wiem, ale nie wiem gdzie podłączyć wyprowadzenia I0..I7 i O0..O7 pamięci 28C65 (podejrzewam że któregoś portu, ale nie jestem pewien do którego), więc wolałem się spytać czy ktoś przypadkiem niema np. schematu ich połączenia. I czy można te układy połączyć bezpośrednio (bez układów pośredniczących) jeśli eeprom ma pełnić funkcję pamięci...
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...
(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.
Czyżby w tekim sprzęcie Japończyk nie przewidział tej powszechnie użytecznej funkcji?
Jezeli makro LCDC_DDA wygląda tak: #define LCDC_DDA 0x80 to jego wywołanie z parametrem : LCDC_DDA|64) powinno wywołać błąd i nie ma najmniejszego sensu(chyba ze definicja tego makra jest inna) Pozatym cały czas mówię o tym zebys wkleił rozwinięcie tego drugiego makra i implementacje czyli definicje tej fukcji do wyswietlania stringów. Kod rc5 nie bedzie...
Moim skromnym zdaniem to biblioteka openCV może czasem potrzebować systemowych funkcji, które nie są dostępne dla aplikacji uruchamianej w LSA (choćby po to żeby załadować bitmapę do pamięci). Dlatego dopóki nie dołączysz do programu tej linijki z wywołaniem funkcji openCV wszystko działa normalnie. Spróbuj pobawić się z tym tool-em : http://technet.microsoft.com/en-us/sysin...
Witam ! moim zdaniem najlepszym programem do czyszczenia pamięci ram jest FreeRAM XP Pro 1.52 . Program jest darmowy. dodatkowo posiada funkcję czyszczenia pamięci co pewien czas :D
Atmega2560 posiada 256kB pamięci. Załóżmy, że program zajmie 25k, zostaje jeszcze 225kB. Zatem, Twoich "plików" wejdzie 225 / 0,72 = 312 plików po 720 bajtów. Dostęp do danych przez funkcję lookup https://avrhelp.mcselec.com/index.html?l...
Arduino Mega 2560 Rev3: "posiada 256 kB pamięci programu Flash oraz 8 kB pamięci operacyjnej SRAM." to może być ograniczenie - w zależności od tego jaki zakres funkcji ma pełnić ten robot.
A co chcesz optymalizować? W LTSpice jestem dosyć zaawansowny, w analogówce też, w Matalbie średnio (właściwie to używam Octave) i to też do niezbyt skomplikowanych rzeczy. Nie miałem potrzeby robić optymalizacji matematycznym sposobem z wyznaczaniem funkcji celu, bo zazwyczaj optymalizuję 1-2 parametry, a takie rzeczy robi się w pamięci. To jakieś...
Kilka miesięcy temu napisałem do tego drobny program oferujący kilka funkcji niezwiązanych z programowaniem pamięci (odczyt Smart Battery, odczyt danych z kilku typów czujników, sterowanie kilkoma wyświetlaczami) - trochę jak Bus Pirate: https://obrazki.elektroda.pl/6692240700_... https://tomeko.net/software/CH341A_tool/
hint 1: Tablice do funkcji zwykle przekazuje sie (ze wzgledu na ich wielkosc) przez wskaznik (operujesz na oryginale nie na kopii). hint 2: W C nazwa tablicy jest adresem jej pierwszego elementu.
pamięć ram i pamięć programu nie znajdują się w tej samej przestrzeni. LPM (load program memory) odczytuje z pamięci programu, LD (load data) wczytuje z przestrzeni pamięci. Zmień LPM na LD r16, Z (pomijając mov r16, r0) tak jak napisałem w drugim poście tematu.
jeśli kiedyś w tym otv została włączona funkcja autoinstal i instalacja została przerwana to po włączeniu odbiornik zawsze będzie do niej wracał należy ją przeprowadzić do końca łącznie z układaniem programów, jeśli mimo to funkćja ędzie nadal wyskakiwać można wymienić pamięć, co do wyłanczania i standby po włączeniu wyłącznikiem sieciowym otv zawsze...
Czy jesteś pewien, że stos Ci się nie przepełnia? Kompilator przed tym nie ostrzega, bo nie zawsze można na poziomie kompilacji przewidzieć rozmiar stosu. Stos w AVRach wypełniany jest od końca pamięci SRAM, jak się stos spotka z danymi, no to koniec... Czy masz w programie sytuacje, że np. wywołujesz funkcję w innej funkcji, albo nawet głębiej? Albo...
Masz kilka opcji: Optymalizacja systemu czyli usunięcie niepotrzebnych programów, wyłączenie pamięciożernych funkcji. Wymiana pamięci na kość 2GB (tam jest jeden slot z tego co się orientuję) dlatego trzeba kupić jedną kość 2GB a nie dokupować drugą 1GB. Wymiana dysku twardego na dysk SSD, to wyższe koszta ale wg. mnie do netbooka i 32GB wystarczą na...
Wykonać prosty test. Jeśli w układzie jest jakaś dioda LED - zaraz w funkcji main ustawić nieskończoną pętlę migającą w/w diodą. Ważne, żeby było jeszcze przed włączeniem przerwań. To podważy twierdzenie, że uC nie startuje, ponieważ program zajmuje więcej niż x% pamięci FLASH.
pamiec 24c01 pamiec canon hyper pamiec
magnetowid odtwarza biegi rower auraton zawór
tonsil bandpass mikrokontroler projekty
Bosch Siemens Neff płyta indukcyjna błąd E 417 – przyczyny, diagnostyka, naprawa MAN TGX 2024 – brak prawego kierunkowskazu w naczepie, diagnostyka ZBR, pin 4 ISO 12098