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...
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... Program w sensie kodu był niepoprawny....
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ę...
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....
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...
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...
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...
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...
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.
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ź...
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...
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...
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...
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.
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).
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 ....
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...
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...
Komplikacje z utworzeniem zmiennej. (Microchp Studio, AVR128DA32) Pokrótce: Odmierzam czas . Wynik wpisuję do EEprom-u , wartość 24 bity Chcę edytować w/w wartość, wpisuję ja do zmiennej "wartosc32" i błąd : zmienna "wartosc32" umieszczana jest pod adresem 0x940C Gdy zaglądam do pamięci- nic nie jest nadpisane ( czyli "??" ) Odczytanie wartości z EEpromu...
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,...
zapis zmiennych zapis pamięć flash esp8266 zapis flash
wymiana grzałki schemat elektra instrukcja obsługi ładowarki impulsowej
bateria parkside bateria hilti
Mercedes V12 - Jak określić lewy rząd cylindrów? Schemat zasilacza BN44-00497B do telewizorów Samsung