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
Deklaracja &
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]
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...
[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.
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...
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 {...
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...
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 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...
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)...
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...
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;
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...
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]...
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 ?
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 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...
Witajcie. Avrgcc i plik nagłówkowy eeprom.h. Nie znalazłem prostego sposobu. Czy da się umieścić zmienne w pamięci EEPROM pod konkretnym adresem nie zostawiając pola dla linkera? Potrzebuję tablicę uint16_t Tablica[16] EEMEM umieścić (a potem odczytywać) od pierwszej komórki pamięci EEPROM (czy jakiejkolwiek innej). Da się to zrobić prosto bez pisania...
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...
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...
Spróbuj inaczej zadeklarowac ten bajt w EEPROM: static EEMEM uint8_tbajt_do_eeprom;
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?...
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, 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...
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...
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.
(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...
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...
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.
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...
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);...
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(){...
nie rozumiem tego czy mógłbyś mi powiedzieć jakie argumenty przekazujemy do tej funkcji EEMEM
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...
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...
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();...
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...
char *cptrFLASH=( char*)&DefaultWorkParameters_inFLASH... char *cptrEEPROM=( char*)&DefaultWorkParameters_inEEPRO... unsigned char *cptrFLASH=(unsigned char*) pFLASH; unsigned char *cptrEEPROM=(unsigned char*) pEEPROM; to czy unsigned char czy char nie ma znaczenia w tym pierszym przypadku działa ok a wdrugim jest to przesunięcie...
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 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...
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...
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>...
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>...
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...
! 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]
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...
odczyt eemem static eemem eeprom virgin
dodge światła jazda kierowca podświetlić tablica rozdzielczy
depollution system faulty peugeot pilot cosmo
Długotrwałe przechowywanie mieszanki paliwowej 1:50 z olejem Husqvarna Radio lampowe MENUET UKF 20303 - przepalanie opornika R9