A może skorzystasz z biblioteki eeprom.h? Jest tam procedura eeprom_write_byte (uint8_t *addr, uint8_t val); - do zapisu [nie rozumiem tylko dlaczego adres jest 8-bitowy - przecież np. ATmega8 ma 512 bajtów EEPROMU...] oraz uint8_t eeprom_read_byte (const uint8_t *addr); - do odczytu bajtu. (Jest też fajna procedurka eeprom_read_word(..) / eeprom_write_word(..)...
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;...
Lepiej wykorzystaj do tego celu pamiec programu , ewentualnie eeprom. Sposob deklaracji tablic dla winavr : dla eeprom : #include <avr/eeprom.h> #define EEPROM __attribute__ ((section (".eeprom"))) unsigned char temp [20] EEPROM ={1,2,3,4,}; dla pamieci programu : #include <avr/pgmspace.h> static unsigned char temp_1 [2] PROGMEM = {1,2,3,4};
Witam. Nie bardzo rozumiem o co ci chodzi. To jest mikrokontroler 8 bitowy i pamiec jest zorganizowana w komorki 8 bitwe. Wiec jesli chcesz zapisac np zmienna typu int robisz to tak: zapis gornych 8 bitow -> zwiekszasz adres -> zapis dolnych 8 bitow/mozesz i odwrotnie ,zalezy to od twojego zapisu notacji/ i analogicznie robisz odczyt. Ponizej...
...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"))&...
Aby uzyskać dostęp do odczytu eeprom, trzeba ustawić bit EEMEN w rejestrze WMCON. Wtedy eeprom widziany jest jako pamięć xdata (adresy 0x0000-0x07ff), i odczyt odbywa się tak, jak zmiennych z przestrzeni xdata, np: xdata char eep_var; data char x; (...) WMCON |= 0x08;//wybor pamieci EEPROM jako XDATA x = eep_var; Dodatkowo aby móc zapisać EEPROM,...
Witam, bez wzgledu na platforme EEPROM jak kazda inna pamiec "przyjmuje" wartosci Byte, jezeli kompilator automatycznie nie zmienia char na byte to zorb to recznie a przy odczycie odtworz char. Pozdrawiam
Piszesz: [syntax=c]struct struktura{ ... char *cText; }; char text[] EEMEM="Tekst w EEPROM"; struct struktura str={.cText=text};[/syntax] Coś w ten deseń. Niestety nie da się zrobić tak, aby część struktury była w SRAM, a część w EPROM.
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.
to wiem, lecz ciąg mam otrzymywać z formularza i będzie lądował w tablicy (np. char[10].) do eeprom zapisuje zmienne uint_8, a ciąg otrzymuję jako char ?
Bardziej chodziło mi o wstawienie nop'a tak: unsigned char EEPROM_read(unsigned char Address) { //while(EECR & (1<<EEWE)); EEAR = Address; EECR |= (1<<EERE); asm volatile("nop"::... return EEDR; } Jeśli teraz działa, ale nie wiadomo co było nie tak, to nie można tego...
a jeszcze moge dodac jak to zapisac np do komórki pamieci nr100 w eepromie a potem to odczytac z tejze komórki czyli w skrócie adresowanie ? z góry wielkie dzieki No co Ty , żartujesz :?: eeprom int *eeptr; void main(void) { char a; a=0x11; eeptr=100; *eeptr=0x33; a=*eeptr; for(;;); } Piotrek
hmm jak dam: [syntax=c] char* k; k="a"; [/syntax] zamiast: [syntax=c] char k; k=EEPROM.read(84); [/syntax] to przy zmiennej: [syntax=c] $S [/syntax] działa, tylko teraz jak przejść z char z EEPROMu na char* ?:( Trzeba jeszcze przekonwertować z ASCII na tekst ? Tylko jak?
re. Odczyt pojedynczego bajtu dałem jak z noty katalogowej i co ciekawe - ruszyło - co prawda póki co sprawdziłem tylko w symulatorze, ale z rana sprawdzę jak uP to potraktuje. Mam jednakże pytanko. Przeglądając forum natknąłem się na informację, że można by stworzyć tablicę w EEPROM i komunikować się jak do zwykłej tablicy. Kod jest taki na to: #define...
Ogólnie to miałem na początku zrobione wszystko w metodach, wystarczyło podać adres i długość a dostawało się char*. Jednak ogólnie ESP pod Arduino ma spore problemy z ogarnięciem takich rzeczy. Po dłuższym szukaniu w sieci znalazłem podobny projekt. Zauważyłem że podczas wczytywania znaków z EEPROM osoba ta użyła: [syntax=c] String zmienna zmienna...
xdata char eep_var_Delta; //zmienna eeprom data char del; //zmienna w programie char EEPROM_zajety_z () //wskaznik EEPROM gotowy/zajety { if (EECON & 0x02) return 0; else return 1; } // ZAPIS // void EEPROM_zapis_Delta() //zapis Delty { EA = 0;//wylaczenie przerwan EECON |= 0x04; //wybor pamieci EECON |= 0x08; //aktywacja EECON |= 0x10; //zapis...
Modyfikator eeprom pewnie coś psuje. Nie znam tego kompilatora, ale spróbuj coś takiego: void strcpye(eeprom char* dptr, const char* sptr) { while((*dptr++ = *sptr++) != 0) ; }
witam, dobry przykład obsługi eepromu zamieszczony jest w dokumentacji od atmegi i wygląda to tak : void EEPROM_write(unsigned int uiAddress, unsigned char ucData) { while(EECR & (1<<EEWE)); EEAR = uiAddress; EEDR = ucData; EECR |= (1<<EEMWE); EECR |= (1<<EEWE); } unsigned char...
Bynajmniej nie chciałem urazić w poprzednich postach, jednak, moim zdaniem, dopiero przedostatni post autora tematu konkretnie wskazał problem. Nie znam za bardzo arduino, ale bazując na [url=http://codebender.cc/]kompilatorze online, obsługa eeprom w arduino jest identyczna jak w c. Przykład: [syntax=c]#include <avr/eeprom.h> typedef struct {...
Prawie dobrze, poza tym, że nie czytasz co tu ludzie piszą i psujesz kod coraz bardziej, teraz dodałeś zapis EEPROM w przerwanie zliczające impulsy, operacje na EEPROM są jeszcze wolniejsze niż liczenie na floatach, na koniec używaj do pokazywania kodu c/c++ Syntax, opcja w edytorze postu po lewej na górze: [syntax=c]Cytat: #include <Wire.h> #include...
Też miałem o tym napisać ale dałem sobie spokój bo to nie na temat. U mnie często wychodzi około 1M cykli zapisu. Dodano po 1 Możesz zapisywać dane w kodzie Gray'a. Często kilkakrotnie zwiększa to maksymalną ilość zapisów bo każdy bit w bajcie jest zmieniany mniej więcej tak samo często. Ale oczywiście zależy to też jeszcze od charakteru zmian zapisywanych...
A tak dla ciekawości - ile linii kodu należy wpisać, aby to symboliczne eeprom char x; Naprawdę nie namawiamy do niczego. Każdy rzeźbi jak lubi.
Najlepiej używaj jednego albo drugiego (string lub C string - czyli tablice znaków) wyłacznie bo to straszne mącenie. 1. Jak już używasz tablice znaków to pamiętaj aby na końcu dać '\0' Nie musisz czyścić [syntax=c] char char_relay1name[32]; relay1name.toCharArray(char_relay1name, 32); //int a = 0; for (int i = 0; i < relay1name.length(); ++i) {...
Ciężko ci to zrozumieć że od samego początku masz źle? void konwert2(char tekst char tekst do char pomoc ?
Zrobilem cos podobnego, tyle ze zapis na karcie SD. Generalnie problem jest dosc prosty, tylko musisz zrobic bufor (np cykliczny) do odbioru znakow z uarta, bo bedziesz gubic dane. Mozesz zrobic tak, ze odbierasz np 30 znakow i dopiero cala paczke zapisujesz w eepromie, w tym czasie inne znaki sa zapisywane w buforze. Dlugosc bufora musisz tak dobrac...
W zasadzie skopiowałem przykładowy kod z noty, nie działa mi zapis do wewnętrznego EEPROM'a, odczytuje ciągle 0xFF. Piszę w C, AVRStudio4, procek kręci się na 12MHz, nie mam włączonej żadnej optymalizacji (-00), nie wykorzystuje bibliotek, programuje mkAVRcalculator. Fuse bit's: LOW = 0xFF, HIGH = 0xD9, Extended = 0xFF, lock byte = 0x3F. [syntax=c]...
Witam ! Startuję dopiero z Codevision AVR i mam pytanko - nie znam dokładnie prodedur zapisu i odczytu z eepromu. czy ktoś mógłby mi coś podpowiedzieć. Przykład - chciałbym zapisać wartość zmiennej a ( typu char ) do eepromu a potem ją odczytać . Wszelkie gotowe rozwiązania mile widziane :-) Pozdrawiam
Witam Chciałem poszerzyć pole swojego działania w ATMEGA8 o zapis i odczyt danych z pamięci wewnętrznej uC EEPROM. Otóż znalazłem na 20 i 21 str. manuala ATMEGA8 funkcje w C zapisu i odczytu danych z EEPROM uC. Oto one: Zapis do EEPROM: void EEPROM_write(unsigned int uiAddress, unsigned char ucData) { /* Wait for completion of previous...
Witajcie. proszę o wytłumaczenie, jak poradzić sobie z takim problemem. Mam dwie tablice. Jedna umieszczona jest w RAM Dodano po 1 W sumie udało mi się temat rozwiązać przy pomocy stron: https://www.ibm.com/docs/pl/i/7.5?topic=... https://cpp0x.pl/forum/temat/?id=16370 Pomogła funkcja "strcpy" Jest może inna metoda ?
Witam mam następujący kawałek kodu: int main() { eeprom_write_byte ((char*)0x0001,'a'); eeprom_write_byte ((char*)0x0002,'b'); eeprom_write_byte ((char*)0x0003,'c'); eeprom_write_byte ((char*)0x0003,'d'); eeprom_write_byte ((char*)0x0005,'e'); eeprom_write_byte...
Witam; mam taki problem. Zrobiłem sobie strukturę w EEPROMIE w której trzymam ustawienia sterownika: [syntax=c]eeprom struct seting { char k; int temp1; long czas; char name[5]; } ustawienia; eeprom struct seting * ptrsr = &ustawienia;[/syntax] Chciałbym w sposób automatyczny , poprzez RS232 ustawić wszystkie pozycje struktury. A więc przykładowo dostaje...
jeśli a zadeklarowane jest jako tablica: char a[128]; to adresem danych w tej tablicy jest: - a - &a[0] &a to ... w sumie nie wiadomo co [; 4\/3!!
Zamieść fragmenty Twojego kodu. Może podczas zapisu rzutujesz int na unsigned char.
Na 100% działają na mojej ATmega169p, optymalizacja -Os void eeprom_write(unsigned int uiAddress, unsigned char ucData) { /* Wait for completion of previous write */ while(EECR & (1<<EEWE)); /* Set up address and Data Registers */ EEAR = uiAddress; EEDR = ucData; /* Write logical one to EEMWE */ EECR |= (1<<EEMWE);...
Poniżej przesyłam błędy kompilacji spowodowane dodaniem EEPROM.h [syntax=c] libraries\EtherCard-master\EEPROM.cpp.o: In function `EEPROMClass::EEPROMClass(unsigned int)': C:\Users\Admin\Documents\Arduino\librari... multiple definition of `EEPROMClass::EEPROMClass(unsigned int)' libraries\EEPROM\EEPROM.cpp.o:C:\Users\A...
A ja napisałem takie, może się przydadzą. Co prawda są na ATmegę8, ale 16 chyba się nie różni. void EEPROM_write(unsigned int address, unsigned char data) { EEDR = data; EEARH = (unsigned char) (address >> 8); EEARL = (unsigned char) address; if ( SREG & 0x80) { cli(); EECR |= (1...
Witam STM32l151CC dysponuje 8Kb EEPROMu.. Próbuję zadeklarowac zmienne w pamieci eeprom, zrobilem cos takiego: [syntax=c] const char EEPROM_moj[] __attribute__ ((section(".eeprom"))) ={10,20,30,40}; w pliku linkiera MEMORY { rom (rx): org = 0x08000000, len = 256k ram (rwx): org = 0x20000000, len = 32k eep (rw) : org = 0x08080000, len = 1k } SECTIONS...
Witajcie, szukałem już o tym, ale nie pomogło mi nic z obecnych na forum. Pisze program na atmege88p. Potrzebuję odzytywać i zapisywac 15 charów do pamieci EEprom. Widzę że mi to dziala bo po resecie zostaje to co ja zmienilem w trakcie działania programu, ale to nie są char-y, tylko jakby znaki z chińskiego alfabetu. Pierwsza funkcja wrzuca cokolwiek...
może ja czegoś nie rozumiem ale pomysła z przerwaniem jest dla mnie bez sensu. Jeśli pin nie jest podłączony do niczego to teoretycznie przerwanie nie powinno się wywoływać wcale. Ale są różne zakłócenia i może Ci się ono w takim przypadku wywoływać w różnych momentach, z kąd wiesz kiedy się ono wywoła? ten fragment uruchomienia przerwania i obsługi...
Witam, jak umieścić dane w eepromie (generowanie pliku eep/hex) w pod określonymi adresami: Typowo można wykonać coś takiego: #define EEPROM __attribute__ ((section (".eeprom"))) unsigned char tablica_w_eepromie[4] EEPROM = { 0, 0, 0, 0}; ale problem polega na tym że muszę mieć dostęp do tej tablicy...
Jak w C wpisać coś do pamięci EEPROM AT89S8252 i odczytać? Teoretycznie , ... #include <at89s8252.h> unsigned char read_eep(unsigned char xdata *index) { unsigned char eepd; //EA=0; //jeśli korzystamy z przerwań WMCON|=WMCON_EEMEN; eepd = *index; WMCON &=~WMCON_EEMEN; //EA=1; return eepd; } void write_eep(unsigned char...
Należy zapamiętać w pamięci nieulotnej (EEPROM) informację o tym, że alarm został wyzwolony. Najprostszy kod na arduino (bez problemu do przerobienia na "goły" WinAVR). [syntax=c]#include <avr/io.h> #include <avr/eeprom.h> unsigned char EEPROM_read(unsigned char ucAddress) { while(EECR & (1<<EEPE)); EEAR = ucAddress; EECR |= (1<<EERE);...
O ile "utoa" konwertuje z uinta na tablice(char) nie wiem jak ugryź tablice na uinta ? o ile jest "strtoul" ale to unsinged long.. I drugie pytanie co zrobić żeby "utoa" formatowała tablicę od tyłu, Korzystałem testowo z "dtostrf" i ona formatuje od tyłu. Potrzebuje to do zapisania większej liczby od 255 w EEPROM..
Witam, mam problem z długim czasem odczytu z wewnętrznego EEPROMu w ATmega 32. EEPROM trzyma obrazek, który wyświetlany jest na graficznym LCD i wyraźnie widać jak grafika pojawia się stopniowo w ciągu ok. sekundy. Sprawa wydaje się dosyć dziwna, bo w AT89S8252, który teoretycznie powinien być daleko w tyle za ATmeg'ą, wszystko trwało ulamek sekundy...
Zastanawiam się czemu co jakiś czas zaskakują mnie dziwne wartości. Procedury wyglądają tak: [syntax=c]//============================... void SAVE_RAM(void) { char adr=0, suma=0; EEPROM_write(adr++, sun_lvl), suma=sun_lvl; EEPROM_write(adr++, pmp_min), suma=+ pmp_min; EEPROM_write(adr++,...
char jeden EEMEM; char numer=0; char wybrany[6]; int main(void) { LCD_Initalize(); //poczatek losowania numer, odczyt, zapis numer=eeprom_read_byte(&jeden); LCD_GoTo(5,0); itoa(numer,wybrany,10); LCD_WriteText(wybrany); if (numer>41) {numer=1;} else {numer++;}...
ja bym proponował spróbować tak: for(zp1=1;zp1<20;zp1++) { cli(); eeprom_busy_wait(); eeprom_write_byte ((unsigned char *)zp1, dane[zp1]); eeprom_busy_wait(); sei(); }
Okej, z tego co zrozumiałem skoro mam podpięte do GND adres to normalnie 0xA0, no to wyskrobałem ile wlezie tego kodu ale dalej nie rozumiem o co chodzi z tym potwierdzeniem (ACK), mógłby ktoś wyjaśnić? Tutaj to co do tej pory napisałem (nie działa jeszcze): [syntax=cpp]#define F_CPU 1000000L #include <avr/io.h> #include <util/delay.h> #define...
Piszę program który w założeniu ma posiadać pamięć ustawień. Dokładniej jest w nim 11 zmiennych oraz 128 możliwości ich ustawień (128 banków pamięci dla tych 11 zmiennych). Każda zmienna jest 8bitowa. No i dostaje od kompilatora (WinAVR ) dziwne komunikaty: warning: pointer targets in passing argument 1 of 'eeprom_read_byte' differ in signedness W kodzie...
Raczej albo są zapisane wszystkie wartości albo żadna... opcji sprawdzania jest wiele. Coś zawsze odczytasz, w pierwszej komórce możesz trzymać sumę kontrolną, odczytujesz wszystko, jeśli suma jest ok to uznajesz odczyt, jeśli nie to zapisujesz wartości domyślne. Na poziomie sprzętowym nie ma czegoś takiego jak NaN. W praktyce NaNy to dodatkowa flaga...
Podpowiedzcie mi prosze, jak zadeklarowac zmienna w pamięci eeprom po adresem 0x01?? bo: #define EEMEM __attribute__((section(".eeprom"))) EEMEM unsigned char ZMIENNA; lokuje ja w pierwszej wolnej komorce czyli 0x00. Moge zadeklarowac wczesniej inna zmienna PUSTĄ tak aby kompilator ulokowal ja pod 0x00 ale nie jest to elegancke. W '51 robilo sie to...
Wracam do tematu ponieważ dalej mam problem. Moje funkcje zapisu i odczytu zawierają zmienną adres typu unsigned char co daje mi możliwość zapisu 255 komórek adresu. Również jest błąd ponieważ nadpisuję dwa razu część młodszą i starszą. Chcę zapisać wyświetlacz LCD z pamięci EEPROM. Wyświetlacz posiada 1024 komórek (jedna komórka 8 bitów). Zapis i odczyt...
Na początek należy uzupełnić kod programu ProgramPic.ino aby obsłużyć ten mikrokontroler: [syntax=arduino]const char s_pic16f913[] PROGMEM = "pic16f913"; const char s_pic16f916[] PROGMEM = "pic16f916";[/syntax] [syntax=arduino]{s_pic16f913, 0x13E0, 4096, 0x2000, 0x2100, 9, 256, 0, 0, FLASH4, EEPROM, MCLR_first}, {s_pic16f916, 0x13A0, 8192, 0x2000, 0x2100,...
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...
zapis do eeproma w atmedze16 void EEPROM_write(unsigned int uiAddress, unsigned char ucData) { while(EECR & (1<<EEWE)); EEAR = uiAddress; EEDR = ucData; EECR |= (1<<EEMWE); EECR |= (1<<EEWE); } unsigned char EEPROM_read(unsigned int uiAddress) { while(EECR &...
to działa IPAddress myIP(192, 168, 178, 212); IPAddress myIP(conf.values[0].c_str()); błąd kompilacji Compilation error: no matching function for call to 'IPAddress(const char*)' nie bardzo wiem jak użyć bool fromString(const String &address) ?
Siemano. Jeżeli chcesz umieścić np. tablicę jednowymiarową w sekcji EEPROM to możesz wykonać to w taki sposób const unsigned char Tablica[] EEMEM = { 0x3e,0x51,0x49,0x45,0x3e, 0x00,0x42,0x7f,0x40,0x00, 0x42,0x61,0x51,0x49,0x46, 0x21,0x41,0x45,0x4b,0x31 }; Niestety przy takiej deklaracji pierwszy element tablicy nie będzie znajdować...
Witam, dzisiaj miałem czas na zgranie kodu i wyrzucenie z niego tego co nie dotyczy tematu: Dodano po 7 Przepraszam za dziwne znaki w komentarzach ale przerzucałem z Windowsa na Linuxa i nie konwertowałem kodowania. Będę wdzięczny za pomoc. Sławek
Witam, Mógłby ktoś sprawdzić, gdzie robię błąd? Chcę zapisać cokolwiek do wew. pamięci EEPROM. [syntax=c]#define F_CPU 1000000L #include <avr/io.h> #include <util/delay.h> #include <avr/eeprom.h> #include <avr/interrupt.h> //deklaracja zmiennych int h, m, s, i; //inicjalizacja uint8_t eeprom_val[512] __attribute__((section(".eeprom")));...
udaje mi się to jedynie tylko w tej petli w której go uzyskuje (tam gdzie jest token i wsk z jego zawartością ) a nie moge odesłac zawartosci wsk w innej funkcji Jakiej pętli? Chodzi Ci o funkcję "analizuj_dane_id"? Niestety, ale bez znajomości podstaw języka C daleko nie zajdziesz... albo będzie Cię to kosztowało sporo nerwów ;) "wsk" jest wskaźnikiem...
z tego co widze uzywasz komorki o adresie 0x00... z tego co pamietam nalezy sie wystrzegac zapisywania danych pod nia ,bo np. przy programowaniu procka zdaza sie ze moze byc wyczyszczona... Chyba ze przy innych adresach to samo sie dzieje? #include <avr/eeprom.h> eeprom_write_byte(0x01,0x41); while(eeprom_is_ready()==0...
Siemanko, mam problem z zapisem i odczytem danych z eepromu. Mam Atmegę168 taktowaną kwarcem 16MHz i mam w niej funkcje zapisu do zewnętrznego eepromu 24C64. Jednak program dochodzi tylko do momentu wysyłania 0xA0 i koniec... cisza. Gdy zmieniałem kwarc na 4Mhz Zapis i odczyt ładnie się wykonał. // procedura transmisji sygnału START void TWI_start(void)...
Przepisałem to na prostsze rozwiązanie - osobno adress eepromu i osobno adres komórki [syntax=cpp] #define EEPROMS_ID 0b10100000 unsigned char E24C1024_read(unsigned int dataAddress) { TWIStart(); TWIWrite(EEPROM_ID); TWIWrite( ( (dataAddress >> 8) & 0xFF) ); TWIWrite( (dataAddress & 0xFF) ); TWIStart(); TWIWrite(EEPROM_ID+1); unsigned char dat = TWIReadACK();...
Mam problem z pamiecia EEPROM. Ponizej zalaczony kod (napisany w HTSOFT PICC C Compiler) powinien wysylac na lacze szeregowe takie znaki: START!<LF><CR> OKAY<LF><CR> OKAY<LF><CR> OKAY<LF><CR> . . . jednak nie wiedziec czemu wysyla: START!<LF><CR> why is it 4 <LF><CR> OKAY<LF><CR>...
Mam problem z zapisem danych do at24c256, może bardziej z odczytem. Chcę zapisać adres MAC w eepromie, (wiem, że esp ma coś podobnego do eepromu, ale jednak chcę na zewnętrznym) Mam taki kod: [syntax=c] int adresZapisu = 630; String str = ""; str = tablicaMacCzujnik[a]; char writemessage[str.length() + 1]; str.toCharArray(writemessage, sizeof(writemessage));...
Pytanie trochę z innej beczki: Próbuje zapisać strukturę do FLASHa. Robię to w taki sposób: [syntax=c] char *bytebybyte = (char*)&EEPROM_Data; char bajt; int size = sizeof(EEPROM_Data); Erase_EEPROM(); Unlock_EEPROM(); for(i = 0; i < size; i++) { bajt = bytebybyte[i]; Save_EEPROM_BYTE(1+i,bajt); //Adres względny - sektor 7 } Lock_EEPROM(); [/syntax]...
signed or unsigned char Nie ma takiego typu w VB
Wykorzystałem do sprawdzenia kod: #include <avr/eeprom.h> int main() { unsigned char x = eeprom_read_byte((unsigned char*)10); if(x <= 0xFA) // jeżeli osiągnie FA to znaczy, że się restuje { while(1); // wystarczy już zapisów ;-) } eeprom_write_byte((unsigned char*)10, x-1);...
Jeśli masz wystarczającą ilość pamięci EEPROM to nie ma problemu. Dowolny tekst umieścisz w niej stosując char EEMEM []="tekst"; Analogicznie do tekstów umieszczonych za pomocą atrybutu PROGMEM, musisz do odczytu zastosować odpowiednią funkcję z eeprom.h.
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>...
Witam wgrałem do megi poniższy kod [syntax=c] ISR(EE_RDY_vect ) { eeprom_write_byte(EEPROMPtr, *SRAMPtr); EECR|=_BV(EERIE); //W³¹cz przerwania EEPROM EEPROMPtr++; SRAMPtr++; EEPROMWrBytes--; if(EEPROMWrBytes) EECR|=_BV(EERIE); //W³¹cz przerwania EEPROM } void EEPROM_write_int(uint8_t *src, uint8_t *dst, uint16_t size) { while(EEPROMWrBytes);...
No cóż poprawiłęm program trochę na miarę moich umiejętności. Dodałem trochę komentarzy, a efekt wrzucam w tym poście. Pomoc by mi się naprawdę przydała. Po kompilacji nie ma błędów ani warningów. #include <avr/io.h> unsigned char word = 0x01; // Adres komórki pamięci unsigned char dane = 0x7A; // Dane wysyłane i odbierane z pamięci int bitstartu(void);...
Cześć po przerwie. Widzę, że projekt się rozwija w dużym tempie. Pytanie do (at)robgold, próbuję skompilować Twoją wersję 3.11, gdzie jest zmiana z EEPROM na PSRAM, ale dostaję taki błąd: C:\Users\Jacek\Documents\Arduino\ESP32_r... error: cannot convert 'unsigned char*' to 'unsigned int*' in assignment 2754...
1. Jak rozpoznać czy to wersja układu na 5V czy na 3,6V? Nie ma tam jakiś charakterystycznych oznaczeń na obudowie? Ciąg literek i cyferek, żeby można było ustalić itp. Jeśli wylutowałeś to z telefonu, obstawiam na niższy zakres napięć. TWINT ma być zerowane programowo np. przez procedurę obsługi przerwania na samym jej końcu. Zerowanie ma być zrealizowane...
udało się uruchomić :-) Mam kilka pytań (może dla kogoś są oczywiste ale jestem początkujący ) co oznaczają wartości 11,32,11,5,100 char pompoff[11] = ""; //wyłączenie pompy char ssid[32] = ""; //nazwa sieci wifi clear_array(data.pompon,11); pn.toCharArray(data.pompon,5); EEPROM.put(100,data); Czy jeśli dołożę kilka dodatkowych zmiennych i chciałbym...
Witam, Mam problem z zapisem i odczytem do EEPROM łancucha zmiennych typu char Atmega162, avrgcc, program symuluje w winavr + hapsim + virtual port kit char ipaddress[16]; char ipaddress_odczytany[16]; char portnumber[6]; char portnumber_odczytany[6]; char phonenumber[11]; char phonenumber_odczytany[11];...
No to chyba będę musiał się w atmegę16 wyposażyć. Mam już 6,5KB/8 a jeszcze troszkę muszę dopisać. Czy mógłbym prosić o podrzucenie jakiegoś sensownego linku jak pisać kod optymalnie pod kątem rozmiaru pliku wynikowego po kompilacji? Ewentualnie jeszcze coś o zapisie do eeprom.
Udało się powyższymi metodami oszczędzić nieco pamięci, ale chciałoby się więcej (;. zastanawiam się czy poniższa konwersja do uint8_t ma prawo zadziałać? nP1.getValue(uint8_t(&storeData[1].pos))... nC1.getValue(uint8_t(&storeData[1].ch)); kompilator przepuszcza coś takiego z uwagą: warning: cast from 'uint8_t* {aka unsigned char*}' to 'uint8_t {aka unsigned...
Podlacze sie z pytaniem pod temat, chce zapisac liczbe 8 bitowa(max 0xFF) w wewnetrznej pamieci eeprom w komorce o adresie powyzej 256d, ktorej funkcji uzyc? Np do komorki o adresie 456d zapisac wartosc 0xCE, czy to bedzie prawidlowe? unsigned short adres=456; unsigned char wartosc=0xCE; eeprom_write_byte(adres, wartosc);
W pliku "stdint.h" znajdziesz: typedef signed char int8_t; typedef unsigned char uint8_t; Jest to po prostu definicja typów ;) uint8_t to po prostu zmienna unsigned char nic więcej ;) A EEMEM to zmienna przechowywana w pamięci eeprom.
Witam, Mam następujący problem... Jeżeli chcę zainicjalizować zmienną w EEPROM robię to tak: unsigned char test EEMEM = 0x11 //generowany jest wtedy dodatkowy plik .eep z inicjalizacją pamięci EEPROM Powyższy kod posiada jedną wadę - kompilator zmienną "test" zapisuje w pierwszej wolnej komórce EEPROM-u, a mi zależy na tym, żeby "test" była zapisana...
Super to ci wystarczy wystarczy zrobić skrypt PHP i na czyś go odpalać i wysyłać na PVmonitor tu całość InverterProtocol V1.00 1, Communication data format : COM set:9600,8,n,1,n 0xaa,0xaa,0x00,sourceaddress,Destination... checksum:unsigned...
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...
Witam Serdecznie, W pracy otrzymałem za zadanie napisanie programu na mikrokontroler AT89C51AC2. Program ma za zadanie niektóre swoje zmienne (w tym nazwę programu) trzymać w pamięci EEPROM. Funkcję obsługi pamięci zaczerpnąłem z książki Majewski-Kardach "Programowanie mikrokontrolerów serii 8X51 w języku C". Problem pojawia się przy zapisie nazwy programu...
A jak to zrobić w procku ?? Oczywiście załadowałem plik .BIN w miejsce Inital EEPROM z danymi. Chciałem wyświetlić na LCD i nic #include <avr/io.h> #include <avr/eeprom.h> #include "LCD.c" int main(void) { lcd_init(); char string[32]; char i; for(i=0;i<32;i++) string[i] = eeprom_read_byte(i);...
unsigned char EEMEM zapychacz[4]; //zabezpieczenie przed zapisem na poczatku eeprom (moze byc wadliwe) unsigned int EEMEM zmienne[5]; //obszar zmiennych w eeprom Pierwsza linijka jest po to, aby kompilator nie zapisywał nic w pierwszych komórkach - u mnie dawały błędne odczyty.
Okazuje się żę cyfry mogę bez problemu zapisać, ale stringa już nie. Dodano po 1 Jak wrzucę w jednym programie zapis i odczyt to poprawnie odczytuje powiadomienie: #include <string.h> #include <EEPROM.h> char info[50]; char powia[50]; void setup() { pinMode(3, OUTPUT); } void loop(void){...
Tu jest oryginalny program do eepromu. Podstawiłem do swoiego i zapis działa. Chciałbym w drugą stronę odczytać i wyświetlić. Robię sterownik temperatury. Po włączeniu zasilania ma odczytać z eepromu zadaną temperaturę. Porównać z mierzoną i sterować zaworem trójdrożnym. Jak już wspomniałem pomiar temp. działa poprawnie. Nie wiem co to jest: eeprom_busy_wait();...
poprawiłem i kropek nie ma ale za to zniknął pierwszy z zapisanych łańcuchów void SaveString(char offset, unsigned char * tekst) { char i=0; for( i=0; i<=strlen(tekst); i++) EEPROM_write(offset+i, tekst[i]); EEPROM_write(i, 0); } Działa przez wywołanie: K(OpenString(30,temp,12)); nie działa...
Dziękuje kolego rozjaśniłeś mi sytuacje zrobiłem tak: uint8_t eeprom_val[512] __attribute__((section("... void zapisz(uint8_t pozycja, uint8_t wartosc ) { eeprom_busy_wait(); eeprom_write_byte(&eeprom_val[po... } char odczyt(uint8_t pozycja)...
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...
Witam dziękuję za odpowiedź. Kombinowałem trochę, jednak ciągle napotykam na błąd, którego nie potrafię obejść, nie mogę znaleźć też nigdzie rozwiązania. oto kod programu: #define F_CPU 1000000L #include <avr/io.h> #include <util/delay.h> #include <hd44780.c> #include <stdlib.h> #include <avr/eeprom.h> char wybrany; int...
Build started 6.4.2014 at 00:25:04 avr-gcc -mmcu=atmega16 -Wall -gdwarf-2 -std=gnu99 -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT Proba_10.o -MF dep/Proba_10.o.d -c ../Proba_10.c avr-gcc -mmcu=atmega16 -Wl,-Map=Proba_10.map Proba_10.o -o Proba_10.elf avr-objcopy -O ihex -R .eeprom -R .fuse -R .lock -R .signature...
co do programu Delphi nie widziałem w nim procedury synchronizacji ecu, Jest ta procedura, w funkcji immo->zapis do sterownika silnika, czy jakoś tak. brak jest bezpośredniego dostępu do kanałów Kanały i grupy, to są funkcje umowne, charakterystyczne dla VAG1551, VCDS i podobnych. Żeby tu coś zdziałać w kwestii odczytu pinu, to potrzebne urządzenie...
witam uzywam sobie funkcji: void WRword(unsigned char Ind) { //extern void eeprom_wb(unsigned int addr, unsigned char val); eeprom_write_byte( Ind, Dato); eeprom_write_byte( Ind+1, (Dato>>8)); } i wyskakuje mi komunikat.... mem.c:13: warning: passing arg 1 of `eeprom_write_byte' makes pointer from integer without a cast deklaracje mam takie: unsigned...
Do tematu było kilka pytań odnoście sposobu rozwiązania problemu. Dlatego podaję gotowe rozwiązanie. [syntax=c] //nvmctrl_status_t void eeWriteByte(uint16_t eeprom_adr, char data) { // tu musi być przekazny adres w eepromie po dodaniu start_eeprom mamy adres komurki //a tak tworzymy adres w EEpromie // uint8_t EEMEM eBORF = 0; // const uint16_t veBORF...
Ok, tablicy nie rusza, ale np struct __attribute__((persistent)){ unsigned char CyrOn; unsigned char CyrTimeOn; unsigned char CyrTimeOff; unsigned char KonLcd; }EE; Dalej inicjuje zerami
Mam napisane dwie procedury: char ReadTW (unsigned int a, char *d) char WriteTW (unsigned int a, char d) którymi potrafię zapisywać i odczytywać dane z EEPROM-a zewnętrznego typu 24c32. Przypuszczam że powinno to działać na innych urządzeniach będących na magistrali I2C
Mam w programie zmienną o nazwie fuses. Do tej pory używałem jej bez problemu. Do czasu odczytania jej z eeprom. Ku mojemu zdziwieniu zmienna o niemal identycznej nazwie, zadeklarowana tak samo działa. Dlaczego? unsigned char fuses2=0b10001111; unsigned char fuses=0b10001111; //---- unsigned char xxx; xxx = eeprom_read_byte(FUSES_OFFSET); fuses2...
Witam, Mam Arduino Mini Pro 16MHz 5V , do niego podłączony EEPROM zewnętrzny 24C02 (ATMEL) zgodnie z instrukcją: * EEPROM 4 (GND) to GND * EEPROM 8 (Vcc) to Vcc (5 Volts) * EEPROM 5 (SDA) to Arduino Analog Pin 4 * EEPROM 6 (SCL) to Arduino Analog Pin 5 * EEPROM 7 (WP) to GND * EEPROM 1 (A0) to GND * EEPROM 2 (A1) to GND * EEPROM 3 (A2) to GND Sprawdziłem...
chara const chara chara const chara konwersja chara flash
klapka sterowania temperatura nawiewu pralka mastercook moduł schemat schematy wykrywaczy metali
problem transformatora spawarka transformatora spawarka
Ford S-MAX CAN bus 0x160 – dekodowanie ramki PCM, parametry silnika, HS-CAN Vangotech SD612 HexWriter v3.4 software download, safe sources, installer hash, alternatives