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.
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.
A jak jest zadeklarowana zmienna? Jako uint16_t?
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
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 ?
Witam serdecznie. Mam mały problem z zapisem/odczytem eepromu. Przykładowy kod: temp_dol_k1 = eeprom_read_byte(1); ............. ............. ............. eeprom_write_byte(1,temp_dol_k1)... Niby wszystko ok ale kompilator mowie że: ../cos.c:2054: warning: passing argument 1 of '__eerd_byte_m32' makes pointer from integer...
[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.
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?
..A czy można własne znaki wrzucić na EEPROM ? A co ja napisałem parę postów wcześniej :?: Masz tu przykład(właściwie gotowca) do przetestowania: '$regfile = '$crystal = 'Config Lcd Dim I As Byte _temp1 = &H40 Gosub _lcd_control For I = 1 To 64 Readeeprom _temp1 , I Gosub _write_lcd Next Home Lcd Chr(0) ; Chr(1) ; Chr(2) ; Chr(3)...
Za długie pętle lub za krótkie tablice zmiennych.
Możesz: -odczytać osobno programatorem eeprom i sprawdzić czy program coś zapisuje, -wpisać ręcznie do pamięci eeprom i sprawdzić czy będzie reakcja, -podać adres do funkcji zapisu i odczytu na sztywno w ramach testu.
(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....
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]
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
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...
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...
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
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....
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...
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,...
... 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...
http://obrazki.elektroda.net/43_12786005... Atmega fusebit doctor, jak sama nazwa mówi, to urządzenie do naprawienia nieumiejętnie przestawionych fusebitów w mikrokontrolerach z rodziny AVR. Największymi problemami jest ustawienie nieprawidłowego źródła zegarowego (fusebity CKSEL), wyłączenie programowania SPI (fusebit SPIEN), lub ustawienie pinu...
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
Pytanie Autora dotyczyło zapisu/odczytu pozycji do/z eepromu..... Funkcje przycisków i algorytm działania urządzenia nie były poruszane w tym temacie, bo prawdopodobnie Autor wie jak to rozwiązać, żeby urządzenie było funkcjonalne. Dlatego też moja odpowiedź dotyczyła wyłącznie zagadnień związanych z tematem zapytania.
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()"
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]
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...
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...
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...
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 ...
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.
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.
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...
[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.
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.
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 ) .
Witam. Zanim postanowiłem napisać nowy temat przeglądałem różne tematy z podobnymi do mojego problemami i nic z tego nie rozumiem. Do rzeczy- zbudowałem sterownik do zgrzewarki oparty na uC Atmega8A https://obrazki.elektroda.pl/9250457200_... Problem polega na tym że uC nie pamięta zapisanych ustawień (czas preimpulsu, czas przerwy,...
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...
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...
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...
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...
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...
Za każdym razem, kiedy wgrywam program na procesor za pierwszym odczytem pojawiają się właśnie śmieci, a nie dane, które były wcześniej zapisane, więc chyba jednak w momencie programowania procesora właśnie "wpalam" eeprom. Wiem tylko, że można uniemożliwić zapisywanie eepromu w fusebitach. Niezupełnie, w fusebitach można tylko ustawić, aby nie kasował...
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 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,...
Co do: Procesor32 napisał: Zapisujesz nazwy pod ten sam adres w EEprom Writeeeprom Q , 13 I odczytujesz też z tego samego adresu. Jeśli przeczytałbyś dokładnie post I po sprawie.Nie musisz pamiętać adresu pod który masz zapisywać i z pod którego odczytywać. Prosto i bez problemu. Jest to prosta metoda zapisu do EEProm, ale ma zasadniczą wadę. Użytkownik...
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 )
A nie jest tak że do tego procesora jest potrzebna inna biblioteka do eeproma? Bo coś miałem z ATmega169
Witam, Nie miałem okazji przedtem pobawić się EEPromem zawartym w Atmega16, aż do dzisiaj. Pogrzebałem po necie i napisałem taki oto programik: [syntax=c] #include <avr/eeprom.h> #define ASRES1 1 #define ADRES2 5 #define ADRES3 10 uint8_t zmienna1, zmienna2, zmienna3; int main(void) { zmienna1= eeprom_read_byte ((uint8_t*)ADRES1); //czytanie z...
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...
Witam Mam problem z SPI w Atmedze32. Staram się skomunikować ją z pamięcią 25LC128. SPI inicjalizuję następujaco void InicjalizacjaSPI(void) { // Wyjścia SS, SCK, oraz MOSI są wyjściami DDRB = _BV(SPI_SS) | _BV(SPI_MOSI) | _BV(SPI_SCK); // Ustawiamy SS oraz SCK w stan wysoki PORTB = _BV(SPI_SS) | _BV(SPI_SCK);...
Dzieki za odpowiedz czyli powinno byc jakos tak ? twistart(); twiwrite(0b10100000); twiwrite(a[0]); twistop(); _delay_ms(10); Dokładnie tak. Co do ACK rozumiem ze jesto jakiego rodzaju sygnal ktory daje nam komunikacje jednak nie mam pojecia jak go uzywac ;C Masz beznadziejnie napisane funkcje obsługi...
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?
I2C wykorzystuje sprzętowy z procka. Z objawów jakie mam wynika, że jeżeli najstarszy bit w liczbie jest 1 (czyli od 0x80 włącznie) to liczba nie jest zapisywana. Liczby z zakresu 0x00 do 0x7F są zapisywane i odczytywanie poprawnie, ale większe nie są zapisywane. Więc nie gubię ostatniego bitu, a problemem jest pierwszy bit. Jednak dziękuje za zainteresowanie.
To może napisz na czym ten problem polega i pokaż minimalny przykład pokazujący problem? Szklane kule są ostatnio niemodne.
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...
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...
Witam, zakładam że rzeczywiście zapisujesz coś do EEPROMa. Temat był już poruszany, ponieważ ATmega przy wyłączaniu/załączaniu zasilania ( w szczególności jeśli napięcie wolno narasta/opada - wolno dla kontrolera!! oczywiście ) jesli nie są spełnione określone warunki potrafi ( i robi to często) zapisywać przypadkowe dane do pamięci EEPROM. Poświęcony...
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, 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...
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,...
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...
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...
no mozna... o ile funkcje dzialaja ;) robie tak : while(eeprom_is_ready())... // czy Ty aby na pewno rozumiesz co robi ta linia ??? eeprom_write_byte(5,0x41);// czy 1-szy parametr jest na pewno odpowiedniego typu :?: :( kompiluje w avr-dude Chyba ładujesz program do flash-a :?: Czy kompilator nie "wywala" ostrzeżeń...
Aktualnie na LCD widoczny jest zalążek softu do drugiej wersji - informacja o stanie ciśnienia. Tymczasowo jest ona wpisana na stałe i nie powinna być brana pod uwagę przy odczytywaniu wartości ciśnienia. Funkcja ta wymaga dokładnego zastanowienia się, gdyż w przypadku urządzenia przenośnego należy zwrócić uwagę na znaczną zmianę ciśnienia wraz z wysokością,...
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ą...
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...
Dziękuje za odpowiedzi. Muszę przyznać że zainteresował mnie temat kart SD/MMC. Trochę już sobie poczytałem i mam pytania: Wiem że nie da się zapisać pojedynczego bajtu tylko paczkę 512. W moim przypadku będę tylko odczytywał dane więc czy musze odczytać całe 512 czy mogę tylko jeden wybrany z paczki. Jak z czasem odczytu? Nie będzie to wolno działać...
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ś...
(at)paluszasty Właśnie sprawdzałem jak wygląda kwestia dostępu do FLASH i jest tak jak pisałem. Definiujesz stałą z const i automatycznie ląduje ona we FLASH, a z programu masz do niej dostęp bez żadnych specjalnych udziwnień. Czyli definicja: const char tmpchar1 Chyba że z jakiegoś powodu chcemy umieścić zmienne zadeklarowane jako const w RAMie, jak...
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 ;)
Jednak moja wersja sejfu nie posiada motywu z pastylką Model Magna 800 otwiera się za pomocą klawiatury pinpad, modele serii Titan są na kartę, Quantor na pinezkę. Pastylkę iButton, czyli ten ich Masterkey, przykłada się do maszynki EOT 300 lub BiMaxa, a maszynkę łączy kablem z sejfem (gniazdo na płytce pinpada). https://obrazki.elektroda.pl/9335554200_...
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....
http://obrazki.elektroda.net/4_124743447... Witam! Chcialem sie podzielic moja nowa, czysto programowa konstrukcja. Jest to bootloader dla mikrokontrolerow AVR, tym odrozniajacy sie od wiekszosci tego typu programow (chocby ostatnio zaprezentowanego przez kolege mirekk36 AVR Boot Loadera), ze nie potrzebuje dodatkowego programu na PC i przyjmuje...
To o czym piszesz to jest implementacja konkretnego algorytmu którego się trzymasz. Najwidoczniej nie najlepszego, skoro 16MHz nie wystarcza żeby odpowiedzieć na prosty impuls. Jak wrócę do projektu (może jeszcze jutro) to pokażę kluczowy fragment programu w C, rozwinięcie assemblerowe i oscylogramy. Dodano po 9 No i przy okazji jestem prawie pewny,...
Temat rozwiązany.Jak się okazało błąd był bardzo prosty.W listingu który odczytuje wszystkie parametry po kolei pomiędzy dzientygodnia a ACK nie było przecinka.Co ciekawe Bascom nie zgłaszał błędu.Wpadłem na to przy nauce zapisu i odczytu pamięci EEPROM która jest na tym samym module co zegar.Reasumując przy odczycie po I2C pomiędzy parametrem odczytywanym...
A może skorzystasz z biblioteki eeprom.h? Jest tam procedura eeprom_write_byte (uint8_t *addr, uint8_t val); - do zapisu [nie rozumiem tylko dlaczego adres jest 8-bitowy - przecież np. ATmega8 ma 512 bajtów EEPROMU...] oraz uint8_t eeprom_read_byte (const uint8_t *addr); - do odczytu bajtu. (Jest też fajna procedurka eeprom_read_word(..) / eeprom_write_word(..)...
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...
Gdybym opisał program wszystko stałoby się oczywiste :D Użycie IF ELSE bez END IF zawsze warte jest omówienia bo potem nikt nie może się doliczyć END IF :D Chodzi o to że jeśli tylko jedna instrukcja jest od jakiegoś warunku zależna to można ją zapisać w jednej linii. Jeśli z powodu jakiegoś warunku musza juz być zmienione dwie zmienne lub wykonać się...
W Atmega8 deklarując zmienną w EEPROM kompilator zapisał ją według LITTLE_ENDIAN. Zaraz wypróbuję te podpowiedzi.
Dla Krzysia 74. Twój cytat dot:wysłania dummy Ponieważ okazało się że, SPI sprzętowe, nie bardzo sobie poradzi z rozmową z w/w modułem. Zrobię SPI programowe (pewnie w niedziele). A SPI sprzętowym tak: Moduły mają zapisane podstawowe rejestry. Aby ich nie stracić zapisałem je w EEPROM-ie. Jak ? Po prostu------ NSS-niskie * AdresRead==0x01 * odczyt...
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...
czy na dole programu arduino masz taką informację ? https://obrazki.elektroda.pl/6368333500_... nucleo-costam on COM z numerkiem. zrzuty ekranu w Windows robi się kombinacją klawiszy WIN + Shitt + S wówczas możesz dodać obrazek poprzez https://obrazki.elektroda.pl/3902446900_... Ctr+V Dodano po 2 ps. tak sie zapisuje...
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...
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);...
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...
Przesyłam garść konstruktywnej krytyki. Bisz stworzona aplikacja przy kompilacji programu tłumaczy go na język IL (czyli coś w rodzaju assemblera). Instrukcje w tej postaci trafiają do pamięci flash ATmegi. Pamięć flash podzieliłem na dwie sekcje (po 64kB). Jedną zajmuje oczywiście firmware, a do drugiej zapisywane są instrukcje programu. Firmware posiada...
http://obrazki.elektroda.pl/8472920100_1... Witam! Jakiś czas temu zacząłem bawić się procesorami AVR. Jako programatora wykorzystywałem moduł FT232. Po jakimś czasie gdy zacząłem ów moduł wykorzystywać również do transmisji danych między procesorem a komputerem (UART) pomyślałem, że aby zmniejszyć kabelkologię (FT232 podłączony jako...
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
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....
zapis odczyt eeprom eeprom zapis odczyt zapis eeprom atmega
brother pasek wydruk magnetofon kasetowy schematy regulacja tonów niskich wysokich
Sony DCR-SR55 – wymiana baterii CR2025 w pilocie RMT-835 krok po kroku Romet Ogar 900 110 4T – lokalizacja wlewu oleju do skrzyni biegów, bagnet, specyfikacja