Przykład : ldi zh high(adres_początka_tablicy*2+1) ldi zl low(adres_początka_tablicy*2+1) LPM R0,Z To odczyt stałej z pamięci flash tablica to juz tylko zabawa z dodaniem wskaźnika do adresu stałej...
Makra pgm_read_* to archaizm. Named Address Spaces robią robotę https://gcc.gnu.org/onlinedocs/gcc/Named... [syntax=c]/* definicja */ __flash uint8_t const * __flash const arrays[2] = { &(__flash const uint8_t[]){ 5, 15, 25, 35, 45 }, &(__flash const uint8_t[]){ 5, 1, 25, 3, 45 } }; /* odwołanie */ value = arrays[iterator][array_counter]);[/synta...
Wszystko stanie się jasne, jak poznasz sposób na "czytanie" typów zmiennych. 1. Zaczynasz od nazwy 2. Idziesz do "końca" w prawo 3. Następnie do "końca" w lewo 4. Nawiasy mogą wyznaczać "lokalne końce". Tak więc Twoja zmienna const uint8_t *Tab[3] to trzyelementowa tablica wskaźników na stałe uint8_t Jak sam widzisz nie da się wyczytać, że sama tablica...
no i kolejny problem, a raczej dwa. Dostaje warna wskazującego na: Bo "w" nie jest wskaźnikiem a zwykłą zmienną. [syntax=c]//============================... void WRITE_CHAR(char znak, int poz) { znak-=32; char i; for (i=0; i<5; i++) { BUF[poz] = font5x8 [(5*znak)+i]; poz++; } BUF[poz]=0;...
Żeby obliczyć długość tablicy, umieść jedną etykietę przed tablicą, drugą po tablicy, różnica adresów pomiędzy tymi etykietami to długość tablicy. Żadna funkcja jak widzisz nie jest potrzebna, wszystko wyliczane jest na etapie asemblacji kodu.
A w jakiej pamięci przechowujesz tablicę picture[k]? RAM czy FLASH?
Da się zapisywać do pamięci programu dane z poziomu wykonującego się programu. W assemblerze AVR występuje instrukcja SPM która zapisuje słowo z pary rejestrów R0:R1 do pamięci programu pod adres określony rejestrem Z :P Nie próbowałem tego nigdy ale faktem jest że coś takiego jest i wystarczy zajrzeć do datasheet'u :P
Pytanie: czy w omawianym przypadku jest jakaś możliwość zapisania we flash tablicy wskaźników do tekstów zapisanych we flash? Oczywiście. Zrób sobie tablicę ze stringami korzystając ze struktury.
tab jest stałą adresową, a nie zmienną, więc nie można jej "przeładować". Eleganckie rozwiązanie - to zadeklarowanie tego w postaci struktury (której jedynym polem może być tablica) i zdefiniowanie w programie domyślnej wartości jako const, po czym podstawienie tej stałej struktury pod analogiczną zmienną (C obsługuje operator podstawienia dla struktur...
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...
Witam, Volatile nie ma nic wspólnego z (nie)usuwaniem nieużywanych zmiennych ponieważ usuwanie tych zmiennych dzieje się na etapie linkowania. Konsolidator usuwa wszystkie symbole pozbawione referencji (oczywiście jeżeli jest ta funkcjonalność włączona). Sprawdź czy działa to bez volatile. Tylko użyj tej tablicy przykładowo w funkcji main.
Trochę dziwna ta deklaracja: Ja __attribute__((progmem)) używam raczej po nazwie zmiennej: sizeof tablicy dosyć rozbudowanych struktur (menu) umieszczonej w pamięci FLASH działa prawidłowo. Czyli konkretnie jakie wartości zwracają?
Do tablicy umieszcoznej we FLASH (PROGMEM) musisz odwoływać się przy pomocy specjalnych makr zdefiniowanych w pgmspace.h, np.: pgm_read_byte (&weber[i]);
Tak zadeklarowana zmienna wyląduje w pamięci RAM ... Zapomniałeś o atrybutach pamięci :?: -Wl,-section-start=moja_sekcja_ram=0x0 8 00100 Sekcja z wyżej wytłuszczonym argumentem, znajdzie się w RAM-ie. PS quod erat demonstrandum :D http://obrazki.elektroda.net/80_12503655...
... Po umieszczeniu tablicy w pamięci programu (dodanie PROGMEM do deklaracji) wywołanie powinno wyglądać tak? ... a=pgm_read_byte(FontLookup[ch - 32][i]); ... Nie zadziała :( ... a=pgm_read_byte(&FontLookup[ch - 32][i]); ... Zadziała :D Piotrek PS Nie znam struktury plików , w Twoim projekcie ;)
Ad 1. Błąd nazewnictwa, lub błąd interpretacji. W tym przypadku height zawiera informację o ilości wykorzystanych linii dla danego znaku w GLCD. Jedna linia to 8bitów - wspomniana organizacja pamięci sterownika. Nie robiłem nakładki z algorytmem umożliwiającym rozpoczęcie pisania dowolnej wielkości znaku na dowolnym pikselu z wielu powodów. Priorytet...
Np. *plik*(.text*) *plik*(.rodata*) Gwiazdki, bo plik jest ze ścieżką jeśli się nie mylę, a ścieżka bywa różna, więc "asterix" się przydaje.
czasem problemem okazuje się niestała stała - tablice stałych można przypuszczać, że będą tylko w pamięci flash - przeważnie okazuje się, że kompilator owszem zapisuje sobie tablicę w pamięci flash, ale z początku programu kopiuje sobie ją do ramu - w ten sposób można się odwoływać do komórek takiej tablicy jak do zwykłej pamięci ram (przestrzeń). Może...
Wygląda na to, że rzeczywiście musimy znaleźć sposób na prawidłowe adresowanie, adres bazowy i start pamięci flash. Próbowałem użyć tablicy partycji od początku pliku (0x9000), ale bez powodzenia.
(at)BlueDraco No i niby jak miałoby to pomóc? Przecież adres tej tablicy i tak nie będzie miał stałej wartości. Wystarczy lekko zmienić projekt albo dodać jakiś plik ze stałymi do kompilacji i całość się sypie. Może umieścić tablicę w swojej sekcji umieszczonej pod koniec pamięci FLASH.
Dobrze byłoby, żebyś pokazał przynajmniej newralgiczną część kodu (definicje tablic)! Jeżeli chcesz mieć tablicę we FLASH, to trzeba użyć nie (tylko) modyfikatora const , ale atrybutu PROGMEM lub równoważnego. Czy robisz to poprawnie? Czy kompilator nie pokazuje żadnych ostrzeżeń?
(at)dasej Jest jakiś techniczny argument za tym aby uprawiać tego typu archeologię?
Moge Ci podpowiedziec: na stornie ZILOGA znajdziesz takowy oczywsicie z calym opisem. Bardzo fajna strona. A i ich konweter od razu robi plik gotowy do wsatwienia w C, ja programuje AVR'y i jest OK, trzba tylko dopisac zeby wstawil te tablice we flash.
Zastosowałem w innym miejscu, przy wpisywaniu do przetwornika DAC To nie jest zbyt dobre rozwiązanie. Po przekopiowaniu tablicy z FLASH do RAM przeskaluj dane w pętli, a w ogóle to najlepiej byłoby gdybyś już we FLASHu takie dane umieścił.
W sumie racja, bo wygenerowac sobie wartości potrafie tylko nie wiem właśnie jak ugryźć zapis do pamięci FLASH.
Zgadza się - const spowoduje umieszczenie tablicy we Flash. Brak const spowoduje umieszczenie tablicy we Flash i w RAM. :)
Korzystam z tego: http://caladan.jogger.pl/2010/11/06/impl... menu. Działa i to działa świetnie. Przerobiłem tylko na wersję z tablicą we flash bo szkoda RAMu. Raport: Można by umieścić przekierowanie do tego tematu: https://www.elektroda.pl/rtvforum/viewto... tutaj są umieszczone...
gps79 sorry, ale czy Ty czytasz tylko sam kod w moich postach, czy również tekst ? "Ale ja nigdzie nie deklaruję tablicę stringów niezmiennych const char *. Wydaje mi się, że raczej dokładnie opisałem, co robię. Napisałem, że jeśli utworzę tablice w pamięci flash" JEŚLI....... Natomiast w czasie rzeczywistym w programie docelowym nie tworzę tablic we...
w necie masz pelno informacji na ten temat. Mozesz wgrac do procka (w eeprom lub flash) tablice (bitmape) ktora wysle ja do lcd i on ja ladnie wyswietli. Powiedz co chcesz wiedziec dokladnie, bo obsluga tego wyswietlacza jest bardzo prosta.
. Możliwe. Najważniejsze są tablice inicjalizacyjne, które mają.
_PREDATOR_ MaximusOktoOk ma racje. Jeśli Pen nie daje zapisywać to ewidentnie nie jest to problem programowy Jedynie format narzedziami do zarzadzania z poziomu flash rom ( twoj to NT2033CMS ).
Oczywiście powinieneś dać long zamiast int ale to tylko jedna rzecz. Pozatym 0xffffffff nie zmieści sie do longa. Zmieści się za to do unsigned longa. A teraz dlaczego nie działa: wskaźnik musisz zadeklarować tak jak zmienna na która ma wskazywać. W Code vision są rozdzielone przestrznie adresowe i musisz dodać do deklaracji wskaźnika flash jeżeli ma...
Nie przesadzajmy, do tego nie trzeba orłów, są gotowce kodów do tego. Przepis na gotowca tylko z jednym układem na 35kB pendrive: bierzesz pic18f26j50, Microchipowy kod Device - Mass Storage - Internal Flash. I już. Można ambitniej: wywalić ichnie MDD i zastąpić go petitfat, zrobić image fata narzędziem mkdosfs, wgrać image jako tablica do flash. Msd...
Jeżeli stosować się do porady kolegi wyżej można by zastosować tablice tylko dwu-wymiarową.Chcąc mieć 3 poziomy wystarczy nam 3x n gdzie n będzie ilością funkcji danego poziomu a ostatni trzeci odnosnikiem do konkretnych funkcji (za pomocą właśnie wskaźnika) Przyznam że pomysł fajny i relatywnie prosty szkoda że sam tak nie robiłem w moim systemie...
Też kiedyś o tym myślałem: http://www.elektroda.pl/rtvforum/topic18... Ja bym umieszczał CRC gdzieś na początku programu (w temacie wyżej było na końcu bo był z góry znany rozmiar pamięci FLASH). Rozwiązanie z umieszczaniem tego w tablicy wektorów albo tuż za ostatnim elementem tablicy wektorów jakoś najbardziej mi się podoba.
I jak zdobyć pliki do tworzenia tablicy? Czy mogę zapytać?
flash znaczy ze ta tablica jest wpisana "na zawsze" w pamięć programu (flash). Nieznajduje sie ona w ramie, jak to by bylo przy deklaracji bez modyfikatora "flash". Avr rozdziela pamięć danych i pamięć programu, a natywny ANSI C juz nie, dlatego dostosowano C do avr-a w ktorym te dwie przestrzenie pamięci są oddzielne.
. może moja tablica partycji jest dla 2mb flash czy coś. to jest płyta 4mb. Pokombinuję.
Mam ich mnóstwo i zdecydowałem się poświęcić jedną żarówkę, aby móc użyć Cloudcuttera na pozostałych, jeśli wszystko się uda. Udało mi się pomyślnie przeflashować żarówkę metodą Cloudcuttera. https://obrazki.elektroda.pl/7127409900_... Nazwa modelu wytłoczona na podstawie: https://obrazki.elektroda.pl/8592700500_...
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]...
Nawet specjalnej funkcji nie musisz pisać: http://winavr.scienceprog.com/avr-gcc-tu... Albert
Tyle że ta tablica jest we flash nie w ramie ;)
Problem w tym, ze zapewne tablica fontow siedzi we FLASH (chociaz z zalaczonego programu wcale to nie wynika). A skoro jest we FLASH to nie mozesz odwolywac sie do tych danych poprzez zwykla dereferencje wskaznika, bo AVRy maja architekture Harvardzka i rozlaczne przestrzenie adresowe. W efekcie do danych we FLASH musisz sie odwolywac poprzez specjalne...
Na wyjściu dostaje piski i nic więcej. Pomocy :/ Proponuję podejść do tego nieco inaczej. Na początek usuń całą komunikację z kartą SD. W pamięci Flash (tablica z kaluzulą PROGMEM) umieść próbkę sinusa 1kHz - jeden okres by danych nie było zbyt dużo. Napisz fragment programu który miałby ten sinus odtwarzać cyklicznie przez PWM. Tutaj masz prawie gotowca....
Mam pytanie-propozycję: Czy możesz wrzucić do pamięci Flash mikrokontrolera tablicę uint8_t w której jest problematyczny kawałek MP3 320kb/s? Niech read_pointer z Twojej funkcji mp3_process wskazuje na początkowy bajt tej tablicy we Flash. Pozbywamy się w ten sposób problemów wynikających z (być może) błędnej obsługi / odczytu karty SD. Drugie moje...
Znalazłem informację, że: text + bss = FLASH data + bss = RAM To powinno wygladac tak: text + data = FLASH data + bss = RAM Zmienne zainicjalizowanie (.data) powinny zostac przekopiowne z FLASH do RAM przed funkcją main. 1) Deklarujesz tablice i ja inicjalizujesz (bedzie zajmowala miejsce we FLASH oraz RAM) 2) Tylko flash. 3) Zadeklarowałeś tablicę...
Nie przekraczam, próbowałem w celach testowych, zadeklarowałem jedną tablicę ok. 6kB. Dla __flash nie sprawdzałem...robiw
Witam serdecznie. Mam problem zakładam, że jak zwykle mały, ale nie mogę go przeskoczyć, google niby coś tam podpowiada, ale nie do końca to się sprawdza lub nie mogę tego zrozumieć... Otóż, chciałbym utworzyć tablicę, na przykład: var myItem = new Array(); myItem[0] = "Item1"; myItem[1] = "Item2"; myItem[2]...
Witam, Mam następujący problem z biblioteką HAL do zapisu danych w pamięci flash. Posiadam dwie tablice 160 elementowe tabX oraz tabY (typ int16). Chciałbym zapisać dane te w pamięci nieulotnej flash, a dokładnie w adresach 0x08080xxx oraz 0x08090xxx. Cały mój problem pojawia się przy dokonywaniu polecenia EARSE przy zapisie drugiej tablicy. Aby poprawnie...
Użyj timera1 w trybie CTC (zobacz w dokumentacji). W tym trybie timer1 liczy od zera do wyznaczonej wartości, generuje przerwanie (SIG_COMPA1), a następnie jest automatycznie zerowany. W ten sposób unika się rozbieżności związanej z opóźnieniem pomiędzy generacją przerwania a wpisaniem nowej wartości do TCNT1. Dodatkowo sugeruję zdefiniowanie F_CPU...
Oczywiście, jak przystało na forum techniczne, ani słowa o kompilatorze i platformie. W takim razie standardowo na przykładzie GCC. Opcje kompilatora -fdata-sections oraz konsolidatora --gc-sections usuwają zmienne nieużyte w programie. Ale... Stworzylem tablice ze wskaznikami do poszczegolnych czcioneki chcialem poprzez ta tablice odwolywac sie do...
Wiec od konca. Adresy pamieci FLASH, EEPROM i SRAM pokrywaja sie. W zwiazku z tmy istnieja inne instrukcje assemblera umozliwiajace dostep do FLASH i SRAM. EEPROM nie jest mapowany w przestrzen adresowa procesora, do niego dostep odbywa sie za pomoca specjalnych rejestrow (z wyjatkiem XMega, gdzie EEPROM jest w przestrszeni adresowej). Dlatego nie istnieje...
Witam, W jaki sposób skopiować zawartość tablicy która jest w pamięci flash do tablicy w pamięci RAM, Czy trzeba odczytywać bajt po bajcie, i później zapisywać do tablicy RAM czy da się to zrobić szybciej jakąś gotową funkcja jak memcpy? Np. mam taki kod; [syntax=c]#include <avr/io.h> #include <avr/eeprom.h> char tablica[22]; EEMEM char...
Te tablice int[] powinny być zdefiniowane jako PROGMEM w programie. Wtedy nie zajmowałyby pamięci SRAM, zajmowałyby miejsce tylko we Flash.
Wydaje mi się że powinno być: [syntax=c] pomoc=pgm_read_byte(&(obrazekt[4])); [/syntax] Druga rzecz to że czytasz bajty a zmienne masz w tablicy 16 bitowe. Marek
Program jest we flash-u a tablica, którą tworzysz jak i wszelkie inne zmienne są w ram-ie gdzie i stos też ma się zmieścić.
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,...
A co przeszkadza że ta tablica jest w RAMie? Widac kompilator uznaje że tak jest optymalniej, jak zabraknie pamięci to powinien ją przenieść do flasha.
Robię sobie tablicę unsigned char tablica To zależy od kompilatora. Dla avr-gcc trzeba dodać do deklaracji PROGMEM i do odczytu używać makr pgm_read_byte/word itp. W przypadku IARa wystarczy _flash.
stm32f103 albo 105 mają więcej ram (niż f0) jeśli już tylko o tym rozmawiamy ;) 4x szybszy zegar od megi, a do tego usb - wiele lepszy niż uart. wersję z 64kB ramu i 128kB flash f105 można kupić na allegro za 12zł - ciężko będzie to czymkolwiek przebić ;)
(at)idepopizze Chyba tak zrobię... Problem z tym, że jak dojdą jeszcze z 2 języki to kodu będzie od groma! Jak nic nie wymyślę to najwyżej w międzyczasie pomyślę nad implementacją menu pomysłu tadzika. po prostu szukałem pomysłu na zapis stałej... nawet jeżeli miałoby się to wiązać z resetem programu czyli: - wybierz język (0-3) - zapisz stałą do flash:...
Tablica w pamięci kodu (z tym, że przykład jest dla char): http://mirekk36.blogspot.com/2013/11/tab... Mając taką tablicę wyszukujesz pomiędzy którymi punktami tablicy leży wartość i liczysz https://pl.m.wikipedia.org/wiki/Interpol...
Witam Potrzebuję zarezerwować fragment FLASH na tablicę ze stałymi, znajdującą się pod stałym adresem. Ma to umożliwić programowanie tych danych niezależne od kodu. Najlepiej by było, gdyby to był obszar o niskich adresach, np zaraz po wektorach przerwań. Czy jest w GCC jakiś mechanizm, pozwalający na wyłączenie bloku FLASH, by nie był w jego obszarze...
Chciałeś tego oprogramowania Dziękuję bardzo. Próbowałem tego, ale wróciło do pierwotnego zachowania, co pozwala mi sądzić, że problemem jest albo oprogramowanie zapisane w pamięci flash NAND, albo najprawdopodobniej inny problem gdzieś na płycie. Chyba będę musiał kupić nową tablicę. Zrobię kopię zapasową pamięci flash SPI i spróbuję także wykonać...
1. %02 http://mikrokontrolery.blogspot.com/2011... 2. [syntax=c]if(txt[x]==0) break;[/syntax] przerywa pętlę wysyłającą dane, gdy osiągnie koniec ciągu znaków, który to jest bajtem o wartości zero umieszczonym w tablicy txt[] przez funkcję sprintf.
No fakt, jeśli wewnątrz funkcji to powinno być static const. Na zewnątrz zresztą też tak powinno być, o ile tablica nie musi być widziana przez inne moduły.
Popraw mnie jeśli się mylę, ale mamy do dyspozycji 128B pamięci eeprom i 128B pamięci sram. Jak by tablica miała stałe wartości, to można by umieścić ja w pamięci flash, ale tu zawartoś tablicy będzie zmieniana.
Sprawdzałem, dalej krzaki
Witam! Jak w AVR-GCC zapisać tablice z danymi pod konkretnym adresem w pamięci flash procesora? Będę wymieniał te tablice za pomocą bootloadera w zależności od wersji urządzenia dlatego muszę mieć je zapisane pod odpowiednim adresem. Jest coś takiego jak dyrektywa "ORG" w asemblerze? Pozdrawiam
Witam Niby prosta rzecz a nie wychodzi mi... Chce umieścić łańcuchy znaków w pamięci FLASH przy użycium atrybutu __progmem oraz symboli __flash o __memx. W każdym z przypadków dane nie mogą znaleźć się w pamięci FLASH. Mało tego, podgląd pamięci w Atmel Studio podczas debugowania nie wskazuje nawet że dane te znajdują się w pamięci SRAM. Uzywam płytki...
No tak, zmniejszenie sekcji flash tak aby binarna tablica była "bezpieczna" jest dobrym pomysłem, ale nic ponadto bym nie robił, bo szkoda czasu (; 4\/3!!
wiem, że nie posiada i trzeba makra, tak jak w przypadku tablicy w pamięci flash. I właśnie sądziłem, że będzie analogiczna możliwość odnośnie pamięci EEprom
Musisz uzyc polecenia PROGMEM np const char tablica1[] PROGMEM="cos tam";
Moim zdaniem zdecydowanie lepiej, niesądzisz? Przede wszystkim zysk jest taki, że multipleksowanie robi się "samo" i w main sobie piszesz co chcesz. Popracuj jeszcze nad jedną kwestią, która zmniejsza czytelność kodu - zasięg zmiennych. Zastanów się, które zmienne naprawdę muszą być globalne, a które nie. Te, które nie muszą zrób jako zmienne lokalne....
Bo przekazujesz element o indeksie [i6][0], a nie [i6][1], a tak naprawdę powinno temu towarzyszyć jakieś ostrzeżenie, bo zamiast elementu o typie int dajesz wskaźnik na tablicę jednowymiarową int. Druga sprawa, że jeśli tablica jest we FLASH to żadne z tych wywołań nie powinno zwracać prawidłowych elementów, bo dostęp do nich jest nieprawidłowy - dane...
W EP03'2018 był artykuł z przykładami. Po co kopiować tablice do RAM, jeśli możesz się do nich dostawać bezpośrednio (po adresach) przez QSPI?
Chciałem się zapytać czy ten przykład od Freddie Chopin'a pasował by do STM32F2. Czy trzeba coś zmieniać prócz rozmiaru pamięci Flash, RAM i tablicy wektorów przerwań ?
Tablicę stałych umieszcza się w flash lub ewentualnie w eepromie w ramie mają być zmienne ,stos.
Bardzo ciekawe, czyli to jest na nowo zaprojektowany cały chip tak, aby był zgodny z rozkazami oryginalnego NESa? To ma sens... To teraz tylko pytanie jaki jest format danych na tej kości Flash, czy tam na początku jest jakaś tablica zawartości, offsety i rozmiary osobnych ROMów, gdzie można dopisać programatorem dodatkowy wpis, czy coś bardziej złożonego...
Czy dobrze się doczytałem że w CortexM0 nie mogę sobie ustawić tablicy na inny adres w pamięci flash?
Te pliki powinny być dobre. W readme w Pioniero 4.0 mozna przeczytać: "Jeśli chcemy odczytać tablice kanałów i transponderów zapisanych w pamięci flash, należy podać adres, gdzie ta informacja jest zawarta i 50000 (320Kb) lub więcej jako długość. Jak dotychczas ten rodzaj plików miał długość 80000 (512Kb) , ale odczytywanie pamięci flash z taką długością...
openOCD sprawdza czy ma możliwość porgramowania układu po nazwie zawartej w tych strukturach Przecież te nazwy to tylko nazwy obiektów. Równie dobrze wszystkie mogłyby być nazwane losowymi ciągami znaczków. OpenOCD niczego nie przeszukuje sprawdzając czy może programować, tylko to użytkownik musi zadeklarować jaki driver jest użyty w danym układzie....
zastanów się też nad użyciem fusa EESAVE, który blokuje czyszczenie eepromu podczas kasowania pamięci flash, przydatne :)
Ewentualnie zrobic tablice stalych przeliczajaca na procenty. Pamieci Flash masz bardzo duzo wiec taka tablica z 1024 wartosciami spokojnie sie zmiesci. A po co robic takie dokladne pomiary jak wykorzystujesz tylko 1/10 tej dokladnosci. 1024/100% Pozdrawiam Dexter
Wydaje mi sie ze wystarczy zapisac const unsigned char ale w C wartosc const mozna zmieniac przez wskaznik, wiec nie wiem czy to bedzie poprawny zapis dla danych zapisanych w FLASH.
(at)tmf: ...ale autor tematu napisał, że print_str(strr też mu nie działa prawidłowo. Myślę, że prawdopodobnie kompilator ma problem z określeniem rozmiaru struktury i - co za tym idzie - obliczeniem wskaźnika do następnego elementu tablicy struktur. Proponuję dodać w strukturze rozmiar ciągu znaków: Musisz to tylko przerobić na swoje potrzeby, czyli...
Masz rację, zapomniałem o tym. To tablica w pamięci Flash załatwi sprawę, plus warunek dla przestępnego...prefix
A więc tak to wygląda... no cóż - faktycznie sądziłem, że kompilator traktuje dane z tablicy (przekonwertowanego pliku dźwiękowego) "takie jakie są" czyli nic z nimi nie czyni, po prostu wpisuje tablicę jak leci do pamięci flash.
Witam, zajmuję się przetwornikiem DAC w STM32 i chciałbym odtworzyć jakiś prosty dźwięk. Czy jest może program który z pliku .wav zrobi mi tablice bajtów, tak abym mógł zapisać ją w pamięci FLASH mikrokontrolera?
witam dane: kompilator CV na AVR. prosze o pomoc bo nie wiem jak to rozwiazac a mianowicie... mam zadeklarowane dwie stale tablice znakow: flash char tak[]="TAK"; flash char nie[]="NIE "; zadeklarowana tablice wskaźników do tych stalych: flash char *wyborptr[2]={tak,nie}; mam nastepne stringi we flashu: flash char jeden[]="JEDEN "; flash char dwa[]="DWA";...
Pamięć jest zorganizowana w komórki 16-bitowe, objawia się to np tym że wskaźnik programu wskazuje na słowo (2 bajty) a nie na bajt. Wszystkie instrukcje muszą być więc wyrównane do granicy dwóch bajtów. Jakkolwiek z poziomu samego programu pamięć flash jest zorganizowana bajtami, więc spokojnie można w niej umieszczać tablice bajtów bez utraty pamięci....
To zapis np: [syntax=c]const uint8_t tablica[];[/syntax] Spowoduje że ta tablica będzie już umieszczona w pamięci FLASH?
zobacz co masz w offsecie 0xE0 w tablicy wektorów (tej we flash)
Ok teraz chyba rozumiem, czyli np: [syntax=c]void fun( uint16_t * zm ); fun( &zmienna_flash );[/syntax] tak by wyglądała deklaracja funkcji w której argumentem jest wskaźnik a niżej jej wywołanie w programie. Gdyby chodziło o tablicę w pamięci flash to np: [syntax=c]uint16_t tablica[] PROGMEM = {512,3,1333}; void fun( uint16_t * tb );[/syntax] a potem...
Można, jak najbardziej, jeszcze jak Źle sformułowałem pytanie chcąc uniknąć dodatkowego hartware Programem Audacity skonwertuj dźwięk na mono, częstotliwość 8kHz, możesz odsłuchać jak będzie brzmiał. Jak chcesz oszczędzić pamięć zmniejsz częstotliwość do 6 czy nawet 4khz. Skonwertowany dźwięk zapisz w formacie RAW. W kolejnym kroku wygeneruj z pliku...
1. Dlaczego każdy bit przechowujesz na 16 bitach w pamięci RAM (typ int) zamiat trzymać po 8 bitów w jednym bajcie pamięci Flash? 2. Co pisze kompilator o zajętości pamięci RAM? 3. Skróć program min. 20-krotnie, wyrzuć wszystkie switch() i użyj prawdziwej pojedynczej 2- lub3-wymiarowej tablicy do przechowywania obrazów znaków. W ten sposób całe wyświetlanie...
Heyka mam takie pytanko ile procent pamięci flash mogę użyć na przechowywanie danych. Jeśli na przykład mam 1 mega . A program zajmuje niewiele do 100KB to mogę z 750 wykorzystać na dane zbierany podczas pracy. Jak zapisać dane do pamięci flash bo tablice to są chyba w pamięci SRAM przechowywane. Pytam się bo potrzebuje miejsca na zapis danych z akcelerometru...
Tak, nie do końca poprawne informacje. Na module SM-028_V1.3 - BL602L20. Drugi moduł pod ekranem. jest to wersja N, a nie M, jak podano na stronie tuya i na tym forum. O UART2 nie wiedziałem, sprawdzę teraz. w module CB3S cyklicznie zrzuca log: . Info:CFG:####### Boot Count 6633 ####### Info:MAIN:###### tryb bezpieczny aktywowany - błędy rozruchu 6633...
Ogólnie to jasne, że wiadomo kiedy można sobie pozwolić na usunięcie volatile, jednak zastanawiam się w takim przypadku tablicy adresów portów, hmm. W końcu ten adres nie może się zmienić tylko wartość na porcie. Mogę zadeklarować tablicę typu volatile uint8_t * ale jaki to ma sens? Przecież ta tablica ma specyfikator PROGMEM, więc same adresy nie są...
Cześć, w każdym razie ciało ma rozdzielczość Pixel LED TV LE-50D1 50 "1920x1080 tablica: T.EMU380.81 Flash eeprom: GIGADEVICE 25Q32B / GD2532B taki sam Będę wdzięczny dzięki zaawansowanym.
tablica flash tablica chara flash tablica wektorów flash
pomiar prądu pomiar pradu zasilanie cursor iskrownik ustawić
74hc00 schemat zablokowane drzwiczki pralki
Stacja bramowa HIKvision rozłącza się ze stacją domową - przyczyny i rozwiązania Resetowanie żółtej diody TPS w Hilti TE 56 ATC