Może takie coś :?: :-P #include <avr/io.h> #include <avr/eeprom.h> #define cdfetr(ram,eeprom) {eeprom_read_block((void *) &ram,(void const *) &eeprom,sizeof(double));... double eemem_dbl EEMEM = 0.12; volatile double ram_dbl; int main (void) { cdfetr(ram_dbl,eemem_dbl);...
Witam, #include <stdint.h> #include <avr/eeprom.h> static EEMEM uint8_t zmienna_w_eepromie = 'a'; /* po zaprogramowaniu eepromu zmienna ma wartość 'a' */ int main(void) { eeprom_write_byte(&zmienna_w_eep... 'b'); } Pozdrawiam, Dr.Vee
Również natknąłem się na ten problem i nie wiem jak go rozwiązać. Niemniej jednak można makro EEMEM zastąpić tym czym jest naprawdę ( __attribute__((section(".eeprom"))) ) i wtedy ten problem nie występuje. 4\/3!!
Dostęp do pamięci EEPROM w jest w tym przypadku szybki i odbywa się instrukcją MOVX. Na podstawie stanu bitu EEMEM procesor wie czy ma odwołać się do tego własnie EEPROMu czy tez do zewnętrznej pamięci danych. Jeśli nie stosujesz pamięci zewnętrznej to nie musisz zmieniac kontekstu instrukcji MOVX - wystarczy że na początku ustawisz bit EEMEM w rejestrze...
Najlepiej to powołaj sobie nowy typ: [syntax=c]typedef struct { uint8_t id; uint8_t behavior; uint8_t items_in_menu; Menu_Entry *sub; Menu_Entry *parent; char cText[17]; FuncPtr call_me; } TMENUENTRY;[/syntax] a następnie w kodzie zdefiniuj już sobie pięknie zmienną w EEPROM ;) [syntax=c]TMENUENTRY Menu_Entry EEMEM; // ta zmienna będzie w EEPROM[/syntax]...
Dawno nie pracowałem z ATMegami, ale czy zmiennych w pamięci EEprom nie powinno się deklarować z atrybutem EEPROM, o tak?: uint8_t EEMEM pamt1;
Raczej tak. [syntax=c]uint8_t eeSEast EEMEM = 00; uint8_t s; eeprom_write_byte(&eeSEast, s); // zapis do eepromu s = eeprom_read_byte(&eeSEast); // odczyt z eepromu [/syntax]
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...
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...
I co Dawid udało się coś odczytać z eepromu, bo ja próbuję identycznym sposobem i zapisać się da, ale odczyt to bzdury. I nie jest ważne, czy zmienna "temp_dol_k1" jest jako zwykła, czy EEMEM. Coś jest źle. Próbowałem, też wg. kodu z datasheeta i też nic. Pozdrawiam.
gaskoin pisze, że EEPROM to jakiś atrybut. Ja poprawiam: Po drugie nie EEPROM, a EEMEM. Co w wypadku uściślania jest dość ważne. No a tutaj się chyba koledze pomyliło - bo jednak nie EEPROM się używa tylko EEMEM w stosunku do deklarowanej zmiennej , któa ma leżeć w pamięci EEPROM. Mowa o AVR GCC - jeśli chodzi o mnie ;) No to w końcu komu się pomyliło?...
[syntax=c] (...) static EEMEM uint8_t histereza = 3; //zmienna do pamieci EEPROM int main(void) { (...) uint8_t histereza = eeprom_read_byte(&histereza); (...) [/syntax] Zgadnij dlaczego nie działa ? Podpowiedź - nazwy.
Deklaracja &
Spróbuj inaczej zadeklarowac ten bajt w EEPROM: static EEMEM uint8_tbajt_do_eeprom;
(at)Piotrus_999 Niby po co przerabać skrypt linkera? Można to zrobić na kilka sposobów bez tego. A po co w ogóle coś "mieszać" a nie "po bożemu" ? Co po bożemu? Modyfikacja skryptu linkera jest po bożemu? (at)excray Wymusić adres możesz np tak: [syntax=c] struct eeprom_settings { //Tutaj wszystkie ustawienia } __aligned__((EEPROM_SIZE)); struct eeprom_settings...
Jeśli wypełnisz sobie w programie EEPROM zerami (tablica[] EEMEM = {0,0,0,0 ...}; ), to stworzony zostanie plik, który można do tego EEPROMu wgrać. 4\/3!!
Witam! Wydaje mi się ,że brakuje opóźnienia o ok. 10 ms po każdym wykonaniu pętli. Powinno być tak: #PRAGMA SMALL //czyli zezwala na obsluge pamieci zewn at 200 xdata unsigned int TEMP_zad[256]; //deklaracja w EEPROM WMCON|=0x18; //EEMEM i EMWE w góre for(j=0;j<255;j++) { TEMP_zad[j]=j; delay_ms(10); //opóźnienie 10 ms na wykonanie zapisu do eeprom...
Należę do osób, które za wszelką cenę starają się same pogłówkować i znaleźć rozwiązanie Jedyna prawdziwa informacja, jaką przekazałeś tym zdaniem, to taka, że masz wysokie mniemanie o sobie. Gotowiec dla leniuchów: [syntax=c]static EEMEM uint8_t emode; //rezerwujemy bajt w eeprom ... uint8_t mode=0; //zmienna przechowująca kopię danej z eeprom //odczyt...
Te funkcje oczekują wskaźnika. Zadeklaruj zmienną w obszarze EEPROM (atrybut EEMEM) i odwołuj się do adresu takiej zmiennej (&adres). Dodano po 1 Jeśli już musisz używać stałej to ją rzutuj (uint8_t*)5.
Witam Przeglądałem forum, jednak zastosowane propozycje nie dały rezultatów.. ;/ mam problem z zapisem i odczytem z pamięci eeprom. Jak mają wyglądać te instrukcje poprawnie?? Robię tak(fragment kodu dot eeprom): int i=1; static EEMEM int i_ee; eeprom_write_block(&i, &i_ee, sizeof(i)); eeprom_read_block(&i, &i_ee,sizeof(i));...
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 {...
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.
Najlepiej nigdy, przenigdy nie rób takich rzeczy ;) Argumentem tej funkcji powinien być wskaźnik ale ty stosujesz tu rzutowanie i na własną rękę numerujesz komórki pamięci w EEPROM. To doprowadzi cię kiedyś do zagłady ;) jak już to najpierw zdefiniuj sobie zmienną w pamięci EEPROM: unsigned char zmienna EEMEM; a potem np: mem_year = eeprom_read_byte(...
Sypie błądami przy kompilacji. Jak zaremuję odczyt to błędów już nie ma, ale nie zapisuje danych do EEPROM. Z eepromu fajnie korzysta się w połączeniu ze strukturami, ale to dla większej ilości danych. Jak potrzeba 2-3 zmienne to robię coś takiego: [syntax=c] #include <avr/eeprom.h> uint16_t x1, x2; //zmienne które należy zapamiętać w eeprom...
Nie zrozumieliśmy się. "EEPROM" tu mam na myśli zewnetrzną kość. EEMEM -pewnie chodzi o wewnętrzny EEPROM , który ma 512B -dla mnie mało Ale: struct dane PROGMEM menu[]={ ......};? i struktura jest we FLASHu. Tak mi pasuje. Dzięki za pomoc.
Witam. Jeśli chodzi o to: uint16_t g_odniesienie; //wartosc kalibracyjna przy 10V g_odniesienie = eeprom_read_word(0x01); to spróbuj coś takiego #include<avr/eeprom.h> ... uint8_t pusty EEMEM = 0; //jeśli nie chcesz wykorzystać komórki o adresie 0x00 uint16_t ee_odniesienie EEMEM=0x23; //możesz przypisać dowolną wartość uint16_t g_odniesienie...
a już żeby zamknąć temat to kod który działa wygląda tak: Ten kod jest błędny i działa tylko przypadkowo. uiAddress używasz niezainicjowany - nie masz żadnych ostrzeżeń kompilatora? Wywal go. Powinno być: [syntax=c] //Deklaracja zmiennych //EEPROM uint16_t kWh_stan EEMEM; uint16_t kWh; ... //Odczyt z EEPROMa i przypisanie do zmiennej kWh = eeprom_read_byte...
Zamiast używać cyferek do określania bajtów w pamięci eeprom, zadeklaruj sobie dla nich jakieś bardziej przyjazne nazwy. A do zapisu używaj eeprom_update_byte , wtedy aplikacja zapisze dane tylko jeśli uległy one zmianie. [syntax=c]static EEMEM uint8_t e_tor, e_led, e_licznik; ... //odczyt tor = eeprom_read_byte(&e_tor); led = eeprom_read_byte(&e_led);...
nie do końca tak to ma wyglądać makro EEMEM "mówi" kompilatorowi, że daną zmienną ma umieścić w eepromie. Więc wyglądać ma to tak: float EEMEM dupa = 3.32451324; nie wywołujesz funkcji eeprom_write - nią się ładuje dane do eeproma z poziomu programu. Przy kompilacji otrzymujesz plik *.hex i *.eep. W eep masz zawartość eeproma, która wystarczy wgrać...
Witam serdecznie. Po przeszukaniu wątków nie napotkałem na rozwiązanie problemu o podobnej treści. Mianowicie dotychczas korzystałem z eepromu w ten sposób: Piszę językiem C: [syntax=c] extern EEMEM uint16_t eeprom_values[200]; EEMEM uint16_t eeprom_values[200] = {0,0}; //- zapis to zmienna = 85; eeprom_write_word(&eeprom_values[10], zmienna); //odczyt...
Czy nie znasz lepszej funkcji do zapisu dowolnego bloku pamięci EEPROM w tym także struktury? typedef struct { uint32_t parametr1; uint32_t parametr2; uint32_t *opis; } _CONFIG; _CONFIG ee_my_config EEMEM; // definiujemy strukturę w pamięci EEPROM _CONFIG ram_my_config EEMEM; // definiujemy strukturę w pamięci RAM teraz zapis do EEPROM: eeprom_write_block(&ram_my_config,.....
Witam. Przeprowadzam symulację w AS zapisując dane do EEPROM: http://obrazki.elektroda.pl/4254162100_1...
Oczywiście w disasemblacji (i nie tylko) mogę podejrzeć, gdzie one "wędrują" i opisać to użytkownikom, ale nie chcę by przy którejś kompilacji (i modyfikacji programu) zmieniły swoje miejsce. One nie zmienią swojego miejsca - zawsze będą umiejscawiane (te z atrybutem EEMEM) od początku EEPROM w takiej kolejności, w jakiej zostały zadeklarowane. Oczywiście...
Czy jeżeli w ten sposób zadeklaruję zmienną w pamięci EEPROM: [syntax=c]uint16_t TempOnEE EEMEM = 270;[/syntax] to wartość, którą została zainicjalizowana nie powinna zostać zapisana do EEPROM podczas programowania mikrokontrolera? Po odczytaniu zmiennej z EEPROM dostaję 65535 zamiast 270. Czytam w ten sposób: [syntax=c]TempOn = eeprom_read_word(&TempOnEE);...
hmm może walnę totalną głupotę, ale próbowałeś dodać opóźnienia? unsigned char EEMEM zapychacz[4]; //zabezpieczenie przed zapisem na poczatku eeprom (moze byc wadliwe) unsigned int EEMEM zmienne[5]; //obszar zmiennych w eeprom [...] for (i=0;i<5;i++) //odczyt danych z eeprom do tablicy dane { eeprom_busy_wait();...
Witam ponownie, próbowałem ogarnąć na początek funkcję eeprom_write_block. Oto fragment kodu: [syntax=c] typedef struct { // tu są chary, inty, tablice } TEngine; // zmienna w RAM volatile TEngine Engine; // Kopia będzie w EEPROM TEngine EEMEM eeEngine; // i gdzieś w kodzie dalej eeprom_write_block( &Engine, &eeEngine, sizeof(Engine) ); [/syntax] Przy...
Z tym że jak wrzucisz do eepromu to ustaw bity BOD. Dlaczego? Dodano po 4 1. Zmień typ dla danych COLORS i brightness z int na unsigned char. Pętla wtedy będzie dla i < 255; i 10 kolorów wystarczy. Mógłbym prosić o wprowadzenie zmiany w kodzie ? Tablicę COLORS umieść w flash przez PROGMEM. Jak wywali błąd to dołącz odpowiedni plik (poszukaj gdzie...
Co w języku c trzeba przekazać do funkcji EEMEM aby zapisać/odczytać zmienną z pamięci EEPROM
Witam, Nie mogę zrozumieć dlaczego zapis do eepromu działa dla jednego obszaru a nie działa dla drugiego. To działa. [syntax=c] while (NVMCTRL.STATUS & NVMCTRL_EEBUSY_bm); eeprom_write_byte((uint8_t*)(&USERROW.US... while (NVMCTRL.STATUS & NVMCTRL_EEBUSY_bm); liczba = eeprom_read_byte((uint8_t*)(&USERROW.USE... [/syntax] a to nie [syntax=c]...
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. 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, chcę zapisywać i odczytywać do EEPROMu dane konfiguracji. Mam taki kod: section attribute not allowed for 'cfg_touch_eeprom' Gdy dodam static przed definicję cfg_touch_eeprom: ld returned 1 exit status undefined reference to `A::cfg_touch_eeprom' Co robię źle i jak to naprawić żeby działało? Pozdrawiam
Odczytuj za pomocą eeprom_read_block. Przykład:[syntax=c]char bufor_w_ram[rozmiar]; char bufor_w_eeprom[rozmiar] EEMEM; ... eeprom_read_block(bufor_w_ram, bufor_w_eeprom, rozmiar);[/syntax] String w EEPROM musi być zapisany ze znakiem końca (patrz mój poprzedni post). Bufor musi być dłuższy niż najdłuższy z możliwych stringów (+1B na znak końca stringu)....
Witam, a ja ze strukturami albo uniami robię tak i zawsze działa to świetnie w takich przypadkach o jakich piszesz. Najpierw definiuję sobie typ: typedef union { uint8_t bytes[2]; struct { uint8_t max_ilosc_minut_drzemki; uint8_t max_czas_alarmu; uint8_t tryb_zmiany_kolorow; } var; } e_zmienne; albo taka struktura: typedef...
static EEMEM int16_t t_value[4][2]={... Powinno być raczej: int16_t t_value[4][2] EEMEM = {... value=eeprom_read_word((int16_t*... Spróbuj tak: value=(int16_t)eeprom_read_word&... uint16_t*)&t_value[flag][... Funkcja...
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 ?
Jeszcze jedna sprawa... W jaki sposób zmusić linkera (z poziomu eclipsa) aby przy definicji danych przeznaczonych do pamięci eeprom typu np: EEMEM struct _sWorkParameters DefaultWorkParameters_inEEPROM[...... umieścił je poczynając od zadanego adresu? Domyślnie wpisuje od komórki 0x00 co nie jest zalecane
500 bajtów - to zdecydowanie za dużo. Przemyśl ten algorytm. Przecież te dane nie zmieniają się wszytskie równie często i niespodziewanie. Ja się nie zmieniają to wystarczy użyć odpowiedniej funkcji eeprom_update_block() . Albo zastosować nowość od Microchipa, czyli EEMEM :D Ciekawy wynalazek, choć chwilowo mają małe pojemności. EERAM. Równie dobrze...
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++;}...
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.
EEMEM tylko umieszcza symbol w EEPROM, zapis/odczyt możliwy jest tylko przez specjalne funkcje udostępniane przez eeprom.h. Oczywiście pisząc w C++ można sobie przeciążyć odpowiednie operatory i ukryć w ten sposób obsługę EEPROM. BTW, oczywiście wnioski autora, że niby const rozwiązuje problem i umieszcza dane we FLASH są kompletnie błędne.
Zadeklarowałeś już typ: [syntax=c] typedef struct { char tag_rfid[10]; uint32_t datetime_rtc; } Tag_time_read; [/syntax] To teraz deklarujesz zmienną w RAMie i tablicę n-elementową w EEPROM: [syntax=c] Tag_time_read Zmienna; Tag_time_read ZmienneEE[10] EEMEM; [/syntax] I zapisujesz do EEPROMA dowolny element (np. 2.): [syntax=c] eeprom_write_block(&Zmienna,...
Witam. Posiadam tylko programator USBasp przez który nie mogę odczytać tokenu karty RFID. Pomyślałem więc, że zapiszę ten token do pamięci EEPROM, a potem odczytam tą pamięć przez programator. Problem w tym, że coś mi nie wychodzi.. Kod który odczytuje token rfid przyłożonej do czytkina karty i zapisuje pod zmienną: :20000000000000000300000000000000000...
Możesz nad tym zapanować na kilka sposobów: 1. Taki sobie. Definiujesz tablicę o wielkości EEPROM, np. uint8_t ee[512] EEMEM, do komórek odwołujesz się normalnie przez indeksy, wszystko jest ok, tyle, że kompilator nie alokuje automatycznie zmiennych. 2. Robisz współdzieloną strukturę, która odzwierciedla pamięć EEPROM i co ważne, jest dołączana przy...
odkopuję stary temat, bo napotkałem nowy problem. tak jak poradził (at)tmf stworzyłem zmienne EMEM: char jeden __attribute__((emem)); char dwa __attribute__((emem)); int dziesiatki, jednosci; char wybrany1,wybrany2; zdaje się, że nie ma takiego atrybutu w gcc, jak już to __attribute__((section("...
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, jestem początkujący w programowaniu AVR. Chce zapisać tablicę (przykładowy tekst) a potem odczytać z eeprom atmega88. void main( void ) { ... static EEMEM uint8_t eeprom_val[6]; uint8_t val1[6] = {"12345"}; print_string("\n\r. Zapis do pamięci EEPROM\n\ -> val1 "); if (eeprom_is_ready())...
Twoje pytanie jest dość ogólne ponieważ wszystko o czym mówisz jest definiowane w skrypcie linkera. Ale zazwyczaj jest tak, że: - sekcja .text jest umieszczana w pamięci flash - sekcja .data jest umieszczana w pamięci RAM (kopiowana z pamięci flash w rozbiegówce) - sekcja .bss jest umieszczana w pamięci RAM (ustawiana na wartość zero w rozbiegówce)...
Witam Czy jest możliwość stworzenia tablicy która będzie zapisana w pamięci eeprom ?? Mam ta tablice ( raczej dane jakie mam w niej umieścic) i jak nie ma innej opcji wpiszę je ręcznie w edytorze hex.. korzystam z avrstudio i nie bardzo wiem jak mogłbym sobie z tym poradzić ten uC ma 512 bajtów moje dane zajmują troche ponad 300 chodzi mi o przykład...
Nie jest poprawny. Po pierwsze pobieranie adresu literału (&1) jest bez sensu, po prostu podaj 1, jeśli pod takim adresem chcesz zapisać zmienną. Po drugie, i istotniejsze, zmienną liczba_LED zadeklarowałeś z atrybutem EEMEM, ona iwęc nie znajduje się w pamięci SRAM, nie możesz się więc do niej bezpośrednio odwoływać. Skasuj atrybut EEMEM i będzie ok,...
Przy próbie programowania wyskakuje okienko: https://obrazki.elektroda.pl/8740540800_... Odczyt z EEPROM po nieudanym programowaniu: https://obrazki.elektroda.pl/9974032400_... Przykładowy kod: [syntax=c] #include <avr/io.h> #include <avr/eeprom.h> const char EEmodName[] EEMEM = {'D','R','V'}; int main(){...
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);...
Deklaruję w pliku .c: unsigned: char mem_eep EEMEM; W tym samym pliku przypisuję wartość: eeprom_write_byte(&mem_eep,mem_1); i iest OK, ale jak chcę przypisać lub odczytać mem_eep w innym pliku .c to pojawia się błąd: `mem_eep' undeclared (first use in this function) Jak zadeklaruję mem_eep w pliku .h #ifndef _fun #define _fun char mem_eep EEMEM; #endif...
Witam. Problem lekko dziwny, napisałem sobie fragmencik, który ma za zadanie porównać tablicę z zawartością eepromu, niby wszystko ok i działa tak jak chciałem, lecz niestety nie zawsze, to znaczy w dalszej części programu tablica wyświetlona jest na LCD, jednak czasem w przypadku szybkiego załączenia i wyłączenia urządzenia wartość wskakuje na 255...
Dziękuję szczywronek za odpowiedź na mojego posta. Aktualnie jestem zajęty ( praca przy domu ), ale jak tylko będę przy komputerze, to pokombinuję.Odezwę się. Miłego łikentu. Dodano po 4 Witam ponownie. Zapis i odczyt działa w obu kierunkach. Bardzo dziękuję za pomoc. Kiedy tak patrzyłem na wcześniejsze moje zapiski, to na "moją" logikę wydawało się...
Witam szanowne forum. Chciałbym poprosić o wyjaśnienie zagadnienia odnośnie prawidłowego korzystania z pamięci ram, flash, oraz eeprom. Jak doczytałem na forach i w notach katalogowych, ilość zapisu do pamięci flash i eeprom jest ograniczona.Rozumiem, że chodzi tutaj o moment kasowania i ponownego zapisu np, wsadu do procesora ( tu chyba nie przekroczymy...
Ale co to ma do rzeczy - w związku z tym co napisałem ? Tyle ma do rzeczy, że nie powinno się tylko i wyłącznie ślepo patrzeć w standard C, ale dobrze jest zdroworozsądkowo pomyśleć o pułapkach czyhających w niektórych komponentach i zabezpieczyć się przed nimi, żeby potem nie szukać "dziury w całym". W końcu od tego to forum jest. Nawet jeśli w sprzęcie...
Witam. Gdy na mikrokontrolerze Atmega32 chcę użyć pamięci eeprom,w sposób taki : static EEMEM uint8_t zmienna_w_eepromie = 'a'; to na etapie programowania mam taki komunikat : avrdude: ERROR: address 0x810001 out of range at line .... of efi.hex co robie źle ? Dodam, że programuję składnią : avrdude -c usbasp -p atmega32 -V -U flash:w:plik.hex...
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...
Przepraszam za kolejny wpis ale teraz borykam się kilkoma innymi problemami mianowicie jednym z nich jest zapis/ odczyt z eeprom sugeruje się informacjami zawartymi w książkach oraz http://www.nongnu.org/avr-libc/user-manu... i w swoim kodzie zapisałem coś takiego Multiple markers at this line - incompatible type for argument...
Tadzik jak bym wiedział gdzie to sprawdzić... Ogólnie wyświetlacz na początku wyświetla napis na dolnej części a potem już nie. Jest to napisane w main.c prawie na samym końcu, #include <avr/io.h> #include <avr/interrupt.h> #include <avr/pgmspace.h> #include <avr/wdt.h> #include <avr/eeprom.h> #include <util/delay.h>...
Trzecie podejscie do problemu. Tym razem poprzez write_block. Nie działa mi pozniej program wyswietlania tych wartosci. Nie wiem czemu, bo nie dziala tylko po wlaczeniu funkcji OdczytEEpromu. Sprawdzilem i nadal sa chinskie znaczki; void OdczytEEprom(void ){ LCD_GoTo(0, 0); if (eeprom_is_ready()){... eeprom_read_block(&ee_dane,...
Witam Mam następujący problem, do pamięci eeprom atmegi 8 chce zapisać taka oto tablicę: const uint16_t EEMEM C_rtd[] = {0,233,466,699,933,1166,1400,1634,1...
Witam Mam problem z EEPROM, chcę odczytać zadeklarowaną wartość z pamięci EEPROM i porównać ją w warunku (if) z wartością zmiennej SRAM, spełnienie warunku ma włączyć stan wyskoki na porcie PC4 (powiedzmy zapalić diodę). Przedstawiam napisany przez mnie kod, który niestety nie działa. Proszę o konstruktywne uwagi i zrozumiałe porady, zaznaczam że nie...
Korzystam z atmegi 32. Problem polega na tym że chcę zapisywać wartości do eeprom-u. Zapis robię co przerwanie timera2 od przepełnienia. I za każdym razem jak dochodzi do zapisywania do eeprom-u to mikrokontroler się resetuje. Czytałem coś o fuse bitach coś zmieniłem, ale nie pomogło. Trzeba oddzielnie eeprom i flash programować? Zestaw ewaluacyjny...
Witam. Męczę się już długo i cały czas nie mogę uzyskać rozwiązania. Zamieszczam schemat oraz fragmenty programu. Ogólnie przerwanie chyba działa, bo jak odłączałem jedynie napięcie na komparatorze, ale cały czas zasilałem mikroprocesor to przerwanie występowało. Wydaje mi się, że problem polega na odpowiednim podtrzymaniu napięcia mikroprocesora na...
Ok generalnie to sobie poradziłem już dawno temu i na płytce prototypowej złożyłem wszystko według schematu i wszystko cacy działało. Schemat według którego wszystko zaprojektowałem: http://obrazki.elektroda.pl/6151159400_1... Potem zaprojektowałem płytkę w Eagle, wytrawiłem, polutowałem i tu już to nie działa jak trzeba. Płytka: http://obrazki.elektroda.pl/1048994200_1...
Podejrzewam że jemu chodziło o pewnie o EEMEM modyfikator aby sie samo (w przenośni) wgrało do eepromu tak jak mozna to sobie skonfigurować w IDE. Odpowiedż krótka - nie da się Odpowiedz dłuższa - do się jak sobie dopiszesz troche kodu do gcc (zeby jeszcze sekcję .i2xeeprom wygenerował), zrobisz plugina do eclipsa zeby najpierw zaprogramował twojego...
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];...
Mam prośbę. Czy mógłby mi ktoś wytłumaczyć jak przeliczać pamięć EEPROM. Mój program zapisuje 4 zmiennie do tej pamięci: uint8_t EEMEM uklady; uint8_t EEMEM uk_mem[]; uint8_t EEMEM czujnik_mem; uint8_t EEMEM autowyl_mem; Zmienne 'uklady' i 'autowyl_mem' mają małe wartości int i co do nich jestem pewien, że nie przekraczam ich wartości, co za...
Witam Można prosić o zerknięcie w te funkcję, otóż pewnego dnia przestały zapisywać/odczytywać EEPROM :? [syntax=c]typedef struct { uint8_t numer; uint8_t okrazenia; } DANE_ZAWODNIKA; DANE_ZAWODNIKA numer_zawodnika_tab[sizeof(DANE_ZAWODNIK... DANE_ZAWODNIKA przejazdy_tab[sizeof(DANE_ZAWODNIKA)]; DANE_ZAWODNIKA zawodnik_update_temp; //zapis tymczasowy...
Próbuję wykorzystać EEPROM w moim programie, w tym celu napisałem sobie próbny kod, który powinien wyświetlić mi na wyświetlaczu dwie jedynki. [syntax=c]#include <avr/io.h> #include <avr/interrupt.h> #include <avr/pgmspace.h> #include <avr/eeprom.h> // bibliotek do obsługi EEPROM #include <util/delay.h> #include "LCD/lcd44780.h";...
Przy kompilacji jeśli próbuję skorzystać z eeprom_update_block() kompilator wywala undefined reference to `__eeupd_block_m16' niestety google nic o tym nie mówi, oczywiście biblioteka avr/eeprom.h jest załączona do źródeł. Częściowy kod programu: [syntax=c] struct time { uint8_t h; uint8_t m; uint8_t s; }; struct time closetime EEMEM={0, 0, 0}; struct...
Przy takiej deklaracji nie skompilowało się, ale wpisałem coś takiego: main.c:204: warning: pointer targets in passing argument 1 of '__eerd_word_m8' differ in signedness main.c:204: warning: pointer targets in passing argument 1 of '__eewr_word_m8' differ in signedness
Wiec na komputerze byłoby coś takiego: [syntax=c] ..... byte tablica[1024]; //kazdy element tablicy przyjmuje wartosc od 0 do 255 ...... sp = new SerialPort("COM5", 9600, Parity.None, 8, StopBits.One); sp.Open(); sp.Write(tablica, 0, tablica.Length); //wysłanie tablicy przez port szeregowy (czy tak zadziała??). Wysyłam zawsze tablicę o takiej samej...
http://obrazki.elektroda.pl/7011174400_1... Cześć ! Dziś chciałbym zaprezentować swój najnowszy projekt, którym jest świąteczna choinka LED. Jako, że według świątecznego zwyczaju swoich bliskich obdarowujemy prezentami ów ozdoba została wykonana dla moje dziewczyny, która bardzo lubi klimat świąt i wszystkie ozdoby z nimi związane....
Witam, nie wiem, dlaczego poniższy kod nie działa na procesorze attiny13. Kompiluje się bez błędów w AVR Studio. Jest to część większej aplikacji, która działa poprawnie (dla uproszczenia wyciąłem resztę kodu). Kiedy dodam obsługę EEPROM, aplikacja przestaje działać. Test przeprowadzam następująco: 1. Komentuję blok ODCZYT. 2. Kompilacja kodu (brak...
Jeśli pamięć ta jest "zapisywalna" jak RAM, to osobiście skonfigurowałbym sekcję EEPROMu jak sekcję .data w RAM, czyli kopia we flash, inicjalizacja w startupie. Tylo szkoda pamieci programu na kopie tych danych, zwlaszcza jak ich troche będzie. Sama pamiec chyba jest bardziej traktowana jak flash dla programu, żeby do niej zapisywac trzeba zrobic...
lucas234 to Ty jesteś programistą i Ty decydujesz jakiego typu jest zmienna i gdzie ona ma być zapisana, w której pamięci w zależności od założeń urządzenia które programujesz i tego co chcesz osiągnąć, tak dla przykładu: deklaracje zmiennych w których pamięciach maja się znaleźć: [syntax=c] uint8_t a; // zmienna w pamięci RAM uint8_t EEMEM b;// zmienna...
Witam. Na początek chciałem wstawić kawałek programu, a w zasadzie cały, który na tą chwilę kręci silnikiem, wyświetla wartość adc i jest jakiś tam zalążek do obsługi eeprom-ram. Proszę wybaczyć, jeżeli jest to może trochę pokręcone i napisane nie profesjonalnie, ale działa, a na kosmetykę to jeszcze za wcześnie na moim poziomie. Jestem w pracy, więc...
Witam Mam takie pytanie: czy kompilator może przydzielić bloki w pamięci EEPROM w kolejności innej niż zadeklarowano je w programie? Jeżeli tak, to wpłynie to na adres bloku pamięci,prawda? Mam taki problem: W programie mam zadeklarowane 2 bloki pamięci EEPROM w kolejności jak poniżej: znaki. Tak jakby ponowne wgranie tego samego kodu, spowodowało że...
Wrzucam działający kod może się komuś przydać bo ja sie oszukałem i o kombinowałem jak głupi, jest dużo przykładów z błędami w necie Deklaracja typedef struct { uint8_t h; uint8_t m; uint8_t s; } czas; czas ee EEMEM; czas ram; zapis eeprom_busy_wait(); eeprom_write_block(&ram, &ee, sizeof(ram)); odczyt eeprom_busy_wait();...
Witam ponownie. Aby licznik spełniał wszystkie moje oczekiwania, chciałbym aby po odebraniu każdej kolejnej paczki impulsów, stan licznika został zapisany w eeprom, tak aby po ponownym włączeniu zasilania,ostatni stan licznika był wyświetlany na LCD. Ponieważ robię to pierwszy raz efekty są marne; po podaniu paczki impulsów zapisuje się jakiś dziwny...
Witam Mam pytanie dlaczego zmienna która inkrementuje się tutaj: [syntax=c] if(klawisz_wcisniety(ZAWODNIK_M)) { lcd_cls(); zawodnik_przejazdy_read(); zawodnik_przejazdy[zawodnik.numer].okraz... = 0; zawodnik_przejazdy_update(); zawodnik.numer++; zawodnik_przejazdy[zawodnik.numer].okraz... zawodnik_przejazdy_update(); } [/syntax] Inkrementuje się...
Witam walcze od kilku godzin z takim problemem przy zaniku zasilania kondensator podtrzymuje MCU i umożliwia mu zapis do eeprom zanik wykryty wewnętrznym komparatorem, no i układ działa ale jak szybko wyłączę i włącze zasilanie a jak zrobie to wolno to nie działa kod trochę zmodyfikowałem min wektor przerwania i dodałem funkcje testujące na lcd. Używam...
OK, oto kod: Plik EEP.h [syntax=c] /* * EEP.h * * Created on: 29 maj 2016 * Author: MaS */ #ifndef EEP_H_ #define EEP_H_ #define DEF_ADSR0 800 #define DEF_ADSR1 500 #define DEF_ADSR2 3000 #define DEF_ADSR3 48 #define DEF_ADSR4 300 #define DEF_ADSR5 500 #define DEF_ADSR6 2500 #define DEF_ADSR7 15 #define DEF_WZ1 200 #define DEF_WZ2 200 #define DEF_OFS1...
Witam otóż mam chyba prosty ale nieprzeskakiwany dla mnie problem otóż w ramach nauki C i obsługi Atmegi napisałem sobie prosty licznik binarny na jednym bajcie (8 diód). Które podłączone są do jednego rzedu. (Dokładnie PA0) I wszystko działało by pięknie i cudownie jednak chciałbym by program zapamiętywał ost znaną nam liczbę do czego przyda nam się...
aktualny stan z maili Markusa: - odnośnie rezystorów w epromie > Markus entered wrong value of resistors in this version, this should be > improved in EEROM as described ! I think it is correct. R_L ist "680", and R_H is "4700" in EEPROM, isn't it? Kolega Freddy nie zauważył, że w kodzie wartość monożona jest przez 100 i dlatego wprowadza się w epromie...
Witam Jak w temacie, gdy używam do aktualizacji szyfrowanego pliku *.hex to update przebiega prawidłowo do końca i program działa. Gdy jednak użyję dodatkowo pliku *.epp to wówczas zawiesza się aktualizacja przy samym końcu. Gdy robiłem plik do aktualizacji samego eepromu również nie działała jego aktualizacja. Aplikacja używa zmiennych typu EEMEM z...
A jeśli z jakiegoś powodu ci to nie odpowiada to musisz zrobić własną implementację funkcji obsługi EEPROM. Nie mogę zamknąć całej funkcji, gdyż ona może trwać nawet kilkanaście milisekund, a projekt wykorzystuje 8 funkcji ISR i na 100%, któraś z nich wystąpi w trakcie tych kilkunastu milisekund. Ech...myślałem, że rozwiążę problem "na szybko" korzystając...
odczyt eemem static eemem peugeot eeprom
renault laguna kontrolki instalacji origin podłączenie efektu miksera yamaha
zasilacze czarna lista corral super n3500
Specyfikacja i sprzedaż telewizorów Micro LED Samsunga Jak zmieniać biegi w ciągniku Deutz-Fahr DX 145?