Witam, ilość odczytów nie ma znaczenia, mam układ gdzie 8 komórek 24C02 jest odczytywane cyklicznie co kilka milisekund w termometrze od ponad 7 lat i jeszcze nic się nie zmieniło. Nigdy nie spotkałem się z informacją o ilości cykli odczytu a jedynie zapisu do EEprom.
BOD to tylko terapia doraźna. Popraw przede wszystkim zasilanie, musisz mieć nieźle pokaszanione, skoro napięcie tak pływa, że miałeś 25% błędów. Popraw też program. Dobrą praktyką jest ustawienie EADR pomiędzy zapisami/odczytami na nieużywaną komórkę pamięci EEPROM. Dzięki temu przypadkowy zapis zostanie wykonany w nieużywanym obszarze.
A jak jest zadeklarowana zmienna? Jako uint16_t?
[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.
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, potrzebuję co minutę zapisywać zmienną w pamięci EEPROM. Ile czasu "teoretycznie" pamięć będzie można użytkować? Czy ilość cykli zapisu jest taka sama do odczytu? Czy jeżeli wykonuję tylko zapis co minutę od ilość cykli odczytu również ulega zmniejszeniu ?
Moim zdaniem tylko opóźnienie przy zapisie powinno wystarczyć i to mniejsze np. 10ms. Przy odczycie bez opóźnienia lub dużo mniejsze 1...5ms.
Witam. Atmega może padać , to jest możliwe szczególnie EEprom , duża ilość zapisów do w/w. Czy da się sklonować istniejącą , wszystko zależy od LockBitów ustawionych w Atmega. Jeżeli została zabezpieczona lockBit to odczyt się nie uda, dostaniemy losowe wartości , zupełnie bezużyteczne. Pozdrawiam.
Dalej nic!!! Co do konfliktu adresow: 1010001 to adres PCF'a A0=1 1010000 a to EEPROM'u A0=0 i P0=0 Wiec wedlug mnie poki co konfliktu nie ma. Chociaz lepiej bedzie jesli zmienie adresy na: 1010000 PCF z A0=0 1010010 EEPROM z A0=1 i P0=0 1010011 EEPROM z A0=1 i P0=1 Dziwna sprawa... poza tym nawet jak wyciagne PCF'a to i tak EEPROM nie dziala. WP w...
Czyli po kropce podajesz nr odczytywanego bitu, a możesz wyjaśnić dokładniej jak z zapisem jednego bitu?
Za długie pętle lub za krótkie tablice zmiennych.
Spróbuj tak: odczyt [syntax=c] if(eeprom_is_ready()) { eeprom_read_block(&ustawienia,&ustawieni... } [/syntax] zapis [syntax=c] cli();//Globalna blokada przerwań if(eeprom_is_ready()) { eprom_write_block(&ustawienia,&ustawieni... } sei();//odblokowanie przerwań [/syntax]
Problemu szukaj w warunkach if. Zasilanie nie ma w tym przypadku znaczenia. Poza tym przed zapisem (eeprom_write_byte(&pamt1,++t1)) do zmiennej w pamięci EEPROM (pamt1) inkrementujesz wartość zmiennej t1 (++t1). Nie wiem, czy tego właśnie oczekujesz. Poza tym nie operujesz na pozostałych zmiennych zarówno w RAM (t2, t3, t4), jak i w EEPROM (pamt2...pamt4)......
K_o_n_r_a_d, jeżeli masz trochę czasu to przedstaw mi swój sposób zapisu/odczytu danych do/z EEPROM. Z góry dzięki. Ja to robię tak mniej więcej: Dim pomocnicza As single At 700 Dim X As Eram Single At 100 X=pomocnicza 'zapis do eeprom pomocnicza=X 'odczyt z eeprom
Odnoszę wrażenie, że cały problem polega na tym, że widzisz wartość binarną ADC jako tekst. Na przykład liczba 455 traktujesz jako 3 znaki: '4', '5' i '5'. Potraktuj liczbę 455 jako liczbę 2 bajtową bez znaku, czyli uint16_t, czy unsigned int (zależnie od notacji). Oto przykładowy kod: [syntax=c]uint16_t adc_pos; //zapis do eeprom-u zmiennej adc_pos...
Mój sposób nr 1: -zakładasz w jednej lub dwóch komórkach wskaźnik do bieżącej struktury roboczej, składającej się z licznika zapisów (3 bajty) oraz rejestru przechowującego zmienną (o dowolnym rozmiarze), -następnie tworzysz funkcje do zapisu oraz odczytu zmiennej. Fun do odczytu ustala za pomoca wskaznika poczatek struktury w EEPROM, a nastepnie odczytuje...
Tak jak pisałem, po operacjacvh na EEPROM, rejestr adresowy powinien wskazywać na nieużywaną komórkę pamięci. Ty zapisujesz i nadajesz mu 0, czyli wskazuje na komórkę pamięci używaną przez twoją strukturę. W przypadku problemów zawartość tej komórki zostanie uszkodzona. Poza tym dlaczego nie używasz funkcji bibliotecznych dostępu do EEPROM? Masz tam...
Zmienna double zajmuje wiecej niz 1 bajt - dokladnie 4, a ty czytasz tylko 1 bajt. Nie ma prawa dzialac. Jak pisze Dr.Vee zainteresuj sie eeprom_read_block i eeprom_write_block, jako dlugosc bloku mozesz wykorzystac sizeof(double), albo sizeof(zmienna).
Zrobić jedną tablicę jednowymiarową i zapisywać kolejno po sobie po 7 tych zmiennych, następnie odczytywać z "offsetem" tablica(x + y*offset) daje to pseudo 2 wymiarową tablicę. tablica(0 + 0*7) = tablica(0) tablica(1 + 0*7) = tablica(1) tablica(2 + 0*7) = tablica(2) .... tablica(0 + 1*7) = tablica(7) tablica(1 + 1*7) = tablica(8) itd....
nie mam włączonej żadnej optymalizacji (-00) REG->EECR |= 1<<EEMWE; REG->EECR |= 1<<EEWE; żeby zapis się wywołal to druga zmiana bitu musi odbyć się w ciągu 4 cykli zegarowych a tymczasem ten kod skompilowany bez optymalizacji daje w gcc coś takiego: [syntax=asm] 162:ac e3 ldir26, 0x3C; 60 164:b0 e0 ldir27, 0x00; 0 166:ec e3 ldir30,...
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++;}...
Witam Z listingu wynika, że dane są zapisywane do wewnętrznego eepromu procesora. Jest taka możliwość, tylko trzeba przerobić program. Należy dodać obsługę I2C i przepisać podprogramy do zapisu, odczytu i kasowania pamięci. Pozdrawiam
Aby zapisywać i odczytywać zmienne z wbudowanej pamięci EEPROM musisz zadeklarować jakąś zmienną w tej pamięci http://avr.elektroda.eu/node/3 W tej chwili zapisujesz i odczytujesz jakąś przypadkową zmienną w pamięci SRAM
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...
W eeprom_write_block() masz odwrotną kolejność wskaźników. Najpierw musi być źródło, później cel.
Witam wszystkich Chcę wysyłać i odczytywać obrazki BGF do/z eepromu. Procesor Atmega 32, eeprom at24c32. Wyświetlacz DMF5005N. T6963C. Ewentualnie skorzystałbym z EEpromu atmegi 644p. Czy posiada ktoś sprawdzoną procedurę zapisu i odczytu grafiki.? Próbowałem na przykładzie gotowca z helpa BASCOMA, ale miałem tylko czarne tło. Pozdrawiam i proszę o...
witam wszystkich. W jaki sposob moge zapisywac szereg zmiennych w eepromie avr'a pod jakas tam nazwa a potem je odczytywac. np. mam trzy akwaria "A" "B" "C" i w akwarium A mam trzy zmienne temperatura dawka jedzenia czas swiatla. kazde z tych trzech akwariow ma inne parametry i chodzi mi o to by po przeniesienu urzadzenia z akwarium A do akwarium B...
Witam Sporo jest pytań na temat EEPROMU, ale nie udało mi się znaleźć odpowiedzi, więc przedstawię swój problem. Wykonałem zegar szachowy na ukł. ATmega 8. Wszystko działa poprawnie oprócz zapisu i odczytu pamięci EEPROM. Procedura zapisu nie modyfikuje pamięci, procedura odczytu daje zawsze "0", bez względu na rzeczywistą zawartość. Zapis i odczyt...
Twój problem wynika bezpośrednio z ignorowania warningów i dlatego zaliczasz 10 stopień piekiełka . A jeżeli sobie z tym nie radzisz, to trzeba to napisać i pokazać już w pierwszym poście. Nie odpowiedziałeś na moje pierwsze pytanie - ciągnąć Ciebie za język trzeba ... a czas Ci leci ...
To będziesz musiał się trochę napocić. Po pierwsze jak używasz watchdoga w programie, to musisz w jakiś sposób sprawdzić czy reset aby na pewno służył do upgrade'u. Możesz to zrobić np przez zapis do eepromu jakiejś wartości, odczyt i odczyt jej bootloaderze (pamiętaj żeby bootloader ją resetował). Dobry by był też mechanizm który by pozwolił na zrezygnowanie...
http://obrazki.elektroda.pl/2762225800_1... Jedyny taki przenośny programator układów AVR. Pomoże wszędzie tam, gdzie trzeba zaktualizować oprogramowanie, a układ docelowy znajduje się w trudno dostępnym miejscu i nie mamy możliwości (lub chęci) ciągać ze sobą laptopa i mnóstwa przewodów. Banalnie łatwa obsługa, niski koszt wykonania, super...
Dzięki, ale niestety nie działa :(. Przy kompilacji wysypuje cały worek błędów. A co do zapisu EEPROM to faktycznie zapomniałem o jej trwałości. Przerobiłem tak, że zapis jest na żądanie (przycisk). Nadal wpisy są zerowe.
Tak funkcje są potrzebne lecz aby ich użyć należy albo je za linkować z zewnętrznej biblioteki "include ....." albo najpierw zadeklarować a potem używać (Ty akurat robisz to odwrotnie w najpierw próbujesz użyć a potem dopiero deklarujesz funkcję - przesuń funkcje przed main()"
... dlatego chciałem to zorganizować programowo na kontrolerze, żeby przy pierwszym odpaleniu programu na procesorze do EEPROM-u zapisało domyślne wartości. A później przy kolejnych uruchomieniach procesora nie było już tego zapisu przy uruchomieniu tylko odczyt. Ale coś czuję w kościach, że się tak nie da... Jak to się nie da? .... ależ da się i powiem...
Zapis do eeprom musi się odbywać inaczej. [syntax=c]void eeprom_write_block(const void *źródło, void *adres_w_EEPROM, size_t ilość);[/syntax]
[syntax=c] aaa=EEPROM_odczyt(0); itoa(aaa, text, 10); [/syntax] aaa wewnątrz funkcji EEPROM_odczyt(); to nie to samo aaa co w int main(void); - to dwie różne zmienne.
Przecież dostałeś ode mnie opis nagłówka eeprom.h oraz dwa przykłady w tym jeden dokładnie taki jak potrzebujesz: Funkcje obsługi eeprom z nagłówka <avr/eeprom.h>: http://www.nongnu.org/avr-libc/user-manu... Tutaj jest dokładnie taki przykład jak potrzebujesz - po włączeniu odczytuje zapisane w eeprom parametry: http://mikrokontrolery.blogspo...k-podci...
Chodzi Ci o zapis do pamięci EEPROM? W wątku http://www.elektroda.pl/rtvforum/viewtop... zamieściłem plik lib_avr.zip, w nim znajdziesz odpowiedź na Twoje pytanie (jest tam biblioteka i przykładowy plik z krótkim programem.
Sprawdzam albo przez eeprom_read_byte() albo zrzucam sobie zawartość eepromu do hex-a. Po prostu każde programowanie powoduje wyczyszczenie pamieci eeprom, bez wzgledu na stan bitu EESAVE.
8 znakow SN da sie bez problemu zapisac w 4 bajtach + 1 bajt na dodatkowa dane, czyli 5 bajtow na kazdy "rekord". I teraz: 500 * 5 = 2500 bajtow. Pamiec 24c32 ma pojemnosc 4096 bajtow a 24c64 - 8192 bajty co pozwala w Twoim przypadku zapisac ~1638 "rekordow" czyli az nadto. Pamieci te sa tanie i latwo dostepne. Zatem karta SD jest w tym przypadku raczej...
Tu masz program do zapisu i odczytu eeprom w procesorze program do wyświetlania na wyświetlacz napisz sam poszukaj w google te linki powinny ci pomoc http://www.fizyka.umk.pl/~ptarg/labview/... http://www.elportal.pl/pdf/k09/25_10.pdf http://www.elportal.pl/pdf/k09/27_01.pdf void EEPROM_write(unsigned int uiAddress, unsigned char ucData)...
Chodzi oczywiście o lock bity (lock - blokada). Swoją drogą skoro programujesz swoje avrki to jak możesz nie wiedzieć jeszcze nic o tych bitach ? Jak programujesz swoje AVRy ? Po pierwsze to nie są bity ustawiane z poziomu programu. PonyProg, AvrDude, AvrStudio, Bascom wszystkie pozwalają na ustawienie lock bitów. A blokując Flash lub EEPROM blokujesz...
No tak to właśnie zrobiłem... No chyba nie bardzo :D Przetestuj ten kodzik :D [syntax=vbnet]$regfile = "m32def.dat" $crystal = 16000000 Config Submode = New Config Lcd = 20 * 4 Config Lcdpin = Pin , Db4 = Portb.2 , Db5 = Porta.0 , Db6 = Porta.1 , Db7 = Porta.2 , E = Portb.3 , Rs = Portb.4 Config Pind.2 = Input : Set Portd.2 : Ok Alias Pind.2 Config...
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ę...
Dzięki, testy na Arduino potwierdzają, że funkcja EEPROM.put() faktycznie czeka aż zapis się zakończy i trwa to ~3,35ms na bajt. Pozostając jeszcze w temacie EEPROM-u, jak to jest z tą ilością cykli zapisu do pamięci? Zauważyłem, że większość uC ma tą wytrzymałość deklarowaną na 100k zapisów, niektóre (np. Atmega88) tylko 50k, ale czy ktoś to w ogóle...
Zbytnio mi ta odpowiedź nie pomogła... To chyba niezbyt dokładnie przeczytałeś(zrozumiałeś) dokumentację DS18B20 :cry: Przypatrz się tabelce i zobacz, gdzie znajduje się rejestr konfiguracyjny, w którym zapisane jest, z jaką rozdzielczością ma "pracować" nasz DS. http://obrazki.elektroda.net/29_12275171... Zakładając, że nie znamy wartości...
Witam Czy procesor AtMega 328p wyrobi się przy założeniu: Odczyt danych z RS485 Zapis danych na karcie SD Zakładam tak: PD0, PD1 - UART PD3 - przełączanie transmisji RS485 PC4, PC5 - I2C ( TWI ) pod EEPROM + PCF8563 PC0, PC1, PC2, PC3 - linie danych wyświetlacza PB1, PB2 - linie E i RS wyświetlacza PB3 ( OC2A ) - podświetlanie wyświetlacza PD4, PD5,...
http://obrazki.elektroda.pl/3799930900_1... Jakiś czas temu pisałem, jak nagrywać gry z PC na PEGASUSA. Teraz pora podejść do tematu z drugiej strony – jak zgrać naszą ulubioną kolekcję kartrydży na komputer. Wiele osób może się dziwić, po co taki zabieg, zwłaszcza, że większość gier z tej konsoli krąży już po Internecie. Czasem...
Druga sprawa. Skoro ma być reset np. BORF: flaga resetu przy obniżonym napięciu sieci, to czy można wcześniej zapisać do EEproma jakieś ważne dane? Zdecydowanie nie należy nic zapisywać do EEPROM przy obniżonym napięciu. Poza tym BOD nie wystawia żadnej flagi przerwania którą mógłbyś wykorzystać. On po prostu resetuje układ o ile jest włączony a następnie...
Z tego co się orientuję to EEprom używa się zazwyczaj do zapisywania takich danych jak ustawienia i opcje wczytywane przy starcie "systemu", jego szybkość zapisu/odczytu jest względnie mała, i zapisując coś do EEpromu podajesz konkretny adres, więc chyba trzeba samemu kontrolować ile się ma jeszcze miejsca (jakie adresy są wolne ) .
No i właśnie lektura tego postu doprowadziła mnie do szczęśliwego zakończenia, bo układ działa (sprawdziłem). Teraz zapis i odczyt z EEPROMu. Dodano po 1 Zaczął się robić bałagan w programie, wiec utworzyłem sobie oddzielne pliki EEprom.h i EEprom.c i tam chcę też umieścić funkcje zapisu i odczytu. Po podłączeniu zasilania potrzebuje zrobić taką procedurę,...
Na razie próbuję to zrobić w tradycyjny, "Atmegowy" sposób, gdyż mam to już przećwiczone. Na razie procedurka sprawdza, czy w EEPROMie jest FF (lub FFFF dla 16 bitowych zmiennych) i ustawia wartości domyślne. Jednak po odczytaniu, wartości zmiennych nie sa na swoich miejscach. Wpisuję 5 danych typu uint8_t i 8-elementową tablicę uint_16 t. W której...
zamiast 24c512 zastosuj pamiec dataflash np at45db321 (32mb) jest mniej wiecej w tej samej cenie co eeprom ,ale zapis/odczyt bez limitu ,taki czytnik to na wieki ;) ,po za tym jest szybka (interfeis SPI )
Dane zapisują się w pamięci eeprom ale nie mam pojęcia jak to sprawdzić. Zapisują się,… albo też nie! Nie jest to poprawna forma zapisu do EEprom, co jest omówione niżej..... Generalnie wygląda to tak że po uruchomieniu sterownika ustawiam po kolei wszystkie parametry i wszystko działa do momentu wyłączenia zasilania ...... A powinno być w tej kolejności:...
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...
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...
. Język BASCOM BASIC oferuje wiele instrukcji obsługujacych wyświetlacz LCD. Aby jednak mieć całkowitą kontrolę nad wyświetlaczem można stosować procedury w języku asembler. Poniżej znajduje się przykład: $asm Ldi _temp1, 5 'załadowanie kodu rozkazu do R24 Rcall _Lcd_control 'prześlemy do LCD jako komendę Ldi _temp1, 65 'załadowanie do R24 kodu znaku...
Po pierwsze: Używasz wewnętrznej pamięci, więc pamiętaj o żywotności cyklów zapisu/odczytu. Jest zalecenie, aby czynności związane z wewnętrzną pamięcią nie wkładać do pętli. Po drugie: Zainteresuj się zewnętrznymi pamięciami na I2C. To są moje wycinki kodu do regulatora PID: To w nagłówku: $eeprom 'Informacja dla procesora o korzystaniu z pamięci EEPROM...
Rozumiem a do odczytu wystarczy j=twiread(adres);? Też trzeba sprawdzić ACK, bo układu może nie być (np adres jest zły), kabelek się urwał, itp. Po warunku staru też należy sprawdzic status bo może byc problem z rezystorami podciągającymi. Jest tez inny powód. Np komunikujesz się po IIC i w czasie wysyłania np drugiego impulsu SCK następuje reset procesora....
Wygląda na problem z zasilaniem, pamięć eeprom jest niestety dość czuła na tym punkcie. Próbowałeś włączyć Brown-out detection z ustawieniem na odpowiedni poziom napięcia?
Jeśli ta funkcja eeprom_write_block jest z atmelowej biblioteki to nie musisz na nic czekać.
Ten program z #5 działa przez swoją głupotę tylko. Na tej samej zasadzie, jeśli Ty zdradzisz mi swój wiek, ja powiem Ci ile masz lat. Magia. Program z #1 w ogóle nie ma sensu. Nie wiem co to jest: eeprom_busy_wait(); i strlen w eeprom_read_block(R_array,0,strlen(W_arr... To akurat jest proste. Dzięki "strlen" odczytujesz z eeprom dane o losowej długości...
Jeśli chodzi Ci o ampersand to działa i z nim i bez niego nie wiem dlaczego tak sie dzieje eeprom_write_block( val1, eeprom_val, 6 ); // zapis do eeprom eeprom_read_block( val1, eeprom_val, 6 ); // odczyt z eeprom Pozdrawiam
Witam, 1. 400kHz I2C a 20MHz ISP. Ile razy szybszy jest odczyt (i ew zapis) pamięci DataFlash od I2c EEPROM? Po pierwsze: nie osiągniesz 20MHz transmisji do pamięci DataFlash bo największa dopuszczalna częstotliwość pracy ATmega128 to 16MHz, a do tego częstotliowść pracy magistrali SPI ( a nie ISP In Cicuit Programing - programownie w układzie ) jest...
(at)tadeko, dużo przykładów w asm jest zawartych w datasheet mikrokontrolerów atmela. Między innymi jest ten o który pytasz, jest również odczyt. Dodano po 9 Daj sobie spokój. Jeśli kolega Tadeko chce uczyć się asemblera, to należałoby mu pomóc i nakierować w odpowiednim kierunku. Przede wszystkim musi zrozumieć, że porównanie asm z bascom nie ma sensu....
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]
No więc w ten sam sposób nie zapiszesz do zewnętrznej pamięci EEPROM. Po pierwsze, ona jakoś się komunikuje z procesorem, popularne interfejsy to SPI lub I2C. Taką zapewne pamięć masz. Więc musisz oprogramować komunikację z nią. Jak już będziesz miał komunikację z pamięcią to musisz napisać własne funkcje wyższego poziomu, realizujące zapis/odczyt struktur,...
Mi chodzi o to że wiekszość mikro kontrolerów ma piny kilku interfejsów (uart, spi, i2c, jtag) i chodzi mi o sytuacje w których uszkodzeniu ulega np Atmega w jakimś urządzeniu i zastępuję ją nową atmegą na którą chcę wgrać zawartość taką jak ta na uszkodzonej atmedze, więc do odczytu i zapisu eeprom i flash użyć można któregoś z tych interfejsów. Jeśli...
Witam! Mam problem z zaprogramowaniem kości 24c32. Jest ona podłączona do atmegi8 do lini sda i scl. Pozostałe linie eepromu są: a0, a1, a2, wp, vss do masy i vcc do plusa. Atmega odczytuje tylko 255 więc komunikacja chyba jest ale oczywiście pamięć pusta, a gdy próbuje coś wpisać to to samo.. Przykładowy program: 'początek i2cstart i2cwbyte 160 'adres...
Witam ponownie, dziękuję za odpowiedzi. (at)megao Sprawdziłem z ciekawości dzisiaj zapisywanie EEPROMu z poziomu programu dla AVRa (z racji, że cierpię na chroniczny brak czasu zrobiłem to dopiero teraz). EEPROM działa poprawnie (tj. zapisana liczba zostaje w EEPROMie). Przykładowo, wiem, że pierwszy bajt (często sporny bajt o adresie 0 z którym sporadycznie...
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...
Możesz rozwinąć to "systematyzować". Warto jedną(dwie) komórkę poświęcić by wskazać na której pozycji jest ostatni zapis lub ma być następny. Jeśli wystąpi zdarzenie to należy odczytać tą komórkę wykonać zapis np. 4 kolejnych komórek po czym zwiększyć i zapisać wskaźnik.
Można wyświetlać temperaturę w podmenu "wybór_Ds" ale trzeba zmienić cały program. Chyba nie jest tak trudno zapisać sobie cztery ID czujników i wiedzieć później który gdzie przypisać. Najlepiej osobno podłączać każdy czujnik i na naklejce na kablu przy czujniki zapisać jego ID. Wiedząc gdzie jakie jest ID czujnika można już mu w podmenu przypisać odpowiednią...
Niestety ale mam jeszcze problem z odczytem za pomocą funkcji eeprom_read_block. Zapisuje się prawdopodobnie prawidłowo ale gdy przy tej strukturze chcę ją odczytać poprzez funkcję eeprom_read_block(&zmienna_ee, &zmienna_ram,sizeof(STRUKTURA)) program zacina się.. Gdzie powinno być umieszczone odczytywanie danych z pamięci eeprom? Czy przed pętlą while...
Chce teraz tak zaprogramowac atmela by np jednym przyciskiem wybierałbym sobie dowolne wyjscie drugim np wejscie a trzecim akceptował i puszczał całość. Skorzystaj ze zmiennych które to zmieniać +/- będziesz przez przyciski, a jak naciśniesz trzeci klawisz to program zawartość tych zmiennych wyśle jako gotowe ciągi 0 1. Oczywiście bity które nie mają...
Często się zdarza ponieważ, że dane z początkowych ok. 100 adresów są błędnie zpisywane/odczytywane. Pierwsze słyszę :| O "kłopotach" z komórką 0 - coś mi sie o oczy obiło , ale że 100 :?: To w "małych" atmelkach , gdzie jest tylko 64 B eepromu , byłby on bezużuteczny :( Oprócz tego kod wygląda OK, jak w dokumentacji :-) No prawie ;) Dokumentacja Atmela...
Witam ja też wróciłem do wersji z 2004 - jest jak narazie najstabilniejsza, z tym że jak kompilujesz biblioteke eeprom.h pojawia się komunikat: The functions from <avr/eeprom.h> are not supported on this MCU. i zostaje bez funkcji do zapisu/odczytu EEPROMA. W sumie to już rozwiązałem ten problem - w notach do Atmeli są krótkie procedury zapisu...
http://obrazki.elektroda.pl/4553573800_1... Przy tworzeniu projektów z mikrokontrolerami, oprócz uniwersalnych płytek stykowych, często przydają się gotowe moduły testowe, które można szybko podłączyć. Można kupić takie w wielu sklepach, ale ich ceny są na ogół absurdalne, np. w Kamami sprzedają płytkę z ATmega128 za 109 zł! Poniżej...
Witam Na szynie I2C podłączoną mam kość PCF8583 oraz pamięć 24C64. Wykonuję zapis do pamięci a następnie odczyt. Jednak podczas zapisu następuje przekłamanie danych. Np zapisuję wartość 35 do pamięci a w rzeczywistości zapisana zostaje wartość 32 lub 33. Gdy odłączę od szyny I2C PCF8583 problem znika. W czym więc leży problem? Bardzo proszę o jakieś...
Witam! Od wczoraj walczę z wewnętrznym EEPROMem w atmedze128L. Ogólnie problematyczna część programu działa następująco: na żadanie użytkownika dokonywana jest zmiana parametrów w pamięci (adres: IP, maska, brama sieciowa). Plik definiujący zmienne w pamięci: static uint8_t EEMEMconfigmem_static_ipaddr_msb; static uint8_t EEMEM configmem_static_ipaddr_hi;...
Odczyt nie ma wpływu na żywotność EEPROM, zaś zapis - wg datasheet Write/Erase Cycles: 10,000 Flash/100,000 EEPROM
Wsadzi sobie w gnizdko z tyłu głowy i odczyta ;) Gdyby czas poświęcony wymyślaniu pierdół do ściągania poświęcił na naukę to zaoszczędził byś czas , pieniądze i zostało by ci troszkę czasu na zabawę w mikrokontrolery ;)
Witam! Próbuję poradzić sobie z zapisem i odczytem zmiennej z EEPROM'u. Gdy po zapisaniu do pamięci zmiennej resetuję procka przy użyciu programatora to jest ona prawidłowo odczytywana. Gdy natomiast odłączę zasilanie to niestety procek odczytuje mi inną wartość. Ta źle odczytana wartość równa jest '1' czyli takiej wartości jaką wpisuję do EEpromu w...
Znalazłem sobie takie cos w dokumentacji do AVR-ow w atmegach to jest w rozdziale o eepromie: void EEPROM_write(unsigned int uiAddress, unsigned char ucData) { /* Wait for completion of previous write */ while(EECR & (1<<0x00));// <<=== USTAWIENIA TU !!!!! EEWE)); /* Set up address and data registers */ EEAR = uiAddress; EEDR = ucData;...
Odczyt EEPROM trwa tyle co odczyt IO. Nie wnosi żadnych opóźnień. Zapis - jest zależny od MCU, dokłądne czasy znajdziesz w jego nocie - zwykle to 2-5 ms. Podczas zapisu procesor może wykonywać inne instrukcje, a nawet je wykonuje. Tylko, żeby z tego skorzystać należy dokonać zapisu z wykorzystaniem przerwań - po zaposaniu komórki wywoływane jest przerwanie...
Witam, chciałbym spytać Was o poprawność zmiany rozdzielczości czujnika temperatury DS18B20 na 9-bit. Zmieniam to w nastepujący sposób: Zacznę od ostatniego pytania: To nie są bity - raczej bajty, i sa to tylko TH i TL i są wpisane tylko do Scratchpad. To by wystarczyło dopóki nie wyłączysz/reset processora. Musiałoby to pozostac częścią programu....
Rezystory są już dane na płytce, zresztą zegar na PCF działa bez zarzutu ( no może trochę śpieszy, ale to kwestia kondensatora przy kwarcu ) sprawdziłem połączenia - nóżki 5 czyli SDA ( 24C02 i PCF8583 ) są podłączone do 23 nogi uC, czyli PC1-SDA. Podobnie z SCL. Teraz zrobiłem tak, że odczyt jest po włączeniu/resecie ( przed pętlą główna ), a zapis...
Bity bootlock i lock. Blokują one odczyt/zapis bootloadera, możliwość odczytania/zapisania flasha przez bootloader jak i możliwość odczytania/zapisania flasha przez programator. Wszystkie te bity możesz skasować wykonując kompletne kasowanie procesora (kasuje się wtedy też FLASH i EEPROM) Przy próbie odczytu takiego procesora dostaniesz słowa wypełnione...
Podłączając się do tematu. Jak najbardziej znane są możliwości zwiększania żywotności eeprom przedstawiane powyżej. Jednak biorąc pod uwagę milionową ilość kasowania eeproma ($FF) czy nie można w jednej komórce eeprom np 9 przechować adres aktualnej zapisanej wartości np 10. Po każdym zapisie w komórce 10 byłaby dokonana kontrolna procedura odczytu...
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...
witajcie!! Problem wyglada tak: mam 24c08 i zapakowalem do niego plik: FFFFFF070707070F0F1F7FFFFF00FFFFFF3F1F0F... 03030303C3C3C3C3C38303030383C3C3C3830303... 3C3C3C38303C3C3030303C3C303030303FFFF000... 00080C0FFFF00FFFFFF8000000000000000FFFFF... 070793F1F001F3F7070703F1F00007F7F6060600...
Skoro program utyka w jakimś miejscu to znaczy że czekasz w pollingu na stan, który się nie pojawia. Po pierwsze dodałbym time out, który przerwie pętlę oczekiwania zanim układ zostanie zresetowany przez watchdog. Zapis nie jest w pętli, struktura programu wygląda tak: Skoro na magistrali nie ma innego mastera to należałoby wysłać ponowny warunek startu....
Witam, Próbuję napisać program do wymiany danych z zewnętrznym EEPROMem 24LC16B. Zapis raczej działa - w podobny sposób udanie komunikuję się z przetwornikiem PCF8591. Natomiast podczas odczytu pamięć zwraca mi wysłany przeze mnie ctrl_byte (adres na magistrali) w trybie Current Address Read, lub 0xFF w trybie Random Read. Kod: [syntax=C]void eeprom_read(...
Witam, Od kilku dni nie mogę dojść dlaczego nie działa mi odczyt z AT24C08AN. Za każdym razem ATMega162 odczytuje mi wartość FF. Funkcje I2C_start2(), I2C_stop2(), I2C_write2(), I2C_read2() na pewno są poprawne bo bez problemu obsługuję nimi PCF8583. Podłączenie elektryczne na pewno OK. Próbowałem na 3 różnych sztukach eepromu AT24C08AN i zawsze to...
Zatrudnienie do tego EEPROMA nie przyspieszy ci tej operacji tylko opóźni.
Witam Postawiłem sobie za cel możliwość zapisania wartości pwm w zewnętrznej pamięci eeprom, w tym przypadku AT24C02 Procesor to Atmega 8, wewnętrzne taktowanie zegara 1MHz W załączeniu wkleiłem uproszczony program zapisu i odczytu wartości pwm. Za pomocą pwm steruję jasnością podświetlenia wyświetlacza LCD. Wiem, że można zapisywać te ustawienia w...
Znalazłem podobny temat https://www.elektroda.pl/rtvforum/topic8... ale za bardzo nie mogę zrozumieć odpowiedzi (późna godzina może). Jaki adres ukłądu w końcu powinienem użyć? Poniżej daję kod, który nie działa (funkcja zwraca false). Prośba o spojrzenie, co robię źle. Z pamięciami eeprom pierwszy raz się spotykam. Od razu pytanie odnośnie...
Dzięki za linki. Jednak nie wiem jak to ugry ś ź ć. Czy dodać nową zmienną i wtedy po zaniku napięcia i jego powrocie odczytać jej wartość i odpowiednio ustawić stan przekaźnika? czy jest może da się bezpośrednio zapisać stany danego pinu. Uaktualniam i proszę o opinie. Program sprawdzony i działa bez zarzutu. Jeśli ktoś widzi jakieś błędy proszę o...
czyli zgrywać dane na eeprom a następnie podłączając pod zasugerowany konwerter i2c na USB sczytywać na komputer?? tak ?? Także problem tkwi w napisaniu sekwencji zapisu na eeprom i zbudowanie konwertera do sczytywania na komputer?? Własnie tak do wyboru masz odczyt z RS232 lub USB Można też wysyłać dane na server bez stos TCP/IP, wymaga to nie co...
Tutaj masz wszystko... 'Program sterowania dwoma układami DS1820 dołączonymi 'do tej samej magistrali 1-Wire $regfile = "m8def.dat" 'informuje kompilator o pliku 'dyrektyw mikrokontrolera $crystal = 8000000 'informuje kompilator 'o częstotliwości oscylatora 'taktującego mikrokontroler Config Pinb.1 = Input 'linia PB1 jako wejściowa Config...
zapis odczyt eeprom eeprom zapis odczyt zapis eeprom atmega
kontrolka toyota carina instrukcje pralki indesit pobrać firmware gargoyle
rozrusznik staje speaker selector
Brak śruby regulacji gaźnika w pilarce spalinowej Typowe usterki pilarek elektrycznych Makita