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]
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...
http://obrazki.elektroda.pl/5385398300_1... Zaprezentować dziś chcę projekt lampki RGB który wykonałem na pracę zaliczeniową z systemów wbudowanych. Moim zdaniem osiągnięty efekt jest zadowalający więc może ktoś będzie zainteresowany wykonaniem urządzenia według mojego projektu. Jako, że jest to pierwszy zrealizowany przeze mnie projekt...
[syntax=c] #include <avr/io.h> //#include <EEPROM.h> #include <avr/eeprom.h> //#include <Wire.h> //#include <LiquidCrystal_I2C.h> //LiquidCrystal_I2C lcd(0x20, 16, 2); // Ustawienie adresu ukladu na 0x27 #include "HystFilter.h" HystFilter potA( 1024, 128, 3 ) ; // 10 bit ADC = 1024, 64 discrete output values required, margin...
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....
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, 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]...
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...
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...
! jest operacją logiczną. Inaczej to wygląda tak - jeżeli kWh_stan jest równy zero to go wyzeruj. O to ci chodziło? To nie to samo co: [syntax=c]if(kWh_Stan == 0xffff) kWh?_stan=0;[/syntax] BTW, zmienne w EEPROM są zainicjowane, przynajmniej mogą być, więc taki kod jest niepotrzebny, wystarczy napisać: [syntax=c]uint16_t kWh_stan EEMEM = 0;[/syntax]
y0yster poczytaj jeszcze ten manual, bo wyważasz otwarte drzwi - stosowny atrybut już jest zdefiniowany w bibliotece pod nazwą EEMEM. Prawda, jest on zdefiniowany: #define EEMEM __attribute__((section("... Tylko wcześniej go nie widziałem :). Ale prawda jest taka, że oba zapisy są równoważne :), więc nie ma...
bez optymalizacji też nie działa (-O0)? Jeśli nie, to weź spreparuj kod do minimum, tak żeby pokazywał sedno sprawy. Usuń dosłownie wszystko co tylko można, ale tak, żeby problem występował. Uprość nawet odczyt i zapis, żebyśmy mogli prześledzić co robisz. Bo jeśli z O0 nie będzie ci chodzić i fusy masz dobrze ustawione, to tylko kod może więcej wyjaśnić....
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, chciałbym wykorzystać pamięć EEPROM do zapisania jednej zmiennej. Ogólnie chodzi o to, że mam na płytce 5 diod LED i przycisk. Chciałbym aby po wciśnięciu zapały się kolejne diody, a po odłączeniu i ponownym podłączeniu zasilania powinny świecić się te same diody co przed odłączeniem. Stworzyłem sobie taki program ale nie działa. [syntax=c] #define...
To w takim układzie jak będzie wyglądał odczyt (zakłóciło mi to cały pogląd na informacje uzyskane z książki, ale to najwidoczniej coś źle zrozumiałem ) Do tej pory próbowałem to zrobić eeprom_read_float (&ee_K_Pi, K_Pi); , czy według float eeprom_read_float (const float *__p) __ATTR_PURE__ eeprom_read_float (&ee_K_Pi) ?
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...
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ę...
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. Jedyna prawdziwa informacja, jaką chciałem przekazać tym zdaniem jest taka, że zawsze staram się samodzielnie rozwiązywać wszelkie problemy korzystając z matematyki/fizyki/informatyki/czystej...
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...
Zastosowalem te funkcje o ktorych mowisz, ale nie poskutkowalo. EEprom widze ze dziala, bo po resecie procka zachowane sa ziany tych chinskich znaczkow jakie mam. Ogolnie to zmiany dokonuje poprzez przyciski, a widze to na wyswietlaczu LCD. Dzialam tak ze zmian dokonuje w zmienneMenu, a po zakonczeniu edycji ma mi zapisywac do EEpromu. Jest to 15 charow...
Powyższego kodu używam w dłuższym programie (nie zamieszczam tutaj bo straszny bałagan mam w kodzie), zapis i odczyt nie działają poprawnie, z kolei testowałem ten kod w oddzielnym małym programiku i działa. To znaczy, że coś robisz nie tak. Ostatnio był taki problem, zobacz Czy kolega Dr. Vee (lub ktokolwiek inny) wie jak zapisuje/odczytuje się przykładową...
Witam, Z powodu kończących się zasobów pamięci flash jestem zmuszony przenieść definicje wyglądu znaków wyświetlacza LCD od nokii 3310. Deklaracja tablicy oraz fragment tablicy wygląda tak: [syntax=c] static EEMEM unsigned char lcd_Font[][5] = { { 0x00, 0x00, 0x00, 0x00, 0x00 }, // sp { 0x00, 0x00, 0x2f, 0x00, 0x00 }, // ! { 0x00, 0x07, 0x00, 0x07,...
Witam Mam pewien problem z obsługą wewnętrznej pamięci EEPROM w ATmedze8. Mianowicie, napisałem prosty program mający na celu zliczać ilość wystąpień przerwania zewnętrznego INT1. Wszystko wydaje się działać poprawnie, ilość wystąpień przerwania jest zliczana prawidłowo i zapisywana w EEPROM oraz wyświetlana na LCD, jednak czasem po włączeniu zasilania...
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())...
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...
Program bez użycia EEPROM działa dobrze, jednak bez zapamiętywania, które chcę mieć - wieć dodaję funkcje: Zrobiłem według sposobu LordBlick 02 Lip 2012 15:29: i=eeprom_read_word(&i_ee); Zmieniałe również na: i=eeprom_read_word(i_ee); - bez '&' i to samo z zapisem- program się kompiluje - avrstudio po 1 kompilacji wyrzuca ostrzeżenia,a...
Pomoozcie prosze z tym kodem: #include "defines.h" #include <ctype.h> #include <stdbool.h> #include <stdint.h> #include <stdio.h> #include <avr/eeprom.h> #include <avr/interrupt.h> #include <avr/io.h> #include <avr/pgmspace.h> #include <avr/wdt.h> #include <util/delay.h> #include...
Witam, mam jakiś błąd w sofcie, który powoduje, że po odłączeniu i włączeniu zasilania program nie działa prawidłowo. Zresetowanie atmegi bez odłączenia zasilania powoduje że wszystko chodzi już dobrze. Próbowałem różne ustawienia fuse'ów, kwarc 12MHz, CKOPT włączony, ustawiony najdłuższy możliwy czas opóźnienia włączenia. Testowałem na wewnętrznym...
Poniżej źródło w którym mam: -pomiar ADC -pomiar szerokości impulsu PWM wysterowanie przekaźnika -USART Mikrokontroler ma spełniać funkcję sterownika do ledów jako oświetlenie samolotu z wyróżnieniem wszystkich etapów startu jak kołowanie włączenie silników itp. [syntax=c] #include <avr/io.h> #include <inttypes.h> #include <util/delay.h>...
Witam skonfigurowałem wstępnie adxl345, jednak wyniki są błędne. Czy ruszam akcelerometrem czy ie pokazuje jakieś wartości na wyświetlaczu lcd. Mój sprzęt to: Atmega16A 1Mhz (testowane również na 8Mhz). Wyświetlacz LCD, ADXL345. W programie część na pewno jest dobrze napisana, gdyż jak zmienię szybkość SPI to na wyświetlaczu szybciej wyświetlają się...
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...
W tej chwili nie mam możliwości podłączyć się i sprawdzić odczyt eeprom. Dziwne jeszcze jest jedno, po włączeniu pamięta 2 z 4 czasów. Najczęściej gubi się czas t2 pod adresem uint8_t pamt2 EEMEM=1 i bardzo często jest powiększony o czas t2
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);...
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++;}...
[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.
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);...
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ć...
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 {...
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,...
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.
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 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ę...
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.
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, 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];...
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.
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...
Napotykam teraz na inny problem. Napisałem program, który za każdym razem inkrementuje zmienną, jeśli przekracza 41 to ją zeruje. Wynik wypisuje na LCD. Działa, jeśli między wyłączeniem i ponownym włączeniem urządzenia nie mija więcej niż ok 2 sek. Jeśli natomiast wyłączę na 5, 10s, to zmienna (nie ważne jaką zapisała wartość do EEPROM) ustawia sie...
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...
Odwołując się do tego co napisał mirekk36 próbowałem ominąć funkcję typu eeprom_write_block(...) def. przykładowo (globalnie): EEMEM struct _sEEPROM_default sEEPROM_default = {0x23, {1,2,3,4,5,6}}; EEMEM struct _sEEPROM_default *pEEPROM_default = &sEEPROM_default; z symulacji wychodzi, że jest ta struktura umieszczona jak...
eeprom eemem static eemem zdalny odczyt
candy indukcyjny zabezpieczenie kontaktron liebherr żarówka
problemy diagbox interfejs delphi
Problem ze sterownikiem Karty Teredo Microsoft Jak zresetować pompę ciepła Nulite 8,5 kW?