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;...
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...
Ż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.
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
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...
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ą?
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.
A w jakiej pamięci przechowujesz tablicę picture[k]? RAM czy FLASH?
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...
Do tablicy umieszcoznej we FLASH (PROGMEM) musisz odwoływać się przy pomocy specjalnych makr zdefiniowanych w pgmspace.h, np.: pgm_read_byte (&weber[i]);
... 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...
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.
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ń?
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.
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ł.
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.
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...
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...
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...
(at)dasej Jest jakiś techniczny argument za tym aby uprawiać tego typu archeologię?
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.
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...
Zgadza się - const spowoduje umieszczenie tablicy we Flash. Brak const spowoduje umieszczenie tablicy we Flash i w RAM. :)
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...
(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.
. Możliwe. Najważniejsze są tablice inicjalizacyjne, które mają.
. może moja tablica partycji jest dla 2mb flash czy coś. to jest płyta 4mb. Pokombinuję.
I jak zdobyć pliki do tworzenia tablicy? Czy mogę zapytać?
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...
Nie przekraczam, próbowałem w celach testowych, zadeklarowałem jedną tablicę ok. 6kB. Dla __flash nie sprawdzałem...robiw
Tyle że ta tablica jest we flash nie w ramie ;)
Witam serdecznie, Poszukują gruntownych, wyczerpujących informacji na temat sposobu implementacji tablic funkcji do pamięci FLASH. Chodzi Ci o to, żeby trafiły do pamięci FLASH, a nie RAM? Jeśli tak to wystarczy zapis: [syntax=c] const int tablica={ 8, 7, 6, 5, 4, 3, 2, 1, 0 }; // tablica idzie do FLASH int funkcja(int argument) { return(tablica[argument]);...
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,...
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.
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.
Pracuje jako serwisant dla pewnej sieci staji paliw w Polsce, i osobiscie testowałem wpływ tzw fotoblokera na kamery znajdujace sie na stacjach. Wpływu absolutnie brak. Wiem, nie ma tu czynnika który dodatkowo oswietla tablice (flash itp), to raczej przestroga dla "kombinatorów" ;). Testy z aparatem+flash tez nie dały zauwazalnych korzysci ze stosowania...
_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 ).
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.
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...
Musisz uzyc polecenia PROGMEM np const char tablica1[] PROGMEM="cos tam";
(at)Freddie Chopin Dzięki - durny błąd (skopiowałem w nocy w złe miejsce) z mojej strony. Po prostu nie znajdował plików i fallbackował do tych "zaszytych" tablicy.
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...
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.
Czytam, kombinuje i nie bardzo mi idzie. Mam zdefiniowaną tablice z tekstem we flashu, oraz docelową która siedzie w RAMie Warning [2066] type qualifier mismatch in assignment Gdy wywołam funkcje wskazując jej BUF_LCD to kopiuje się OK, ale warning dalej jest. Jak to powinno wyglądać?
Aby wyjaśnić Ci Twój problem, podaję Ci metodę "czytania" typów zmiennych, który wyjaśnia wszystko. Jest kilka zasad: 1. Czytanie zaczynamy od nazwy zmiennej 2. Czytamy w prawo dopóki nie dojdziemy do "końca", po osiągnięciu "końca" czytamy w lewo od nazwy zmiennej 3. Obowiązują nawiasy, które są "lokalnymi końcami" Tak więc: const char * const l_wartosc[]...
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.
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
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...
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...
Nawet specjalnej funkcji nie musisz pisać: http://winavr.scienceprog.com/avr-gcc-tu... Albert
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
Masz rację, zapomniałem o tym. To tablica w pamięci Flash załatwi sprawę, plus warunek dla przestępnego...prefix
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...
Te tablice int[] powinny być zdefiniowane jako PROGMEM w programie. Wtedy nie zajmowałyby pamięci SRAM, zajmowałyby miejsce tylko we Flash.
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.
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...
Wydaje mi sie ze wystarczy zapisac const unsigned char Niekoniecznie, rownie dobrze moze byc zaladowany do RAM-u.Jesli to GCC to najlepiej dodac __attribute__((section(".text"))) zeby byc pewnym. ale w C wartosc const mozna zmieniac przez wskaznik, wiec nie wiem czy to bedzie poprawny zapis dla danych zapisanych w FLASH. To nie ma nic do rzeczy.
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.
(at)divadiow Nie, WBR1 jest nadal przylutowany do modułu TCLWBR, który ma własny arkusz danych na stronie Tuya. https://developer.tuya.com/en/docs/iot/t... Moduł zapewnia tylko zasilanie i translację poziomów do WBR1, nie sądzę, że powinno to powodować problem z UART. Kiedy flashuję standardowe oprogramowanie układowe Tuya...
zobacz co masz w offsecie 0xE0 w tablicy wektorów (tej we flash)
Tablicę stałych umieszcza się w flash lub ewentualnie w eepromie w ramie mają być zmienne ,stos.
Chodzi o linijki: ldi ZH, high(znaki << 1) ldi ZL, low(znaki << 1) etykieta znaki przechowuje adres początku tablicy w pamięci Flash, ale ta pamięć ma organizację słów 16-bitowych! Natomiast instrukcja LPM ładuje do rejestru wartość wskazaną przez Z, ale najmłodszy bit tego wskaźnika określa którą część 16-bitowego słowa...
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...
(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:...
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";...
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...
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ć ;)
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]...
Czy dobrze się doczytałem że w CortexM0 nie mogę sobie ustawić tablicy na inny adres w pamięci flash?
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?
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....
To zapis np: [syntax=c]const uint8_t tablica[];[/syntax] Spowoduje że ta tablica będzie już umieszczona w pamięci FLASH?
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 Zakupiłem 16GB SanDiska i chciałem zrobić go bootowalnego. Wcześniej miałem 8GB model i bez problemu grub4dosem zrobiłem sobie boota na nim. Niestety 8GB trochę zaczęło się sypać i zakupiłem coś nowego. Niestety nie mogę go zrobić bootowalnego bo grub4dos wywala problem tablicy partycji. Flash był już formatowany kilkukrotnie i ma system FAT32...
Z tym blokowaniem przerwań jest tak, że mam odtwarzanie dźwięku z tablicy w RAM przez DAC w kółko i chce zmieniać zawartość tablicy w RAM, kopiując z referencyjnej tablicy we Flash. Żeby to szybciej poszło, wolę zastopować an chwilę przerwania na czas podmiany. Można by to pewnie zrobić przy użyciu DMA, jeśli ten ma dostęp do pamięci we Flash (w AVR...
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ą...
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ą...
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...
jak zamienić kolejność bitów Zdaje mi się, że temat był już poruszany i jedną z dość przystępnych metod jest wydzielenie 256 (255 - bo po co zero odwracać) elementowej tablicy we flash gdzie danemu indeksowi x będzie odpowiadała wartość będąca odwróceniem wartości binarnej indeksu. coś jak: x____________________ y 00000001_____________10000000 00000010_____________01000000...
Może to ja czegoś nie rozumiem, ale z tego co rozumiem, to kicajbas dał Ci gotową receptę jak to zrobić, bez żadnych wykładników itd. itp. Robisz tablicę, w której masz już wszystko policzone - możesz wykorzystać 512 bajtów pamięci FLASH i to Ci da 256 wartości 16-bitowych. Teraz odczytujesz z ADC wartość 8-bitową, która bezpośrednio będzie adresem...
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.
Gdzie deklarujesz tablice (RAM,XRAM, Flash)? Co znaczy że się zawiesza i gdzie według Ciebie jest ten "początek" ? Z tego co pamiętam Keil nie ma zaimplementowanej obsługi ToolStick'a (programator/debugger) tylko sam symulator. Kompilator "wypluwa" jakieś błędy?
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
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])
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...
Wiem, ale ciekawość mnie zżera ;) Czy to jest poprawnie?: [syntax=c]*(volatile uint16_t *)(Page_127 + i) = ((uint16_t *)Tablica)[i];[/syntax]
Przeniosłem już tą tablicę do pamięci FLASH i wszystko działa :D A podpowiedziałbyś jak przedefiniować sobie matrycę do tego wyświetlacza? Chodzi mi o to żebym mógł podawać współrzędne x/y i w ten sposób zapalać wybrane ledy w odpowiednim momencie .
Mi się wydaje, że są tam jakieś zależności czasowe, że zaraz po zaprogramowaniu, jak i po włączeniu zasilania, DAC nie startuje, a po resecie tak. Kiedyś napisałem inny program na DACa na tego procka i w nim było kopiowanie tablicy z FLASH do RAM i być może ta czynność zajęła procka na tyle, ze ten DAC zastartował. Dziś kilka godzin spędziłem na analizowaniu...
Mam następujący problem: posiadam tablice diodową 126 na 15 LED i trzeba napisać drugi generator znaków (jeden już mam trochę o nim jest w poście Bascom i cuda które się dzieją jeśli admin uzna że oba posty powinny zostać scalone to proszę scalić zakładam nowy z powodu iż tamten był defakto o problemach z kompilatorem nie o samej tablicy) Sprawa wygląda...
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...
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...
Chyba dopiero zaczynasz z tymi tablicami ASCII :D Znaki od 0 do 32 (chyba) są niedrukowalne. Należą do nich CR Carriage Return i LF Line Feed. Numer 32 ma spacja. Kolejny to chyba wykrzyknik. Teraz jeśli masz tablicę z wzorami jak dany znak ma wyglądać, i na przykład w kodzie Autora informacja jak dany znak ma wyglądać mieści się w pięciu bajtach, to...
Mikroprocesor to PIC32 z zegarem 96Mhz, odczyt jest z karty SD lecz robiłem też testy wyświetlania bezpośrednio z tablicy zapisanej na FLASH i to samo. Dodam, że wyświetla mi się tak jak większości osób np na Youtube. Tylko jestem ciekaw co można przyśpieszyć.
Dzięki za przykład działa dobrze, tylko nadal mnie zastanawia czemu to nie działa, tym bardziej że ten kod powyżej jest o wiele łatwiejszy. Chyba wartość kodu ocenia się w pierwszej kolejności na podstawie jego skuteczności, a nie tego, czy jest łatwiejszy. No bo co z tego, że jest łatwiejszy, jeśli nie działa? Przykład, który podałem nie jest mojego...
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.
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.
flash tablica tablica chara flash tablica wektorów flash
zaczep schowek skaczące pingi kierownica toyota yaris
jacuzzi dmuchane jacuzzi dmuchane
Czy telewizory Funai mają system Android TV? Wsad pamięci SPI do dekodera Opticum H255