1. Włącz BOD'a w fusebit'ach 2. Dla pewności omiń np 8 pierwszych komórek EEPROM'u i nic do nich nie zapisuj.
A jak jest zadeklarowana zmienna? Jako uint16_t?
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.
W rejestrze 0x00 jest bit CH - Clock Halt który trzeba wyzerować aby uruchomić zegar.
Jak wygląda jej deklaracja i odczyt?
czytaj dokładnie jak odczytam cały bajt i go wyświetlę to jest OK Lcd Bin(xyz) - znaczy w ten sposób sprawdziłem sobie czy dane mi się zapisują ale jak czytam pojedynczo to nie pobiera danych Jak zauważyłeś lub nie podzieliłem odczyt po 8 bit-ów Pierwsza ósemka jest odczytywana i rozumiana dla programu natomiast druga ósemka już nie - i tu mam właśnie...
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.
Spróbuj z Instrukcją CONFIG I2CDELAY
to może zainteresuj się jakimś uC z wbudowanym eepromem? np. atmega +fusbity blokujące odczyt eepromu przez programator
Można tak, można inaczej. Najlepiej poeksperymentować w symulatorze:)
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.
Masz przecież źródła tych funkcji w pliku eeprom.h.
Mam sobie taką o to tablicę w epromie: P.S. Wiem, że pisze się uŻytkownik, ale chcę wiedzieć czy prowadzący przeglądają kody programów w raporcie:P
Masz podłączony kwarc 8.0 - 16.0 MHz? I kondensatory 12-22pF przy kwarcu? Częstotliwość kwarcu ustawiona w środowisku programistycznym? R Dodano po 1 kwarc 20MHz Dla tego kwarcu masz źle ustawione fuse-bity. Swoją drogą po co taki szybki kwarc? R Dodano po 2 Brak zaznaczenia bitu EESAVE powoduje, że przy każdym programowaniu mikrokontrolera pamięć EEPROM...
masz konflikt adresow PCF tez ma adres 1010000 taki sam jak masz dla 24c1024
No oczywiscie. A możesz mi podpowiedzieć w jaki sposób ?
Masz podawane złe długości pól. Skoro odwołujesz się np. do pola okrążenia typu DANE_ZAWODNIKA to nie możesz robić sizeof(DANE_ZAWODNIKA) bo to nadpisze ci kolejne pola, powinno być sizeof ale pola okrążenia. Takich błędów masz więcej. Definicja: DANE_ZAWODNIKA numer_zawodnika_tab[sizeof(DANE_ZAWODNIK... też na oko jest bez sensu. Bo robisz tablicę...
[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.
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 ?
Jeszcze jedno pytanie. Otóż do układu FT232RL nie mam dołączone eproma jakie widziałem na paru schematach. Do czego on służy? Nie masz EEPROM'a ;) bo jest on wewnątrz scalaka..... To najnowsza wersja tego konwertera firmy FTDICHIP. A ty widziałeś schematy jego starszych braci, którzy poza EEPROM'em musieli mieć jeszcze sporo innych elementów(dodatków)...
. 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...
Za długie pętle lub za krótkie tablice zmiennych.
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...
wlacz datasheeta i poszukaj w nim slowka EESAVE 4\/3!!
Nie, odczyt zabezpieczonego procka zwraca kolejne wartości od 0 do 255 i tak w kóło. Nie wiem po co ci różne nakładki - avrdude najlepiej się obsługuje z linii poleceń, przynajmniej wiadomo o co chodzi, w dodatku można to zintegrować z jakimś sensownym IDE, dzięki czemu nie trzeba rozkodowywać fusebitów. Zobacz: http://mikrokontrolery.blogspot.com/2011...
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
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
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]
http://obrazki.elektroda.pl/9824916400_1... Witam, Korzystając z ostatnich wolnych dni przed studiami chciałbym zaprezentować moją ostatnią konstrukcję. Jest to mały przenośny barometr. Konstrukcja powstała na potrzeby osoby wrażliwej na zmiany ciśnienia oraz spełnia jej wymagania tzn. mały rozmiar( 20x40x9mm) oraz co się z tym wiąże...
W załączniku pliki EEPROM - eprom34.hex - na tym nie działało, pierwszy odczyt z niedziałającego urządzenia. Eprom33.hex to wsad z działającego urządzenia, który po wgraniu razem z FLASH-em ożywił flowmeter. Sam flash nie wystarczył... Więc ??? Rozumiem że do niedziałającego urządzenia najpierw wgrałeś sam FLASH zgrany z dobrego i urządzenie nie zadziałało?...
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
Witam, mam problem z długim czasem odczytu z wewnętrznego EEPROMu w ATmega 32. EEPROM trzyma obrazek, który wyświetlany jest na graficznym LCD i wyraźnie widać jak grafika pojawia się stopniowo w ciągu ok. sekundy. Sprawa wydaje się dosyć dziwna, bo w AT89S8252, który teoretycznie powinien być daleko w tyle za ATmeg'ą, wszystko trwało ulamek sekundy...
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...
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,...
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....
Chciałem takie zdjęcie wysłać do wyświetlacza. Bo tak to trzeba podać adres potem stronę potem kolejny adres potem adres odczytu i dopiero odczytać, i to troch czasu zajmuje.
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ą...
hmm ,mi wpadł inny pomysł a można by go zrobić na M8 czy M16 ,a mianowicie połączyć 4051 w kaskady dzieki czemu wystarczy kilka pinów uC do tylu czujników ,w tygodniu przetestuje pomysł.... Ps .nic nie stoi na przeszkodzie aby dopisać linie programu (np. jeden pin uC ,sprawdzany przy starcie programu ) która będzie programowała ID czujników i zapisywała...
... 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.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...
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...
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...
warning: passing argument 3 of 'odczyt_stronicowy' from incompatible pointer type dla instrukcji odczyt_stronicowy(0, 6, MAC); Musisz wywołać funkcję w ten sposób: odczyt_stronicowy(0, 6, &(MAC[0])); Jeśli chodzi o : warning: assignment makes pointer from integer without a cast dla linijek odczyt[i]=READ_TWI(1);.....
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. 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...
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 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...
C_rtd_i = eeprom_read_word(&C_rtd[i]); 4\/3!!
Dzięki za szybką odpowiedź. Mam pytanie czy byłaby możliwość pobierania danych z częstotliwością ok. 170kHz (chodzi mi o to ile cykli potrzeba na odczyt) o czy ATmega z kwarcem 16MHz by sobie z tym poradziła?
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]
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...
Tutaj masz przyklad w ktorym po kazdorazowym wcisnieciu przycisku zmienna zwieksza sie o 1: Config Pinb.3 = Input S1 Alias Pinb.3 Set Portb.3 If S1 = 0 Then Waitms 25 If S1 = 0 Then 'np. Incr twoja_zmienna End If End If A tutaj wcisniecie przycisku i jego przytrzymanie powoduje zmniejszanie sie zmiennej o 1 co 200 ms: Config Pinb.3 = Input If S1 = 0...
Tak, wszystko się zgadza. Jeśli łączyłbyś potem np. 2 kości to wtedy w jednej dajesz oba piny do masy, a w drugiej jeden do VCC i masz 2 pamięci pod 2 różnymi adresami. Można w ten sposób połączyć do 4 pamięci typu at24c04
[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.
W każdym przypadku nie można odczytać sygnatury urządzenia. A cokolwiek da się poprawnie odczytać? Jak zwykle sprawdź połączenia z programatorem - zwykle tu jest jakiś głupi błąd. Druga sprawa to czy na pinach do programowania nie ma jakiś obwodów elektronicznych, które mogą zakłócić pracę programatora? Coś w stylu kondensatora, małego rezystora, LEDa...
Ja bym obrał inny nieco kierunek. UID pobrałbym z danych kalibracyjnych, bo te dane jesteś wstanie odczytać, ale nie jesteś w stanie ich zmodyfikować. Na ich podstawie wyliczyłbym skrót MD5/SHA1/SHA256, co kto woli i użył bootloadera własnej produkcji do wgrania firmware. Bootloader by rozszyfrował w locie mając info w danych kalibracyjnych, a firmware...
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
... A jak się sprawa przedstawia kiedy sam TWI wpisze tam 1, czy przerwanie nie powinno się wtedy wyzwolić?... Powinno , ale pod warunkiem że : flaga I w SREG=1 i flaga TWIE w TWCR=1.Przed opuszczeniem procedury przerwania , należy wyzerować(wpisać 1) do flagi TWINT w TWCR , by uniknąć kolejnego przerwania. Piotrek
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...
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.
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...
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 ...
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...
Zły pomysł... Tak można czytać z eeprom a wpętli... nie, NIEMOŻNA pisać do eeproma w pętli. (skońoczna liczba zapisów). Przy starcie systemu odczytaj z eeproma do jakiejś zmiennej ustawienia (zmiennych) i porównuj następnie z nimi... Łukasz. P.S. Odczyt jest dużo szybszy niż 1sekunda... DUŻO SZYBSZY. Łukasz.
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...
A próbowałeś inne oprócz M16 i M32? Było tak samo? A jeśli odznaczysz EESAVE i wykonasz chip erase, tak, żeby cały EEPROM miał 0xFF i zaprogramujesz to też wyskakuje błąd? W jaki sposób jest zasilany procesor i taktowany? Te błędy, które wyskakują to zawsze błędy typu odczyt 0, w miejsce 1, czy zdarza się także odczyt 1 w miejsce zera? To pierwsze wskazywałoby...
Witam, używam do programowania atmegi 328p programu avr dude + avr dude gui, pytanie, jaki wgrać lock bit żeby był niemożliwy odczyt flash? (i najlepiej eeprom też), pozdrawiam
W funkcji eeprom_read po drugim I2C_start musisz wysłać jeszcze raz adres układu, tym razem adres do odczytu z wyzerowanym najmłodszym bitem. Marek
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...
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:...
Tak naprawdę tylko zmiana bitu z 1 na 0 jest objęta limitem, czyli zatkanie komórki. Zmiana z 0 na 1 nie obniża żywotności. W szczególnych przypadkach danych następujące kolejne 8 operacji ustawienia 1 na różnych bitach nie ma wpływu na żywotność EEPROM'a jeżeli się je oczywiście mądrze zrobi.
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);...
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,...
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...
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?
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,...
To może napisz na czym ten problem polega i pokaż minimalny przykład pokazujący problem? Szklane kule są ostatnio niemodne.
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...
Jeśli ta funkcja eeprom_write_block jest z atmelowej biblioteki to nie musisz na nic czekać.
(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...
W helpie jest napisane, że domyślnie Timer0, opcjonalnie Timer2. Czyli zostaje odbiór RC5 z dodatkowej płytki. A już myślałem, że Atmega644 jest jakaś trudniejsza w opanowaniu - są z nią większe problemy. Przyznam, że jeśli przy tej samej konfiguracji sprzętowej można uzyskać ten sam efekt a nawet "wyciągnąć" więcej to C staje się co raz bardziej kuszące....
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()"
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....
ROX jeżeli procesor nie jest zabezpieczony przed odczytem, -a zakładam, że jest skoro to produkt komercyjny- to jak mawiają po francusku -marneszanse ;-) Jeżeli nie jest zabezpieczony przed odczytem to każdy programator szeregowy czy równoległy rozwiąże Twój problem. Szukaj informacji na temat programatorów ISP jest ich kilka na forum.
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ę...
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...
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...
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 )
Tak jest podłączony. Wyprowadzenie WP do GND. Chyba coś jest nie tak z tymi procedurami obsługi I2C bo jak zmienię adres fizyczny AT24C08 (PIN A2 do Vcc) to po zmianie adresu urządzenia na 0xA8 eeprom nie odpowiada.. Te procedury pochodzą z biblioteki RKlibAVR z strony http://avr.elektroda.eu/index.php?q=node... Fakt, że eeprom odpowiada bitem ACK to...
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,...
I wszystko się teraz zgadza. Napisałem w swoim programie tak, jak jest w poście, co linka teraz podałeś. Program skompilował się bez błędów, tak więc: W pliku "setup.h" mam deklarację z extern, to samo w pozostałych plikach, gdzie chcę tej struktury użyć. Oczywiście w tych pozostałych plikach musi być zaincludowany plik "setup.h". A dopiero w pliku...
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...
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...
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]
Pisałem że nie mam portu RS232 na kompie tylko mam przejściówkę USB RS232.Oczywiście sterownik do przejściówki jest zainstalowany, jak wyczytałem to jest powodem że nie mogę nic odczytać Dodano po 2 Witam. Układ 24C02 jest pamięcią eeprom, to nie jest żadna Atmega. Przepraszam tutaj się pomyliłem miało być Atmel.
Dzięki za odpowiedzi. Doprecyzuję jednak trochę kwestię. 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...
W Atmega8 deklarując zmienną w EEPROM kompilator zapisał ją według LITTLE_ENDIAN. Zaraz wypróbuję te podpowiedzi.
odczyt eeprom atmega odczyt pamięci eeprom atmega odczyt pamięć eeprom atmega
renault słabo kręci lodówka bosch rozszczelnienie cordoba pompa paliwa
Funkcje pinów EGR w Citroen C4 Picasso 1.6 HDI Odbiornik podczerwieni w Panasonic SA-AK44