Moim zdaniem najlepiej zacząć od ESP32-S3. Ma wszystko to, co inne układy z rodziny ESP32. Oczywiście, wiele osób zaczyna od "tradycyjnego" ESP32, ale głównie ze względu na niskie koszty. Koszt ESP32-S3-DevKitC-1 na ali to ok. 30 PLN (16MB FLASH 8MB PSRAM), w Polsce ok. 50 PLN. To jest oficjalny moduł Espressif. https://obrazki.elektroda.pl/9509216700_...
Witam, Według mnie powinno być tak (przykład dla stałych tekstowych): static __tinyflash char str1[] = "Stała pierwsza w pamieci FLASH"; static __tinyflash char str2[] = "Stała druga w pamieci FLASH"; char __tinyflash *str; // wskaźnik do stałej w pamięci FLASH void main( void ) { str=str1; //przykładowe...
No to jeszcze raz tylko już całość i przetestowana na sprzęcie #include <delay.h> // Alphanumeric LCD Module functions #asm .equ __lcd_port=0x1B ;PORTA #endasm #include <lcd.h> eeprom char string[12]="Hello"; flash char stringf[12]="test eeprom"; void lcd_puts_ee(char eeprom *str) { char k;...
void LCDString(uint8_t ui8Y, uint8_t ui8X, char *cStr, enum Polar eNormalNegativ, char flash) { unsigned char ucNumberAscii; char ucChar; uint8_t uiNumberCharInLine=0; goto_YX(ui8Y, ui8X); // skacze pod pozycje yx na LCD for(unsigned char ucCounterChar=0; NULL!=cStr[ucCounterChar]; ucCounterChar++) { if(flash)...
...Zauwałzyłem, że po zadeklarowaniu w ten sposób liczba komórek RAM zmniejsza się:... Pamięci programu również :( Zajrzyj do pliku pgmspace.h , no i oczywiście do dokumentacji , a w lot zrozumiesz ;) #define EEPROM __attribute__ ((section (".eeprom"))) #define FLASH __attribute__ ((section (".progmem.gcc"))&...
Na szybko dokleiłem parę definicji aby przeszło przez gcc 753768
[syntax=c]__flash const char txt[] = {"JAKIS NAPIS"}; void LCD_Char(char data) { //funkcja wyświetlająca znak "data" } void LCD_Str(const char * text) { uint16_t i=0; while(text[i]) LCD_Char(text[i++]); } int main() { LCD_Str(txt); }[/syntax]
Niepotrzebnie tyle razy rzutujesz, możesz od razu char *cptrEEPROM=(char*)&DefaultWorg.... zarówno dla FLASH jak i EEPROM. Swoją drogą to nie widzę powodu dla którego dane powyższy kod miałby źle ustawiać cptrEEPROM.
A dlaczego nie skorzystać z dobrodziejstw Named Address Spaces? [syntax=c]const char T1[] PROGMEM = {"DS1307"}; const char T2[] PROGMEM = {"TESTER"}; const char * menu[2] PROGMEM = {T1, T2};[/syntax] To można od razu uprościć do [syntax=c] const char __flash * const __ flash menu[] = { (const char __flash []){"DS1307"}, (const char __flash []){"TESTER"}...
W nawiązaniu do porad kolegi tmf proponowałbym coś w tym stylu (być może strach przed kwalifikatorem __flash wynika z braku przykładów kodu :?: : [syntax=c] // przykład jak używać kwalifikatora __flash do umieszczania // danych w pamięci programu i jak się do nich odwoływać // kod gotowy do odpalenia w symulatorze Atmel Studio 6 // można zaobserwować...
Użyj rozszerzenia gcc dla AVR: __flash [syntax=c] struct record { uint16_t pos; const __flash char *txt; } ; const struct record tab[] = { {940, (const __flash char[]){"txt940"}}, {789, (const __flash char[]){"txt789"}}, {115, (const __flash char[]){"txt115"}} }; [/syntax] PS: oczywiscie sama tablica również może rezydować w pamięci flash: [syntax=c]...
O, następny zjadacz RAMu: char *daysName napisz to tak: [syntax=c]__flash const char * __flash const daysName[] = { (__flash const char[]){"Wt"}, (__flash const char[]){"Sr"}, (__flash const char[]){"Cz"}, (__flash const char[]){"Pt"} //...itd }; __flash const char* RTC_GetDayName(uint8_t dayOfWeek) { return daysName[dayOfWeek%7]; } //main.c //... __flash...
Jedyną dziwną rzeczą jest to, że konfiguracja urządzenia wskazuje, że jest to WB3S, jednak moduł to WB8P. Może to rzeczywiście jest „normalne”? Z porównania tych płytek wynika, że 8P ma lepszą charakterystykę wzmocnienia anteny 2 dBi w porównaniu z 1,2 i wyższą temperaturą roboczą 105°C w porównaniu z 85°C przy nowym układzie z pinami we/wy po jednej...
Proponuje użyć printf("%p",napis[c]); może to coś pomoże - gdzieś kiedyś coś czytałem że niektóre argumenty prints i sprintf konfiguruje (załącza/wyłącza) się na poziomie ustawień kompilatora 's' - the function argument is a pointer to a null terminated char string located in SRAM; 'p' - the function argument is a pointer to a null terminated char string...
https://github.com/Apache02/bk7252-cam/b... https://github.com/Apache02/bk7252-cam/b... Dlaczego mówisz o TLV, OTA i innych pracownikach, skoro możesz po prostu flashować partycję aplikacji? Struktura tabeli partycji opisana w https://github.com/YangAlex66/bdk_rtt/bl... struct fal_partition...
Czy w poniższym kodzie zmienne b1 i b2 będą zawierały wartość odczytaną z tej samej komórki pamięci flash ? #define K1 (*(volatile unsigned char *)0x013c000) unsigned char b1; b1=K1; procedura( 0x013c000); void procedura(volatile unsigned char *flash) { unsigned char b2; b2=*flash; ....
W gcc jest makro __AVR_DEVICE_NAME__ (zdefiniowane przez opcję -mmcu): https://gcc.gnu.org/onlinedocs/gcc-6.3.0... [syntax=c]#define STRINGIFY(x) #x #define TOSTRING(x) STRINGIFY(x) __flash const char device[] = TOSTRING(__AVR_DEVICE_NAME__);[/syntax]
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...
https://obrazki.elektroda.pl/1001752500_... Mark: VS.S358A3.2 USB Firmware Model: VS.S358A3.2 Features: Supports Full HD LCD panel. Supports network signal RJ45, USB 2.0, HDMI 1.4 and TV & # 65288; ATV and DTV (DTMB). VGA, AV input and headphone output. It also supports WIFI access. Based on Android 4.4, ARM Cotex A7 Dual Core CPU...
Nie do końca. To co zaproponowałeś to wyrzucenie PROGMEM, co spowoduje, że wskaźnik nie będzie we FLASH, ma być: const PROGMEM char *text; Nie powinno się PROGMEM używać z typedef. Jeśli wskaźnik już będzie w FLASH to można pole odczytać tak jak podałeś, lub użyć tego co pokazałem w przykładzie, czyli własnej funkcji GetAddr - robi ona dokładnie to...
aby zhefiniować wskażnik na string we flashu w codevision wpisuje: char flash* str = "ala ma kota"; jak zrobić to samo w winavr (gcc)
W Helpie CV znalazłem coś takiego: int sprintf(char *str, char flash *fmtstr [ , arg1, arg2, ...]) this function is identical to printf except that the formatted text is placed in the null terminated character string str. The function returns the number of outputed characters. jeśli jest identyczna czy podobna do printfa to wszystko...
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[]...
pgm_read_byte i PROGMEM to po staremu, po nowemu jest np, tak: static unsigned char __flash logo_bmp[]=....; I sprawę mamy załatwioną raz na zawsze a o <avr/pgmspace.h> zapominamy.
Mam nadzieje ze bootloader działa bo inaczej przez serial nie wgrasz. Revert to original firmware You will need an active serial connection! Download the latest firmware from the TP-LINK servers Using an hex-editor remove everything from offset 00000000 to 000001FF (this means that now the 1st character of the firmware is a 6 (or 36 in BIN)) Save that...
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, upatrzylem sobie Bizhuba 252, podpowiedzcie na co zwrocic uwage przy kupnie, jakies charakterystyczne dla tego modelu usterki? Po prostu jakas sensowna dla tego modelu metode ogledzin. Kopiarka ma podobno 15tys przebiegu, chociaz wpadlo mi gdzies juz w oko info, ze flash czy tez recovery zeruje countery, wiec jesli tak jest to te 15tys to tylko...
...Twoja wersja mi nie działa...z powodu "gwiazdki" ;) nastomiast działa mi takie coś... umieszczam dwie stałe w pamięci flash: flash char tak[]="TAK "; flash char nie[]="NIE "; teraz deklaruję tablicę wskaźników (o dziwo też musi być we flash! ): flash char *wyborptr Dodano po 2 ...prosze o pomoc bo nie wiem jak...
Jak deklarujesz tablice to wystarczy słowo kluczowe const i tablica wyląduje we flashu, a używasz jakby była w ramie, jak nie musisz modyfikowac to nie musisz kopiować. [syntax=c]const char tab[] = "tablica we flash";[/syntax] a jak juz musisz kopiować to standardowymi funkcjami memcpy, strcpy... [syntax=c]const char tab_flash[ 50 ] = { ... }; char...
Rozwiązanie to działa świetnie przy maksymalnie 2 komendach, W kodzie jest błąd. A to że czasem działa wynika najprawdopodobniej z optymalizacji. Zobacz co się stanie jak skompilujesz z opcjami -O0 Można tak: [syntax=c] // wskazniki z umieszczeniem w pamieci FLASH ;) const char * const cmds[] PROGMEM = {cmd_ledon, cmd_ledoff }; ///... //w funkcji TranslateCommand()...
Witam wszystkich! Niedawno kupiłem ten do mojej kolekcji, dostałem go bardzo tanio na wyprzedaży, ale normalna cena też jest dobra https://obrazki.elektroda.pl/9641001900_... . Znalazłem to interesujące, w porównaniu do pozostałych dwóch podobnych urządzeń, którymi się bawiłem ( https://obrazki.elektroda.pl/5383987000_...
Zajrzałeś do [url=http://www.nongnu.org/avr-libc/user... Pewnie nie. Masz tam przykłady odczytu danych z pamięci flash, np: [syntax=c] byte = pgm_read_byte(&(mydata[i][j])); [/syntax] Więc powinno wystarczyć coś takiego: [syntax=c] char str1[] PROGMEM = "String 1"; char str2[] PROGMEM = "String 2"; struct{ uint8_t a; const...
(at)wojlej 1. sizeof char jest zawsze równe 1 więc jest tu zbędne 2. Dwa razy kopjuesz dane. Najpierw do tablicy a później do struktury. Szybciej będzie bezpośrednio odczytywać do struktury tak: [syntax=c] char *tab = (char*)&Struktura_odczytana; for(i = 0; i < size; i++) { tab[i] = Read_EEPROM_BYTE(1+i); //Adres względny - sektor 7 } [/syntax]...
No właśnie odpowiadałem ci na tamten wątek ale okazało się że w trakcie go zamknąłeś. A pisałem właśnie że nieco inaczej będzie teraz trzeba odczytywać te dane z Flash ale to nie jest jakiś kłopot. Tylko na początek - małe sprostowanie bo robisz troszkę albo hmm bardzo dziwne rzeczy :( co to jest ? [syntax=c]const unsigned char MN01[] PROGMEM="Ustaw...
Wydaje mi się, że znalazłem przyczynę dlaczego flashvars nie działa. W flash_vars_read, przed ddev_read(flash_hdl, (char*)data, len - 1, start_addr), obliczany jest len. Ale w jakiś sposób wynosi zero. Tak więc, gdy ddev_read próbuje odczytać z długością -1, zawiesza się. Mały problem jest również z logiem. Podczas gdy logi OBK i bootloadera są przekierowywane...
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)));
(at)insmod czy masz RTL8720DN/BW16(E) i czy rtltool dla CSM działa na nim? Nie jestem pewien, czy w pełni rozumiem związek CSM z DN. Plik WBRG1.zip ma w sobie amebowy floader, więc CSM to nie AmebaZ2? A więc płytka RTL8720DN powinna działać z rtltoolem? ale wtedy dump w zipie ma nazwę z dm - ff_rtl872xdm.bin - literówka? rtl8720dn w zrzucie WBRG1 Dodano...
zrób sobie tabelę we flash np dla 20 pozycji (zdejmij sobie wartości eksperymentalnie) i dalej to już prosta arytmetyka z poziomu szkoły podstawowej.
Cześć chłopaki, Zamieszczam te informacje, jako pracę/odpowiedź na stare wątki dotyczące tego urządzenia: Earu EAKCB-T-M. https://obrazki.elektroda.pl/6650537900_... . Urządzenie nie jest wymienione w bazie danych urządzeń. Urządzenie zostało Charakterystyka urządzenia Płytka CBU wykorzystująca układ BK7231N. Magnetyczny przekaźnik...
1) Zapomnij, że istnieje coś takiego jak String... przynajmniej na Arduino. Używaj char (niestety z wszystkimi tego konsekwencjami). 2) Do trzymania komunikatów używaj pamięci FLASH, szkoda marnować RAM na każdy String w programie... czyli nie " Serial.print("Inicjowanie karty SD..."); " lecz " Serial.print(F("Inicjowanie karty SD...")); ".
Podstawową informacją na temat przebiegów niesinusoidalnych jest taka, że nie są wykresem funkcji sinus, ale co tu można napisać na 5-6 stron ? Przecież nie będziesz rysował wykresów np. przebiegu prostokątnego zmieniająć wypełnienie co 10%. Znaczną część tych przebiegów można za to przedstawić jako sumę przebiegów sinusoidalnych: Np. prostokąt o wypełnieniu...
Niestety wywala mi błędy przy kompilacji od jakiej wersji jest ta funkcja dostępna? mam dość stare WinAVR lub może jakaś biblioteka która to załatwi? Pozwolę sobie zacytować z innego postu pgm_read_byte i PROGMEM to po staremu, po nowemu jest np, tak: static unsigned char __flash logo_bmp Z tego rozumiem że trochę jestem zacofany może jakieś info co...
to jest mój downloader do pobierania każdego repo, każdej gałęzi, jako zip do pojedynczej lokalizacji. PAT opcjonalny Dodano po 1 +3kb. wygląda na to, że dodano kilka bitów efuse https://obrazki.elektroda.pl/2682655200_... Dodano po 21 . Bity Pythona za możliwością zapisu Tuya Uart Tool do Z2 (ref https://www.elektroda.com/rtvforum/topic...
tmf- jestem ciekawy co znajdziesz. Ja szukałem i po za dokumentem takim jak ten (i analogiczne chyba dla AVR DA czy megaAVR seri 0): https://www.microchip.com/content/dam/mc... to niewiele znalazłem i z tego niewiele wynika. Ten manual jest...
Niestety kolejny problem mnie przerósł: próba zapisu do flash powoduje zadziałanie: [syntax=c]if (getCurrentThreadControlBlock().getStack... == false) FATAL_ERROR("Stack overflow detected!");[/syntax] przy następnym SysTicku po operacji zapisu. Załączam mój kod. Kompilator informuje że atrybut longcall jest ingnorowany - mam nadzieję...
Udało mi się go skompilować (ten z SDK) z keil, ale wypisuje to: version ERROR Not found <" > command! . Dodano po 3 Udało się stworzyć mniej więcej działający ramcode tylko do odczytu flash. Szybkość transmisji wynosi 460800, jeśli 921600 lub więcej, zawsze nie przechodzi kontroli CRC na początku odczytu. Pełny flash dump w około minutę. int...
Avatar masz chyba raczej wersje alpha lub pre-alpha testerzy mają go od dłużeszgo, czasu pierwsze betatesty (w sumie nie wiem czemu nie nazywają tego alfatestami) rozpoczeły się jeszcze w 2003 roku, ja otrzymałem go w kwietniu roku 2004. WinFS będzie wersje które otrzymałeś to wersje developerskie, a nie testowe (Dev są bardzo mocno skrojone), dlatego...
Cześć, interesujące, więc czy mogę zapytać, kiedy pojawia się jako "parowalny" w aplikacji Tuya, czy jesteś w stanie *faktycznie sparować* i udostępnić go, tj. przejść całą drogę, aby był w pełni skonfigurowany w aplikacji Tuya? Pytam dlatego, że teraz jestem w stanie flashować OpenBk i deterministycznie wywoływać interfejs AP/web. Więc przechodzę przez...
W tej wersji: strcmp_P (i prog_char tu nie pomoże).
Mi wydaje się, że najlepsze rozwiązanie to lookup table. Koszt - maksymalnie 256 bajtów flash, najczęściej mniej bo upraszczasz program. Zysk: Pozbywasz się ifów, mozesz w programie pisać normalnie polskie litery i nie tylko. [syntax=c] ... const char LT[256] = {.....}; while (*text) { LCD_out(LT[*text]); text++; }[/syntax] Albert
tablica chara flash chara const chara chara const chara konwersja
wymiana pozystor samsung rf511 płyta wentylator motocykl
mikrokomputer cobra1 cisnieniomierz pompka
Termet MiniTerm, Ecocondens Slim E9 Error: Low or High Pressure Fault, F37/F40 Codes Junkers Cerapur Midi – odpowietrzanie kotła, ustawienie ciśnienia, auto-odpowietrznik