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;...
...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"))&...
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)...
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.
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; ....
aby zhefiniować wskażnik na string we flashu w codevision wpisuje: char flash* str = "ala ma kota"; jak zrobić to samo w winavr (gcc)
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[]...
[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]
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"}...
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...
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";...
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...
...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...
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...
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]...
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...
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ć...
Wygląda na przepełnienie stosu. Na początek wywal wszystkie stringi do FLASH, np. [syntax=c]__flash const char text[81]="ABCDEFGHIJKLMNOPRSTW" "NIE TA LINIA :( " " " "Maciek mowi: ";//PRSTUVWXYZabcdefghijklmnoprstuvwxyz1... [];'\\,./!(at)#$%^&*()`";[/syntax] i [syntax=c]snprintf_P(text, 21,PSTR( "%s%04d%02d%02d %02d:%02d:%02d "), dow, (uint16_t)time.year...
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()...
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...
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ę...
Witam Mam problem z wczytaniem pliku bmp na wyswietlacz graficzny w c (codevisionavr). Biblioteka jaka uzywam pisada funkcje: DrawBitmap(unsigned char flash* bitmap, unsigned char x, unsigned char y); jak przetworzyc plik bmp aby uzyskac np cos takiego: flash unsigned char strangelab[]= { 14,19 ,0x03,0xFC,0x00,0x00,0x00,0x00,0x00,0x00...
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...
Witam chciałem wyświetlić pojedynczy znak z tablicy i nie wiem jak to zrobić może pokaże na przykładzie : [syntax=c] char PROGMEM tab1[] = {"FLASH"}; char tab2[]={"AVR ATMEL"}; lcd_str_P(tab1[2]); //znak A lcd_str(tab2[2]); //znak R [/syntax] Wyświetlacz LCD to hd44780 biblioteka do obsługi lcd pochodzi z książki od mirekk36 niestety po skompilowaniu...
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...
W tej wersji: strcmp_P (i prog_char tu nie pomoże).
Na szybko dokleiłem parę definicji aby przeszło przez gcc 753768
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...")); ".
Witam, Mam pytanie czym mogę zastąpić napisany w winavr kawałek kodu: flash unsigned char tak aby kompilator WinARM nie wywalał błędów. Potrzebne mi to jest do wgrania obrazu przerobionego z bmp do wyśw. graicznego. Przykład z WinAVR: flash unsigned char icon1[] = { 0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,... 0x01,0x02,0x00,0x00,0x02,0x01,0x00,0x00,...
(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]...
(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...
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...
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...
witam Mam problem z deklaracją takiej tablicy w AVR Studio 4 (używam WinAVR-20070525 ) - nie rozumie deklaracji flash flash unsigned char unshifted[][2] = { 0x0d,9, 0x0e,’|’, 0x15,’q’, 0x16,’1’, 0x1a,’z’, 0x1b,’s’, 0x1c,’a’ };
Witam, Panowie, konkretne pytanie: Czy opłaca się stosować kopiowanie pamięci przy użyciu DMA zamiast memcpy? System jest wielowątkowy na FreeRTOS. Mam bardzo dużo kopiowania pamięci średnio po 15 bajtów. Wątek mógłby wstrzymać pracę i czekać na semafor z przerwania. Czy to sie jednak opłaca wydajnościowo? Przy okazji: Czy da się zmusić kompilator,...
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 zrozumieliśmy się ;] Mi chodzilo o to, czy kompilator sam pilnuje dostępu na dane spod wskaznika w wypadku: jeden raz generując asma uzywającego dostępu do RAM, to co zrobi kompilator, trafiajac na przypadek nr 2? Wygeneruje niejawnie drugą, 'identyczną' funkcję tyle ze uzywajaca instrukcji dostępu na flash? Logiczne by było, ze wskaznik, ktory...
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...
Dzien dobry! kod (przykładowy) jest taki: // to powinno byc rom (flash) const char *pszMenu const wcale nie lokuje danych do flash-a Ja robię to tak: prog_char ZNAKI
Niby prosta rzecz, a się wyłożyłem. Compilator Codevision, język C, procesor mało istotny. Jest sobie struktura, która ma siedzieć we flashu. Chcę tą strukturę zainicjalizować w momencie kompilacji (no bo jak inaczej - przecież ma siedzieć we flash'u) : [syntax=c] flash struct _cmdfunction { char *cmd[]; void (*ptrF)(void); } FunctionList={"text1",testip}...
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...
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...
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...
[syntax=c]void LcdText(rom const char *txt);[/syntax] ? Albert
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
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...
Nie można, gdyż nie można typom przypisywać atrybutów i to po prostu w zależności od wersji kompilatora nie zadziała. Jeśli chcesz cText trzymać w EEPROM to zmień char na wskaźnik na tekst i ten tekst umieść w EEMEM. Swoją drogą jeśli tekst w czasie życia programu się nie zmienia, to lepiej go trzymać we FLASH - raz, że masz go więcej, a dwa, że dostęp...
Masz const uint zamiast char. Nawet jakbyś mu zrobił cast na const char* to dostaniesz śmieci.
[syntax=c]class Foo { public: static constexpr char *Name = const_cast<char*>("asdfg"); };[/syntax]
Najogólniej nie powinieneś tego robić. Skoro funkcja przyjmuje wskaźnik o typie prog_char to znaczy, że spodziewa się wskaźnika do pamięci FLASH mikrokontrolera. Jak jej dasz wskaźnik do RAM, w dodatku z niekompatybilnego typu (int jest szerszy niż char) to nic dobrego z tego nie wyniknie. Dodano po 1 Jeśli z kolei chcesz dokonać konwersji to użyj itoa...
Czekaj, skąd uint32 jeśli wpisujesz do char[]? I podaj czego oczekiwałeś? Albert
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.
Witam, mam taki problem: char napis[] PROGMEM = {"test"}; // definiuję napis w pamięci FLASH typedef struct { char * wsk; // struktura ma zawierać wskaźnik do napis'u } t_text; // definiuję strukturę typu t_text t_text text PROGMEM = {napis}; // definiuję zmienną text typu t_text i odrazu ją inicjalizuję...
Uhm, więc utworzę niektóre znienne we flash: char version_flash[] PROGMEM =__DATE__" "__TIME__"\0"; Zastanawia mnie tylko czy jak używałem uart_puts ("| by przemek(at)tu.org.pl |\r\n"); to czy ten napis był we flash czy sram - po podsumowaniu z avrstudio wydaje się, że w sram (po wykasowaniu zmniejszyła...
Tzn, że program może działać dalej poprawnie a debuger wskazuje na to, że jesteśmy w np HardFaultHandlerze ? Mógłbyś nieco rozwinąć myśl ? Czasem może być jakiś problem sprzętowy/programowy/systemowy, który może spowodować wywalenie się debuggera, który będzie np. uparcie twierdził, że jesteśmy wciąż w jakiejś linii, choć mikrokontroler sobie wtedy...
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])
tak mi sie wydaje - jakies byly w arch. ZIP w NokiaAudioManager ver.2.1 sciagany ze strony Nokia A skad mozna np sciagnac?? Zapomnialbym o najwazniejszym-pod XP nie slychac charakterystycznego dzwieku podlaczania czegokolwiek pod USB
Musisz to zrobić jak w nastarszym C, bez modyfikatorów na flash itd ... [syntax=c]char Napis2[ MAXIM ]="CZARNY"; [/syntax] i gdzieś w kodzie decyzyjnym tam wpisywać. [syntax=c]strcpy(Napis2,"Zielony");[/syn... Jak w każdym podręczniku C na "duże" komputery.
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...
Wygląda na uszkodzenie COMBO ( procesor z pamięcią ). Charakterystyczny objaw. Jeśli Phoenixem nie pójdzie ani boxem to jak napisałem wyżej.
Zademonstruję Ci: Nowy projekt w Atollic for STM32: Bez modyfikowania skryptu linkera: https://obrazki.elektroda.pl/4714547300_... A teraz Twoje przezroczyste przypisanie: https://obrazki.elektroda.pl/8906289200_... Dopiero po dodaniu do skryptu linkera: https://obrazki.elektroda.pl/4995382700_...
Musisz uzyc polecenia PROGMEM np const char tablica1[] PROGMEM="cos tam";
Możesz przekonwertować plik na tablicę C (jest wiele narzędzi, poza tym to max kilkanaście linii w większości języków). Albo wygenerować od razu plik obiektowy i zlinkować z programem. arm-none-eabi-objcopy -I binary -O elf32-littlearm --set-section-flags .data=alloc,load,data,readonly --rename-section .data=.rodata plik.bin plik.o Dodaj plik plik.o...
Czy możecie mi wyjaśnić gdzie mam dopisać PROGMEM czy coś w tym rodzaju? Powinno wystarczyć przy deklaracji konkretnej zmiennej, a jak nie to wszędzie gdzie popadnie Polecenie: pStateFunc = pgm_read_byte(&menu_state[i]... nie działa. Jak to się robi prawidłowo? Wskaźnik do funkcji na pewno jest dłuższy niż 1 bajt, zapewne 2, ale...
A nie lepiej używać kwalifikatora __flash. Odczyt danych jest wtedy wygodniejszy, bo nie trzeba używać makr 'pgm_read_xxx()': [syntax=c]#include <avr/io.h> #include <string.h> #include <avr/pgmspace.h> // macro tworzy ciąg znaków we flash // i zwraca wskaźnik do tego ciągu #define PGM_STR(X) ((const __flash char[]) { X }) // należy...
Działa, zmienione kody bibliotek do pcf8833 w załączniku. Jako ostatni parametr funkcji podajemy wskaźnik na czcionkę rzutowany jako (unsigned char*). Czcionki w mojej wersji zapisujemy w pamięci FLASH układu. Dzięki za programik jeszcze raz za świetny programik;-)
Witam. Mam program do wyświetlania napisu na wyświetlaczu hd44780 jak go wgram to na wyświetlaczy nic się nie wyświetla nawet kratek nie ma. Co mam zrobić żeby wyświetlić napis. Programuję w eclipse. [syntax=c]/* * main.c * * Created on: 2010-03-31 * Autor: Mirosław Kardaś */ #include <avr/io.h> #include <avr/pgmspace.h> #include <avr/eeprom.h>...
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...
Mam same int'y, wszystkie funkcje które mam zwracają int'a. Czy umieszczając stringi we flash nie zwiększę zajmowanego miejsca?
No ta konwersja zastępuje mi dtostrf() mam nadzieje ze jest lepsza i szybsza String(val) nie działa? Z obiektu String zawsze masz dostępny wskaźnik char* przez myString.c_str(). Ewentualnie funkcja itoa().
(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...
literały są typu const char *, tylko przypadku, o ktrym mowa, kompilator nie ma jak wygzekwować, bo modyfikujemy nominalnie stałą umieszczoną w pamięci RAM wskazywaną przez wskaźnik na zmienną. To, że coś jest w pamięci FLASH nie znaczy, że jest typu const. W języku C literały nie są typu const char * w żadnym wypadku. Dlatego to: [syntax=c] char *text...
Masz gotowca: [syntax=c] //--------------------------------------... void InterpretujCmd( char znak ) { char const StrErrVal[] = "(at)Ev\r\n"; char const StrErrUnkown[] = "(at)Eu\r\n"; #define MAX_LEN_CMD 50 char static p = 0, cmd[MAX_LEN_CMD]; int cnt; char static buffer_str[100]; u32 baud; cmd[p] = znak; if ( p < MAX_LEN_CMD...
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]
...Z problemem wielkości czcionki już sobie poradziłem, natomiast mam kolejny problem: do wyświetlenia tekstu na lcd używam komendy lcd_print(0, 1,"Jakis tekst"); problem powstaje jeśli chcę wyświetlić jakąś zmienną, ponieważ gdy wpiszę lcd_print(0, 1, J); J to zmienna to kompilator wyrzuca mi błędy. W czym może być problem....
Serial to jakieś 30% całości. W tym momencie program jest za duży o jakieś 7% (~300 bajtów). Do tego celu używam kona arduino Blue pro micro ( odczytywane przez kompilator jako leonardo ). Problem w tym, że to nie koniec rozbudowy programy, a jedynie początek Czyli wstępnie, jak już nadmieniono, sprzęt za słaby do zadania. Ale możesz się pobawić np...
Sorki nie zauwazylem ze to progmem. Pointery w progmem nie istnieja w sposób tak rozumiany jak w normalnej pamieci - tak ze tak łatwo nie bedzie. [syntax=c]#define BUFFLEN 18 char __buff[BUFFLEN]; strncpy_P(__buff, (const char *)pgm_read_word(&(ptr_to_text[0])), BUFFLEN - 1); __buff[BUFFLEN -1 ] = 0;[/syntax] i dopiero mozesz wolac swoja funkcje cos...
char code* table[] = {'a', 'b', 'c', ...., };
Porównaj, komentarz chyba zbędny. #include <avr/pgmspace.h> const char st_w_RAM[]="abcd"; const char st_w_ROM[] PROGMEM ="tekst w pamieci flash"; Nie tylko tablice znaków: const float PI PROGMEM=3.14159; const float PARAMETRY[3] PROGMEM={1.212, 2.4, 3.56};
Proponuję zapomnieć o ESP8266 i użyć ESP32. To już inna liga niż 8266 a cena niewiele wyższa. To prawda, ale trzeba pamiętać, że framework Arduino to "prawie" chodzi z ESP32. Dodano po 7 Czy wiecie Panowie ile RAM ma NodeMcu V3 ESP8266? Oryginalny ma 4MB flash i ok. 50kB RAM (dla własnego programu), ale u Chińczyka można znaleźć klony z większą ilością...
Witam Mam SE T630 ,który nie chce zapisywać zdjęć.Telefon był flashowany, ale mu nie pomogło.Aparat normalnie sie uruchamia, po kliknieciu "chwyć" słychać charakterystyczny dźwięk, ale nie zapisuje zdjęcia tylko wychodzi do menu.I teraz jest pytanie czy moze być uszkodzony jakiś układ na płycie, czy to kwestia softu?Ze schematu wynika, że od aparatu...
Witam, Odkopałem starą 3330 i mam z nią dziwne problemy. Pamiętam, że nie miała dobrze wgranego softu - więc chciałem wgrać. Zazwyczaj dostaje "Timeout (check cable or contact)" w Rolisach 4.78b, 4.79. W 5.14 szybko przelatuje także przez błąd Timeout i radośnie wywala "Operation completed". Geoflasher - "Error: Test mode failed. Boot not responding...
Mówisz masz. Ten kod jest prawidłowy dla AT45DB161 więc musisz pozmieniac niektore parametry jak by co. Nie wrzucęci tutaj całego kodu ale tylko niezbedne fragmenty. Zresztą całego nawet nie mogę umieścić :D. Właściwie to interesuje cie tylko zapis więc: unsigned char act_buffer=1; // zmienna globalna void write_to_flash(unsigned char flash_data) {...
Ten procesor ma tylko 128 bajtow RAM, a twoja tablica ma 6*24=144 bajty. Zainteresuj sie atrybutem PROGMEM i umieszczaniem stalych w pamieci FLASH.
kombinowałem z tablicą struktur, ale kompilacja się wykłada na procedurze wyświetlania z pamięci Flash na LCD , która oczekuje char*, a dostaje strukturę TDzień_tyg (pewnie coś namieszałem z wskaźnikami), więc skorzystałem z pomysłu Raphaw i BlueDraco - rzeczywiście, jakoś to prościej wygląda ;-) Dzięki wszystkim.
nic sie nie pojawia :/ ps. jesli wkładam telefon do usb do komputera to słuchać ten charakterystyczny dźwięk wydawany przez komputer myślisz że coś można zrobić z pozycji PC ? Dodano po 34 warto też wspomnieć że jak wybierałem model w tym programie to możliwe że pomylilem się :/ i być może dlatego nie działa
Witam.. Mam problem z poprawieniem funkcji która będzie odczytywać dane z FLASH, ponieważ zależy mi na pamięci i chce jej troszkę zaoszczędzić. Mianowicie mam tak a funkcje która działa : [syntax=c] void LCD_string(unsigned char *s,unsigned char x,unsigned char y,unsigned char type,unsigned char mode) { unsigned char cx, sx; cx=x; sx=(((unsigned char)type>>4)&0x0f)+1;...
Jedynie słusznym SDK dla ESP8266 jest ESP8266_RTOS_SDK, które jest sukcesywnie przepisywane w stylu esp-idf. Czyli jest intensywnie rozwijane, a i obsługa ESP8266 i ESP32 ulega ujednoliceniu. Dokładnie to samo można powiedzieć o wersji NONOS_SDK, a wybór nie powinien mieć charakteru ideologicznego, a wynikać z konkretnych potrzeb użytkownika. Jeżeli...
Witam wszystkich czy ktoś mógłby podpowiedzieć jak uzyskać odliczanie czasu w sek na atmedze? w programie CodevisionAVR uzyskuje taki kod w którym niby jest już jakiś wietrzny timer ustawiam go nawet na 8MHz ale nie wiem jak wyprowadzić to odliczanie sekund np na lcd wystarczy żeby ktoś podpowiedział to a dalsza cześć czyli odliczanie minut i godzin...
Dzięki za szybką odpowiedź. Nie wiem czy mnie dobrze podałem przykład, z samą tablicą jedno i dwuwymiarową nie mam problemu, natomiast z tablicą w której elementem jest struktura w skład której wchodzi kilka zmiennych. sr xxl[10]; nie jest prawidłowym zapisem ponieważ "sr" odnosi się tylko do lokalizacji danej struktury. To jest przykład z helpa...
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...
Co do umieszczania kodu w odpowiednich przestrzeniach to trzeba zmodyfikować skrypt linkera oraz użyć atrybutów do danych i kodu aby kompilator odpowiednio stworzył obiekty. Ale to nie jest wystarczające. Trzeba dopisać trochę kodu w startupie jeżeli mają być zainicjalizowane (zerowanie też uznamy dla uproszczenia za inicjalizację aby nie tworzyć dodatkowych...
Niestety nie mam żadnego filmiku. Sprawuje się REWELACYJNIE. Za to podrzucę Ci gotowca bo ten na stronie wymaga sporo poprawek i domysłów co gdzie jest. Jest to wersja pierwotna która przechowuje w tablicy RAM. Funkcje których tutaj nie ma robią: LCDINIT - inicjalizacja wyświetlacza LCD_POS - ustawia pozycję: wiersz, kolumna LCD_CLS - czyści ekran LCD_PSTR...
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,...
Ok, dzięki za odp. Zauważyłem, że telefon reaguje na ładowarke charakterystycznym piknięciem. Sprawdze jeszcze na starszym Phoenixie. PS. Zastanawiam się czy jest sens płacić za wgranie softa ok.30zł czy może lepiej kupić jafa w trialu za ok. 80zł + kable za ok.50zł i mieć spokoj.
No właśnie mam tylko ns-pro i hwk ale hwk nie obsługuje eproma z ns-pro a onenand downloader ma tylko flash podstawowy master i slave
Sorki... mój błąd :-/ Przesyłam za to, na szybko wymyśloną, niezoptymalizowaną, ale wstępnie działająca (tylko na emulatorze - kody są, brak urządzenia) modyfikacje funkcji pod względem twojego problemu. O ile dobrze zrozumiałem że o to Ci właśnie chodziło :-/ W założeniu przyjąłem typowe liczydło mechaniczne tj. Stałe okno wyświetlania (zależne od...
Występuje wyjątek bo nastepuje dostęp RW do pamięci flash ktora jest tylko do odczytu a wszystkie stałe umieszczane są bezpośrednio we flash. Najprościej do funkcji dodać jeszcze jeden argument ze wskaźnikiem na bufor wyjściowy. [syntax=c]char *STRING_DeleteStr(char * dst, const char *string, const char *del, u8 mode)[/syntax]
Witam Chciałbym pod konkretnym adresem w pamieci flash (dla PIC32MX675F256H) umieścić odpowiednie dane, jak to zrobić? Próbowałem coś takiego static const unsigned char __attribute__((address(0x9D0... ) bufor[2] ="0"; ale nie do konca chce działać, kompilator C32 lub XC32.
tablica chara flash chara const chara chara const chara konwersja
diagnosta pytania pralka whirlpool bęben ociera kaseta adapter transmiter
pochłaniacz tuszu pełny telewizor samsung restartuje
RTX 3060 - Crashe PC na wysokich ustawieniach Jak zdemontować rozrusznik w Volkswagen Touareg R5?