Czuję się zaburczany. Rozwiązanie, o którym myślałem jak widzę nie ma sensu. Przyznaję - moja wina. Nie do końca przemyślałem sprawę. Dziękuję za uświadomienie problemu. Aby temat nie został bez żadnej merytorycznej zawartości - powiedzcie proszę, abstrahując od zastosowania, jak w miarę łatwo zapisywać dane do flasha z programu, jeśli macie link do...
https://obrazki.elektroda.pl/3221612800_... Witajcie moi drodzy. Zapraszam na relację z postępów prac nad otwartym firmware dla BK7231T. Temat ten napisany będzie w formie tutoriala, przedstawię tu krok po kroku jak opracowałem własny, wieloplatformowy (działający na Windowsie i BK7231T) mini-serwer HTTP, system konfiguracji pinów...
2) Jak się zabrać do tego by zrealizować taki zapis do flash (emulowanego EEPROM)? Nie mam pomysłu a niczego wartego uwagi nie znalazłem. Nie trzeba nic wymyślać bo STM ma własny, stosunkowo dobrze opisany algorytm na emulację EEPROM dla całego szeregu procesorów w tym F0. Który jest atrakcyjny, dlatego że w bardzo małym stopniu "zużywa" limit żywotności...
I jeszcze jedno czy mógłby ktoś po ludzku wyjasnić co oznacza "pamięć o dostępie swobodnym" To znaczy, że masz dowolną kolejność dostępu do danych (np. możesz czytać kolejno spod adresów 1, 6, 2, 9, 10, 3 , a nie tylko kolejne 1,2,3,4,5 lub 8,9,10,11). Nazwa powstała dla odróżniena takiej pamięci od pamięci z dostępem sekwencyjnym (np. pamięci taśmowe...
Witam DAC AC CHARACTERISTICS- tutaj chodzi pewnie o charakterystyki przejściowe albo dla sygnałów zmiennych (AC) Voltage Output Settling Time- czas ustawienia napięcia wyjściowego COMPARATOR komparator Input Voltage Range zakres napięcia wejściowego Input Capacitance pojemność wejściowa Hysteresis4 histereza Response Time czas odpowiedzi TEMPERATURE...
https://obrazki.elektroda.pl/8545401100_... Mój poprzedni temat o Pierwsze kroki Jakiś czas temu publikowałem temat o https://obrazki.elektroda.pl/4535548900_... Wyszukujemy DHT. Biblioteka DHT wymaga też dodania Adafruit Unified Sensor Library, więc dodajemy obie biblioteki. Najpierw Unified Sensor: https://obrazki.elektroda.pl/1839946000_...
https://obrazki.elektroda.pl/8661538600_... Zainspirowany podcastami o historii komputerów (podcast #19 - Magnetofon w służbie informatyki Komputery, nawet wczesne modele z lat 50tych, potrafiły wykonywać obliczenia z niezwykłą prędkością i wydajnością. Wciąż jednak problemem była pamięć. Dostępne formy RAMu mogły pomieścić program,...
Znalazłem specjalnie dla Ciebie jeszcze kilka bajtów :D ahahahahaha Bascom stara się być "ignorantoodpornym" czyli jak ktoś może czegoś nie wiedzieć to on to, na wszelki wypadek, robi za niego. W języku C każdą zadeklarowaną zmienną najczęściej inicjuje się jakąś wartością ponieważ po reset nie można być pewnym, że w niej znajduje sie zero lub potrzebna...
To podpowiedz chociaż jak zmienić zapis const uint8_t payload PROGMEM = ...; aby dane zamieszczone we Flash można było odczytać jak z RAM, podobnie jak z EEPROM. Ponoć nowe AVR GCC ma nowe literały, które niezależnie od typu pamięci, gdzie składowane są dane, odczytuje je. W nowszych wersjach AVR GCC wprowadzono kilka ulepszeń ułatwiających pracę z...
zapis do flasha jest skrajnie banalny, gotowy przyklad znalezc mozna w user manualu. 4\/3!!
A jak myślisz? Zapis to zapis, uważasz że działający program zapisuje dane mniej inwazyjnie?
Cześć, Potrzebuję zapisać w pamięci flash bądź eeprom kilka wrażliwych danych koniecznych do pracy urządzenia po wznowieniu pracy po resecie. Niestety częstotliwość zmiany wartości zmiennych podczas pracy nie pozwala na użycie flasha lub eeprom na bieżąco bo by się skończyły bardzo szybko z uwagi na limit zapisów. Czy jest możliwość monitorowania jakiejś...
Tyle że ja mam implementację EEPROMu podobną do tej od ST, tyle że przechowującą dowolny rozmiar w jednej "komórce". Moja implementacja jest dobra jeśli masz kilka-kilkanaście-kilkadziesiąt zmiennych do zapisywania w teorii dowolną ilość razy w dowolnej kolejności. Jeśli u siebie będziesz przechowywał te wartości razem i np ustawiał je tylko raz (nigdy...
Inicjalizację masz OK, ale resztę do bani. O czytaniu zmiennych z pamięci programu poczytaj /* deklaracja */ uint8_t pgm_data[10] PROGMEM = {1,2,3,4,5,6,7,8,9,10}; /* odczyt */ uint8_t bajt = pgm_read_byte(&pgm_data[5]... /* zapis */ /* poczytaj w datasheecie procesora */ Poza tym pamięć flash nie za bardzo nadaje się...
Udało mi się wreszcie zapisać i odczytać 16 bitów w eepromie, zrezygnowałem z funkcji, oraz uprościłem instrukcje do niezbędnego minimum: [syntax=c]//reklaracja zmiennych uint32_t address = 0x8080014; //adres eepromu, poczatek jest pod adresem 0x8080000, ten adres to 0x8080000 + 20 uint16_t data_read = 0; //dane do odczytu dwa bajty uint16_t data_write...
Jeśli przez pojęcie "Flash" rozumiesz $EEPROM to nie ma problemu, wszystko masz w helpie nie Jeśli myślisz o "Flash" programu 8kB to samomodyfikacja pamięci jest raczej nie możliwa tak. Czytałem że zapis do FLASH możliwy jest tylko z poziomu bootsectora. Może by się dało napisać funkcję, która by tam wprowadzała informacje?
Witam OK, zamieszczam nowy kod źródłowy i wsad do mikrokontrolera programu radiomagnetofonu, w którym usunąłem błąd powodujący wyciek pamięci podczas grania radia oraz dodałem dwa usprawnienia poza tym. Błąd wycieku pamięci polegał na zgłoszeniu faktu braku pamięci przez dekoder AAC podczas kolejnej próby nawiązania połączenia z serwerem wybranej stacji...
Na razie próbuję to zrobić w tradycyjny, "Atmegowy" sposób, gdyż mam to już przećwiczone. Na razie procedurka sprawdza, czy w EEPROMie jest FF (lub FFFF dla 16 bitowych zmiennych) i ustawia wartości domyślne. Jednak po odczytaniu, wartości zmiennych nie sa na swoich miejscach. Wpisuję 5 danych typu uint8_t i 8-elementową tablicę uint_16 t. W której...
Każdy pojedynczy zapis w obrębie 1 strony flash wymagający ustawienia dowolnego bitu na '1' oznacza skasowanie całej strony flasha i jej przepisanie z nową wartością. Co zabija flash? Jego kasowanie...
Czyli niepoprawny program przypadkiem Ci działał (bo deklarowanie zapisywalnych zmiennych we flash raczej ciężko uznać za poprawne), a taki mniej niepoprawny już się nie kompiluje. Trochę szukanie dziury w całym, skoro jedyne poprawne rozwiązanie to dodanie "const" do _WSZYSTKICH_ obiektów które będą we flash... Dodano po 3 Wszystko zależy od tego czy...
to tablicy unsigned charow w flashu stm32 juz nie mozna trzymać? sprawdzilem na tablicy uint8_t zarówno zapis jak i odczyt działa bez zarzutów. W takim razie nie wiem co mogło być przyczyną problemów w przypadku pojedynczych zmiennych. To, że ci nie działa tak jak trzeba to jest wina twojego softu, nie flasha ani kompilatora. Sprawdź jak zmusić GCC...
Z telefonu zdejmowalem simloka i wszystko bylook ale nazajutrz klient przyszedl z telefonem T610 prawdopodobnie R3C002 i brak reakcji. Próbowałem wgrać nowy soft cruiserem AVR zapodałem ok ale przy próbie AWR operacja zakończyla siena 60 % i ani drgnie. To juz nie pierwszy taki przypadek mialem ale tym razem nie dalo sie go nawet tornadem uruchomic....
No ale w czym problem? Kto każe kasować CAŁĄ pamięć? Również używam symulowanego eepromu i nie widzę problemu w aktualizacji firmware bez ruszania konfiguracji. Ja widzę. Przy dużych rozmiarach sektora (jednostki kasowania), np. 4kB, zapisywanie często zmiennych wartości do flasha jest nadużyciem. I nie gadajcie rzeczy typu "konfiguracja sie nie zmienia...
1. Kompilator sam zadba o to, żeby w pliku wynikowym nie znalazły się nieużywane zmienne, nie trzeba nic kombinować poza upewnieniem się, że jest włączona optymalizacja. 2. Optymalny to tutaj raczej złe słowo, nie powinno być różnic. Za to druga opcja powinna być wygodniejsza do używania w kodzie. 3. "Najprostszy" sposób to kompresja danych. Przy czym...
Przepraszam , że nie dokończyłem wczoraj ale przysnołem. Nie poszło tak prosto bo nie otrzymuje zapisu na kartę , cały program kompiluje się mi w porządku tzn otrzymuje hex -a, zadaniem poniżej przedstawionego programu jest tylko odczyt jednej wartości z wejścia adc1 oraz zapisanie jej na karcie do pliku o nazwie plik, poniżej przedstawiam listing z...
Witam ponownie. Mówią nie chwal dnia przed zachodem słońca...jak z jednym się uporałem to znów co innego mi mąci. Kłopot z wyborem gdzie zapisać nastawy dwukanałowego timera bo zmiennych jednocyfrowych jest łącznie 4x4 dziesiątki godzin , jednostki godzin , dziesiątki minut , jednostki minut osobno dla włącz osobno wyłącz razy dwa kanały.Ma do wyboru...
Nie wiem czy sie przyda ale mam opis bootloadera ale na ATmega8 oto on napisany w bascomie: 'Program Bootloadera (monitora) dla ATmega8 umożliwiający ładowanie 'programu do pamięci Flash przez interfejs RS232 z prędkością 19200 'bodów 'Bity fuse należy ustawić, by na Bootloader było przeznaczonych 128 'bajtów 'Początek adresu programu Bootloadera:...
Jak to obliczyłeś? Pewnie 1024/4 bajty = 256, ale tutaj tak to nie działa. Strona 1024 bajty to 1024 bajty, inaczej 512 półsłów. Zapis do stron pamięci w STM32F0 wymaga zapisywania półsłów, do jednej strony oczywiście można zapisać 512 półsłów. Tzw. "emulacja EEPROMu" zapisuje wartość zmiennej (2 bajty) + "identyfikator zmiennej" (2 bajty), a więc...
Tej pamięci nie znam, ale zazwyczaj z pamięciami FLASH z interfejsem SPI jest tak: Adresy będą pewnie 3-bajtowe i zapewne adresują pojedyncze bajty. Ty masz liczby 12-bitowe, więc najlepiej na każdą przeznaczyć 2 bajty. Wtedy adresy dla każdego pomiaru będą kolejne parzyste (np. adres pomiaru nr 12 to 24). Aby coś do pamięci zapisać, trzeba: - wysłać...
Odczyt nie ma wpływu na żywotność EEPROM, zaś zapis - wg datasheet Write/Erase Cycles: 10,000 Flash/100,000 EEPROM
Opis problemu wskazuje na to, że powinieneś w Startup Config ustawić początkowe wartości kanałów na -1, tj. na "remember last state". Dzięki temu moduł będzie pamiętać poprzedni stan i będzie poprawnie raportować zmiany. Nie martw się o zużycie pamięci flash, system zapisu zmiennych optymalizuje cykle erase flash (zapisuje w blokach po 64 bajty a dopiero...
Nie ma możliwości zapisywania poszczególnych BAJTÓW (w uproszczeniu), a wygląda że to próbujesz zrobić. Funkcje zapisują zwykle 2 bajty na raz, adres zapisu powinien być więc parzysty, a Ty powiększasz zmienną Address tylko o 1 między wywołaniami.
Cholera. ok. zaufany USB-TTL wyłączony z powodu remontu czy coś. nie może przekroczyć 921600 z innym CH340, ale kasuje/zapisuje 1mb. Wypróbuję też inne adaptery. https://obrazki.elektroda.pl/3706514000_... BLDC jest OK przy 2000000 kasowania/zapisu z obydwoma CH340, ale może jest bardziej wyrozumiały/próbuje ponownie - nie sądzę, aby...
Czy można się jakoś przed tym zabezpieczyć ? W skrypcie linkera należy włączać sekcję poprzez zapis:[syntax=c]KEEP (*(.nazwa_sekcji))[/syntax] albo użyć atrybutu 'used':[syntax=c]static const int dummy __attribute__((__used__)) = 1234;[/syntax]
Jako radę na poczatek: nie pisz zbyt długich operacji bo jeszcze ich nie zrozumiesz. Używaj zmiennych pośrednich. Będzie Ci łatwiej to ogarnąć.
Witam, Jak wygląda u Ciebie deklaracja zmiennej flashdata? I dlaczego jej adres nie jest wyrównany do 4 ;) Dla Keila zrobisz to tak: unsigned char flashdata[512] __attribute__ ((aligned (4)));
Potrzebuję w moim projekcie zapisać do Flash w razie gdy by zabrakło prądu tablicę zmiennych: [syntax=c]uint8_t zamienna[20][/syntax]. Zapis najlepiej gdy by na końcu pamięci Flash, by nie kolidowało nic. Próbuję to zrobić przerabiając bibliotekę EEPROM od ST jak i na podstawie notki o emulacji, ale taki syf mi wyszedł, że przy próbie zapisu uC się...
Pomijając sensowność używania sprintf do SKOPIOWANIA stringa do jakiejś zmiennej, to błędów jest bardzo dużo. 1. Skasowałeś stronę którą chcesz zapisywać? 2. Odblokowałeś zapis do flasha? 3. Twój zapis jest dziurawy, bo jak zero będzie na nieparzystej pozycji, to pętla nie zakończy się wtedy kiedy będziesz chciał 4. Odczytujesz FlashStatus, to sprawdź...
Pytanie Autora dotyczyło zapisu/odczytu pozycji do/z eepromu..... Funkcje przycisków i algorytm działania urządzenia nie były poruszane w tym temacie, bo prawdopodobnie Autor wie jak to rozwiąza Trochę się wątek rozmył, ale chyba nie było powiedziane że zapis do EEPROMA jak najrzadziej. Mówiąc językiem projektowania, gdy wszystkie stany i decyzje są...
Uruchomiłem kod, który wkleiłeś. Dopisałem tylko definicje dla Bank_NAND_ADDR ( 0x70000000 ), CMD_AREA ( 0x00010000 ), ADDR_AREA ( 0x00020000 ) i DATA_AREA ( 0x00000000 ). W funkcji FSMC_NAND_ReadID() pominąłem zapis do struktury i odczytuję zmienną data - mam w niej prawidłowe dane. Dodano po 8 Może nie włączyłeś taktowania dla FSMC? Ja mam to w innej...
Piszę ponieważ już drugi dzień z tym walczę co zawarte w temacie. Nie mogę zapisać zmiennych do pamięci SRAM i FLASH za pomocą komunikatu __memx. Używam AVR Studio 4. Z tego co czytałem, jest to wina programu i zawartych w nim bibliotek. Jak tak, to które powinienem dodać ? Również mam problem z kwalifikatorami takimi jak DATA oraz CODE. Z góry dzięki...
Poprzedni mój przykład działa poprawnie pod warunkiem że cały jego tekst zawarty jest w jednym pliku głównym. Jeśli wywołanie funkcji piszącej do lcd nastąpi w innym pliku, to argument funkcji będący zarazem wskaźnikiem do tekstu flash nie zostanie rozpoznany. Obszedłem to poprzez zdefiniowanie W pliku nagłówkowym powinny być tylko deklaracje, zazwyczaj...
lucas234 to Ty jesteś programistą i Ty decydujesz jakiego typu jest zmienna i gdzie ona ma być zapisana, w której pamięci w zależności od założeń urządzenia które programujesz i tego co chcesz osiągnąć, tak dla przykładu: deklaracje zmiennych w których pamięciach maja się znaleźć: [syntax=c] uint8_t a; // zmienna w pamięci RAM uint8_t EEMEM b;// zmienna...
Jak masz jakieś pojęcie o programowaniu to nie powinno być problemu. Najlepiej zrobić to na timerze i przerwaniach. Sam program byłby dosyć prosty w działaniu. Ja zrobiłbym tak. Przerwanie z timera przychodzi jakieś 100 000 razy na sekundę. Robisz 1 zmienną na liczenie przerwań i porównujesz z 2 zmienną która określa jasność świecenia. Przez wszystkie...
Jeśli nie jest używane to normalne, że linker to usuwa, po co ci info którego nie odczytujesz? Możesz to zostawić wykorzystując atrybut kompilatora "used" przypisany do zmiennej.
dla flasha ostatecznie jednak użyłem swojej implementacji z biblioteki SPImemory i będę zapisywał dane w bajtach. Rozumiem, że w jakiś sposób chciałeś sobie uprościć kwestię adresowania zapisanych danych w zewnętrznej pamięci SPI. Sama biblioteka SPImemory wspiera również bezpośrednio zapis/odczyt float, string, różne typy int oraz tablice bajtów ....
Użyj pamięci szeregowej (I2C) np. 24C02 (jeżeli na prawdę nie potrzebujesz dużej tej pamięci). Sugerował bym wstawić jednak 24C16 lub więcej (pewnie przyda się w przyszłości). Wszystko zależy jednak do czego to potrzebujesz (ile razy masz zamiar zmienić zawartość danej komórki tej pamięci- gwarantowane jest duża, ale ograniczona zapisów).
hej, skrypt do zapisu i odczytu zmiennych dziala na symulatorze pod WinCC flexible 2005, po zaladowaniu do panela program sie wywala z komunikatrm ActiveX component can't create object .... wskazuje na blad set oFs = CreateObject("Scripting.FileSystemObject... Czy ktos spotkal sie z podobnym problemem i wie jak go rozwiazac ? thx[/list]
Cześć. Nie rozumiem pewnej sprawy, proszę o podpowiedź. Do EEPROM zaszytego w procek (np. Atmega 16) można zapisać 100 000 razy. Oznacza to zapis do konkretnej komórki pamięci, czy w ogóle do EEPROMU danego procka? Co w przypadku znaczenego przekroczenia ilości zapisów - procek przestanie zapisywać czy przestanie działać całkiem (czy EEPROM ma wpływ...
Ja sugerowałem się tym kodem http://www.lpcware.com/content/blog/appl... Wrzucam projekt dla LPCXpresso, działa tak po łebkach. Mianowicie jak zapamiętasz już raz poprzez IAP, to przy ponowym zapamiętaniu mimo w innym obszarze dostaniesz błąd zapisu - nie zagłębiałem się dlaczego... Podejście, które zaproponawał mickpr...
Witam serdecznie wszystkich w nowym roku. Mam problem z bootloaderm napisanym w GCC. Zasada jego działania jest następująca: po resecie przez sekundę ma skanować port szeregowy i jeśli nadejdzie znak "0xaa" to rozpoczyna odbieranie paczek po 256bajtów i zapisuje je do FLASH'u. Kod źródłowy jest następujący: #include <avr/io.h> #include <avr/boot.h>...
Aby zoptymalizować program możesz rozważyć poniższe podpunkty: 1)Mozesz dać tablicę do flash-a.wystarczy dołączyć plik nagłówkowy <avr\pgmspace.h> sposób definicji zmiennej ładowanej do flash: np. static unsigned int LCD_SegTable[] PROGMEM = { 0xEAA8, // '*' 0x2A80, // '+' 0x4000, // ',' 0x0A00, // '-' 0x0A51, // '.' Degree sign 0x4008,...
Jeśli chcesz przechowywać coś, co rzadko się zmienia, możesz spróbować użyć fikcyjnych bajtów w mainConfig_t : https://github.com/search?q=repo%3Aopens... Jednak główny config powinien zmieniać się tylko wtedy, gdy użytkownicy coś zmieniają, a nie sam z siebie... nie jest zoptymalizowany pod kątem...
Hard Fault jest podczas czytania czy podczas zapisu? Jakoś trudno mi uwierzyć w błąd podczas czytania. A próbowałeś rozbić operację na odczyt do zmiennej tymczasowej i zapis do rejestru? Wg mnie źle poustawiane zegary albo prefech czy też flash latency i wtedy w debugerze będzie miał faulty losowo. Bez jakichkolwiek fragmentów kodu to pewnie niewiele...
Przecież prog_char *ptr to nie jest to samo co char *ptr . Jeden wskażnik powienien wskazywać na RAM a drugi na flash, natomiast Wy mówicie że nie ma różnicy. Witam! A mnie się wydaję że prog_char *ptr nie oznacza że wskaźnik ma wskazywać na zmienną w flash tylko sam ma się tam znajdywać a wskazywać może na flash lub na ram. Tak samo zapis char *ptr...
Jednak będę drążył ten temat, bo nadal mam wątpliwości. Jeśli mam dwie funkcje: void zapisz_flasch(unsigned long Address,unsigned int dana) unsigned int read_flash(unsigned long Address) Jedna z nich zapisuje pod dowolnym adresem , dowolną daną, a druga czyta z dowolnego adresu we Flashu. I teraz jesli zapisuję jakąś grupę danych do Flasha, np 200 zmiennych...
Po co używać do tego pliku i niepotrzebnie generować zapisy w pamięci FLASH? Ja akurat Pythona nie znam, więc tu zbyt wiele nie pomogę. Ja to robię tak, że mam na serwerze prosty skrypt w PHP, a węzły okresowo łączą się z serwerem i w najprostszym wariancie przesyłają dane jako parametry GET, czyli np. "http://192.168.0.10/log.php?id=ts0012&t...
Stary nie czepiam się ale po co flashujecie wtyczki, żarówki i popierdułki. Że tak powiem nie lepiej przekierować swoje moce i wbić się w MQTT i wtedy do serwera wpiąć te swoje zabawki w jednym miejscu, poza chmurą, nad wszystkim panujesz gdy nie ma Internetu. Stawiam sobie taki serwer, i powiem świetna zabawa... "Tworzę pierwsze na świecie oprogramowanie...
Drodzy koledzy zwracam się z prośbą o pomoc gdyż temat był wielekrotnie poruszany i obszernie opisywany lecz wszystkie posty dotyczą środowiska WinAvr. Sprawa wydaje się być widziana w innym świetle gdyż przeczytawszy manuala pt. "AVR IAR C/C++ Compiler" stwierdzam, że nie ma tam mowy o bibliotekach które są potrzebne do umieszczania danych we flashu...
jak można dokonać zapisu kolejnych rejestrów do jednego pliku wykorzystując data sampling. Przecież my definiujemy tylko jedną zmienną
Witam was, Mam pytanie jak umieścić zawartość makra np. __DATE__ pod konkretnym adresem w pamięci FLASH? Język C nie pozwala na inicjalizację "zmiennych" globalnych czymś innym niż określona wartość, w tym makra. [syntax=c]const uint32_t date_flash __attribute__((section(".ARM.__at_0x0800... = __DATE__;[/syntax] Niestety ten sposób zapisu wyrzuca...
"adr MSB" możesz traktować jako górny bajt adresu (nie licząc rozszerzenia), "addr LSB" jako dolny bajt adresu, przy czym pamięć należy traktować jako zorganizowaną słowami - musisz przywyknąć, że pod jednym adresem mieszczą się dwa bajty, górny i dolny, a więc traktując pamięć jako zorganizowaną bajtami najniższy bit będzie przeznaczony do wyboru czy...
Mam zainstalowane CruiserSupplementary_v1.02_installer, ale w tym nie ma gdfs-ów do T630. Dzisiaj wgrałem R7, jednak po tym sofcie znowu wyświetla "Oprogramowanie niezidentyfikowane". Po ponownym wgraniu R6 powrócił do stanu z wcześniejszego logu. Nie mogę jedan wgrać gdfs-a cruiser-em. Wyświetla mi następujęce logi, gdy próbuję coś z tym zrobić: [...
Ale jak kto zapisze? Różnica jest taka, że aplikacja może nie mieć uprawnień do zapisu do FLASH. Więc te dwie metody nie są równoważne. Poza tym zapis do FLASH odbywa się stronami i wymaga kasowania strony. Do EEPROM można zapisywać bit po bicie. Po prostu różnica w wygodzie.
Union dzieli obszar pamięci pomiędzy 2 zmienne. Myślałem nad tym. ( w przypadku gdy nie wykorzystuję ciągłego obszaru pamięci - ( nie wszystkie pola struktury chcę mapować na rejestry modbus ) - pojawia się problem. ) Co więcej rozwiązanie podane przez kolegę wyżej umożliwia swobodną manipulację numerami rejestrów, co również jest cenne. Tymczasowo...
Przykład zapisu tablicy w pamięci flash i trzymania jej tylko tam: unsigned char temp[3] PROGMEM = {0,1,2}; aby odczytać dane z takiej zmiennej wykorzystać należy polecenie postaci: data = pgm_read_byte(&temp[j])
Jeżeli chodzi o ffconfig.h to próbowałem różnych ustawień a z desperacji ;) nawet zupełnie kosmicznych ich kombinacji. Jeżeli chodzi o ustawienia kompilatora to -O0 -> prawie najnowszy bleeding edge toolchain. Przed każdym buildem robię clean'a. Dodam, że dzieje się to na dwóch różnych kartach. Próbowałem też z różnymi typami zmiennych a uchwyt systemu...
Da się to oczywiście oszukać przez wskaźnik, ale nie tędy droga :) To że kompilator pozwoli na taką operację nie znaczy, że cokolwiek zostanie gdziekolwiek zapisane, bo NIE zostanie, tylko w 99% przypadków skończy się na jakimś wyjątku sprzętowym. Wracając do głównego problemu chciałbym tylko nadmienić, że skoro nie wiedziałeś jak w C zrobić stałą,...
No skoro nie są globalne albo statyczne to jak myślisz - gdzie są tworzone ? - podpowiedź: - na stosie więc nie pokaże ci się zajętość RAM sugestia: jak masz duże tablice to albo rób je zawsze jako zmienne globalne albo co najmniej statyczne - wtedy będziesz widział ile ci to zjada RAM'u. A tak? wydaje ci się że program nie zjada RAMu a tymczasem wszystko...
No weź nie żartuj, że nie wiesz jak takie coś obejść bez wnikania co dzieje się z pamięcią. Struktura ustawień z CRC zapisana co najmniej 2 razy w różnych obszarach. Przy nieudanym zapisie uszkodzeniu może wtedy ulec tylko jedna kopia danych, a druga może zostać co najwyżej nieaktualna. Nie chodzi o to czy wiem czy nie wiem, tylko że mi się nie chce...
Obsługę UART masz w przykładach do samego Arduino. Arduino to w zasadzie sam bootloader i zbiór bibliotek, płytka np. UNO zawiera dodatkowo konwerter USB-RS232 i ma ustandardowany format ale wcale nie trzeba jej stosować w gotowym urządzeniu, reszta to "programowanie ATMega w C". Tworzysz w programie tyle nieulotnych zmiennych ile potrzebujesz, plus...
Skoro potrzebujesz tylko 128B pamięci i używasz 89c8251, który ma 2K wewnętrznej pamięci flash, to możesz wygospodarować jej trochę na te dane (zadeklarować je jako zmienne programu) i nie będzie Ci już potrzebna żadna pamięć zewnętrzna :) Ilość zapisów/odczytów podają jako 100 000-1 000 000 - czy to mało, czy dużo, to zależy od tego, jak często zapisujesz.
Witam, czy ktoś z forumowiczów wie jak umieścić w pamięci flash tablicę z wartościami przeskalowanego sinusa (wartości stałoprzecinkowe). Chcę, aby tablica miała np. 1024 elementów (od 0 do 2pi) dla tego zapis na sztywno wartości będzie nie wygodny. tj. [syntax=c]const s16 tab_sin[1024] = {wartosci}[/syntax] Wolałbym zapis: [syntax=c]const s32 tab_cos0[1024]...
Pracuję na małym procku STM32L0 z 8kB flash i 2kB RAM, debugger to ST-Link v2. Potrzebuję odczytywać na bieżąco w czasie debuggowania z odstępem czasu najwyżej 100µs wartości kilku zmiennych globalnych (a konkretnie wartości ADC i zmiennych odmierzających czas) i zapisywać je do pliku (a po zakończeniu debuggowania przedstawić ich wartości na wykresie)....
Zgadza się. Dlatego każdy plik .h w moim projekcie został podzielony na dwie części. Jedna która dołącza się jeżeli pewien ciąg został zdefiniowany, a druga jeżeli nie. W pliku c dołączam bez definicji i wtedy mam wszystkie zmienne globalne i prototypy funkcji. Jeżeli będą mi one potrzebne w innym pliku c do przed include robię define i wtedy mam tylko...
Inaczej mówiąc SCADA własnej "produkcji Trzeba przygotować stronę (strony) z odpowiednimi znacznikami do odczytu zmiennych i/lub deklaracjami <!--AWP --> dla zapisu. Odczyt wykonuje się żądaniem HTTP GET, zapis HTTP POST. Żądania trzeba wygenerować po stronie klienta (w przeglądarce): javascript, aplet java, Flash, etc. Meta refresh się niezbyt...
http://obrazki.elektroda.pl/9359329400_1... Pamięci NAND Flash są w tym momencie najszybszym na rynku IT rozwiązaniem do przechowywania danych. IBM jednak postanowiło rozprawić się z tą technologią, wynajdując coś, co zmiażdży konkurencję. Obecnie stosowane urządzenia do przechowywania danych dzielą się na dwie grupy: dyski twarde oraz dyski...
Eeprom służy do zapisu parametrów i ustawień których nie można zaprogramować podczas programowania mikrokontrolera. Są to parametry "wyuczone", zdobyte przez mikrokontroler podczas pracy programu a maja być pamiętane. Możesz sobie czytać z tego Eeproma w kółko ale kosztuje Cię to czas. Ja pracuję tak że działam w programie na RAM bo ma szybszy dostęp....
Witaj, to urządzenie jest najprawdopodobniej zbudowane w oparciu o TuyaMCU, więc procedura wyglądałaby tak jak tutaj: https://www.elektroda.com/rtvforum/topic... https://www.elektroda.com/rtvforum/topic... Z tego co widzę dpID są już znane: A właściwie to mamy już zrobione, można to pominąć, chyba, że producent coś mocno pozmieniał...
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...
Nie powinno. Nie zmieniłem prawie nic w tym, co już tam było. Tylko OBKFlashLayout.getConfigLocation zaczął zwracać liczbę sektorów jako zmienną zewnętrzną. Wszystko inne było albo w RTLFlasher albo za kontrolą RTL8720DN. Nie jestem pewien, czy zapis konfiguracji w tandemie z firmware zadziała, ponieważ kasowanie nie jest wykonywane specjalnie dla...
Witam. Zadeklarowałem dwie tablice w pamięci Flash. Obie przechowują wartości typu unsigned long. 1. Jak mogę odczytać z nich wartości, zapisać do zmiennej, coś tam z nimi zrobić i z powrotem zapisać do tej tablicy? 2. Tak w ogóle to da się zapisać do tablicy, która jest zapisana w pamięci programu (Flash)? Proszę o pomoc...
Niestety "cuś" jest nie tak. Drobna literówka i resztki copy-paste. Poprawiłem w poście powyżej, wklejam i tutaj. .ramII : { . = ALIGN(4); __ram2_init_start = LOADADDR (.ramII); PROVIDE(__ram2_init_start = __ram2_init_start); __ram2_start = .; PROVIDE(__ram2_start = __ram2_start); KEEP(*(.ramII))...
Ok, problem rozwiązałem poprzez zapis do flasha, na pierwszy rzut oka, działa dokładnie tak jak chciałem, ale może jest coś o czym nie wiem - nieporządane efekty czy cos. [syntax=cpp] const uint16_t CFlashSignature::SIGNATURE = 0xFFFF; bool CFlashSignature::isFristRun() { return *(uint16_t*)&SIGNATURE; } FLASH_Status CFlashSignature::setSignature()...
np nie ma tam możliwości zapisania zmiennej o innym rozmiarze niż 2 bajty, co jest dosyć sporym ograniczeniem... Pozatym cała idea jest OK, tylko można ją poprawić [; 4\/3!!
(at)paluszasty Właśnie sprawdzałem jak wygląda kwestia dostępu do FLASH i jest tak jak pisałem. Definiujesz stałą z const i automatycznie ląduje ona we FLASH, a z programu masz do niej dostęp bez żadnych specjalnych udziwnień. Czyli definicja: const char tmpchar1 Chyba że z jakiegoś powodu chcemy umieścić zmienne zadeklarowane jako const w RAMie, jak...
1. Raczej około 10k razy, to nie jest nigdy dokladnie tyle, czasem więcej czasem mniej. A dodatkowo z tego co czytałem to pamięć "zużywają" cykla zapis/kasowanie a nie tylko kasowanie. 2.Drugi cykl też się wlicza chyba że układ zarządzający flashem w jakiś sposób potrafi stwierdzić że komórka jest czysta (tu pytanie najlepiej skierować do inżynierów...
on po porostu tak nie chce. To po co o tym piszesz? Nie wiem w jaki sposób czytasz to w myślach autora wątku, ale z tego co napisał do tej pory widzę tylko że po prostu poszukuje działającego rozwiązania problemu tych zmiennych bez utraty miejsca we flash i bez konieczności dużego rozpisywania się. A co do jakości mojej propozycji, to potwierdziłeś...
Okazało się, że podszedłem do tematu z niewystarczającą wiedzą. Przed każdym zapisem, należy określony sektor wyczyścić instrukcja Sector Erase. Chcialbym móc kasować pojedyncze komórki i aktualizować tam niektóre dane, jednakże pamięci flash tego nie umożliwiają, cóż coś za coś. Może uda się niektóre zmienne zapisywać do flashu procesora. Coś wymyślę,...
Jak w C albo Assemblerze [AVR Studio] zrobić, żeby we flashu znajdowaly się zmienne z zapisem np. napisów do LCD. Chodzi o to, że mam dużo napisów, informacji, ale potrzebuję też trochę RAM do obliczeń. Standardowe deklaracje umieszczają mi zmienne w pamięci SRAM, a chciałbym żeby "głupie" napisy znajdowały się we flash i stamtąd były pobierane w odpowiedniej...
Tracisz tylko czas. Ta część zapisu którą pokazałeś nie ma błędu, a konfiguracja optymalizacji czy układania w pamięci zmiennych czy jeszcze tysiące innych "przełączników" nie ma tu nic do rzeczy. Poszukaj co Tobie niszczy tę zmienną w "międzyczasie". Kolego bis , wprawdzie dopiero się uczę C i może dlatego zwracam uwagę na szczegóły.Moim skromnym...
Witam. Mam jeszcze pytanie czy jest możliwość zaprogramowania uC w taki sposób aby kod wykonywalny nie był ładowany do pamięci Flash tylko do eepromu i z niego uruchamiany. AVR nie ma mozliwosci startu programu z EEPROM. EEprom sluzy do przechowywania pewnych stalych albo nawet 'okresowych' zmiennych (presets parametrow), lub rejestrowania zmiennych,...
Problem rozwiązany. Przynajmniej częściowo. Otóż przy programowaniu przez STLink Utility plikiem hex lub bin musiałem wpisać start address jako 0x08000000, w środowisku adres także zmienić na taki. W takiej konfiguracji da się programować i przez STLink Utility i przez CoIDE. Co najdziwniejsze, po zmianie w środowisku adresu z powrotem na 0x00000000...
Nie znam tej biblioteki, zapis strony FLASH jest tak prosty, że wolę polegać na własnym kodzie :) Najprościej napisz sobie jakiś kod, który z bootloadera zapisze stronę, odczyta i porówna. Jakiś prosty kod, aby zminimalizować możliwość błędu. Zapewne problem leży w błędnym kodzie tej biblioteki - adres sugeruje jakiś problem z zawijaniem wartości -...
jeśli całość jest w pamieci flash to kiedy wędrują do pamieci ram?? co dokonuje podziału ?? i decyduje w jakich częsciach mikrokontrolera zapisać ? co z takim zapisem : z=funkcja (g,h); //gdzie trafi taki zapis? Taki zapis nie trafi nigdzie. To jest zapis w języku wysokiego poziomu, kompilator "tłumaczy" to na instrukcje maszynowe, które zapisywane...
Zaraz się tym zajmę, jeszcze jedna sprawa. Czy mój TIM3 interrupt handler jest poprawnie napisany? Jest to mój pierwszy projekt w STM więc możliwe, że kompilator czegoś nie widzi. Aczkolwiek jeśli jest dobry to wtedy problem w 100% po stronie flasha bo to nie wyjaśnia sprawy zawieszania procesora przy wyłączeniu i włączeniu zasilania po zapisie na flash....
Z tym rzutowaniem to wolę jednak "ręcznie" to robić....jakoś tak wydaje mi się bezpieczniej. U mnie akurat sizeof zawsze będzie mniejsze niż 256 gdyż jest to po prostu ilość bajtów do zapisania jednej zmiennej/tablicy/struktury i nie zamierzam robić większych :wink:. Biblioteki z ST są zakręcone..niestety. Zaletą mojego pomysłu jest to że struktura...
K_o_n_r_a_d, jeżeli masz trochę czasu to przedstaw mi swój sposób zapisu/odczytu danych do/z EEPROM. Z góry dzięki. Ja to robię tak mniej więcej: Dim pomocnicza As single At 700 Dim X As Eram Single At 100 X=pomocnicza 'zapis do eeprom pomocnicza=X 'odczyt z eeprom Zrobiłem już dużo sterowników i innych urządzeń ale jeszcze nigdy nie używałem zmiennych...
Chyba lepiej byłoby zamiast wartości pseudolosowych zapisywać takie bajty którego bity byłyby zmienne w każdym cyklu zapisu np. $55 i $AA. Zapisywanie np samych 00 lub $FF spowoduje ze tych operacji można wykonać miliony. Jak jeszcze możesz to spróbuj puścić program jeszcze raz ale nie na pseudolosowych bo to niewiarygodny wynik wychodzi. Mnie tez bardziej...
zajmuję się profesjonalnie pisaniem aplikacji na AVRy W takim razie Ty powinieneś odpowiadać na pytania ;) po powiedzmy 50 (+-100) zaprogramowaniach EEPROMu, EEPROM pada (tzn. weryfikacja się nie powodzi). Dzieje się to cyklicznie w najprzeróżniejszych układach, które programuję. W tej chwili mam już trzy padnięte w ten sposób ATMegi (16-stki i 32-ójki),...
zapis zmiennych zapis pamięć flash zapis pamięci flash
pompa kospel świetlówki laptop auxiliary power
saeco aulika radio detektorowe
Kondensatory MKSE w zasilaczach impulsowych: zastosowanie i ograniczenia Wideodomofon nie przesyła dźwięku do telefonu - przyczyny i rozwiązania