W wyniku kompilacji Twojego programu powinny powstać dwa obrazy pamięci. Jeden dla pamięci flash mikrokontrolera - zawiera on kod programu. Drugi dla pamięci eeprom mikrokontrolera - zawiera zawartość pamięci eeprom - w tym wypadku jest to liczba 3. Programowanie pamięci eeprom to po prostu wgranie tego wsadu. Z jakiego środowiska korzystasz? Np. w...
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.
Zamiast int16_t użyj uint16_t (dla tablicy w eepromie, rzutowanie też jest zbędne)
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...
Spróbuj ustawić BOD, też tak miałem gdy go nie używałem.
Ten powinien działać musisz wszystko wykonywać w odpowiedniej kolejności. A wspak to on może też czytać sensu to nie będzie miało (2 znacznie nawet objaśnienie :D )musisz zmienić na adres-1, kierunek musi być dodawany zakres adresu dla zmiany kierunku zamienione miejscami i adres musi się zaczynać na 80. A Pętla for next jest tylko po to aby wykonać...
odczyt nie niszczy eeproma
Jak wyłączysz procek w trakcie zapisu eepromu to nie dziwota że zapisze go źle... Czy przypadkiem nie robisz tak że naciskasz menu i zaraz go wyłączasz?
... 2. Może głupio zabrzmi. Jak w PonyProgu zapisać eeprom do atmegi? Próbowałem, ale to nic nie daję. Niby zapisuje, a przy odczycie czysta kartka :/. ... Jeśli masz M8 , to Ponyprog "pokazuje/umieszcza" dane z eepromu od adresu 0x2000 i dane są w innym kolorze niż dane z flash-a. Odczytaj eeprom , "przewiń" okienko do 0x2000 i tam zobaczysz dane...
Witam! problem jest tego typu, że ten program nie działa $regfile "m8def.dat" $crystal = 1000000 $eeprom Data 60 , 50 , 40 , 30 , 29 , 28 , 27 , 26 , Data 25 , 24 , 23 , 22 , 21 , 20 , 19 , 18 , Data 17 , 16 , 15 , 14 , 13 , 12 , 11 , 10 , Data 9 , 8 , 7 , 6 , 5 , 4 , 3 , 2 , 1 , 0 Dim Volum As Byte Dim List As Byte Config Scl = Portc.5 Config...
Witam. Przecież w wylistowanym programie masz zapis i odczyt pamięci EEprom. teedd
Witam szukałem ,próbowałem i nie mogę dojść jaka powinna być prawidłowa metoda. Otóż tak mam do wyświetlenia grafikę którą umieszczam poleceniem $eeprom w wewnętrznej pamięci. problem mam z tym ze nie wiem jak ja odczytać. readeeprom wymaga podania adresu z którego odczytuje z danej grafiki readeeprom adres , grafika ale jak zrobić żeby mi wczytało...
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(..)...
Dobra, juz sobie poradziłem :) teraz działa :)
Witam, Zapis do pamięci jest zbyt wolny. Dla ATMEGA8 zapis jednego bajtu do EEPROMu trwa ok. 8.5ms Natomiast odbiór jednego znaku (10bitów) przy prędkości 9600bodów trwa 1.04ms. Tak więc w Twoim przypadku zanim zapiszesz odebrany bajt do EEPROMu to zdąży przyjść już kilka następnych których nie zdążysz obsłużyć. Pozdrawiam JarekC
Witam cię miałem podobny problem. programuje w bascomie ale postaram się podpowiedzieć ci w czym tkwi problem przy zapisie pamięci. Jeżeli umiesz odczytać zawartość pamięci to w zapisie jest tak że po rozkazie cch ,55h czyli kopiujesz do notesu podajesz ta1 ta2 e/s wtedy dajesz czekaj 5ms potem tablice do w w pisania do eepromu powinno zadziałać od...
Witam ! Arduino IDE, zapis /odczyt do wewnętrznego EEPROMU. Jak spowodować aby PIERWSZY odczyt np. komórki "0" nie wyświetlał 255 ? ATmega8 [syntax=arduino] #include <LiquidCrystal.h> #include <EEPROM.h> LiquidCrystal lcd(19, 18, 17, 16, 15, 14); float temp = 0.50; void setup() { EEPROM.get(0,temp); } void loop() { lcd.clear(); lcd.setCursor(0,...
2. Straszna rzecz piszesz 11111olo. Do Vref nalezy podpiac, do avcc nalezy podpiac odfiltrowane napiecie zasilania. 1. No cos musisz sobie wymyslec ;) Zapis i odczyt z eepromu jest opisany w dokumentacji gcc, a jak bedziesz zapisywac to juz twoj wybor ;)
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++;}...
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)...
Ja bym skompilował program, otworzył wygenerowany plik .BIN, wyciął z niego fonta (czyli wywalił kilkadziesiąt pierwszych bajtów) i tym co zostanie zaprogramował EEPROMa. Jedyny ból jest taki, że większość kompilatorów nie generuje pliku .BIN, lecz HEX. Ty nie będziesz miał problemu, bo używam BASCOMa, a on chyba jako jedyny generuje plik BIN. Wycinanie...
mam nadzieję tylko, że początkujący kolega henryxxl zdaje sobie sprawę, że użycie zewnętrznej pamięci EEPROM - nie oznacza, że będzie można w niej zapisywać kodu programu - jedynie tylko jakieś tam dane do odczytu/zapisu (myślę, że to jest oczywiste - tak tylko się upewniam) .... natomiast z ciekawości - do czego ci aż tyle pamięci EEPROM - skoro jest...
[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. Ostatnio walczę z odczytem danych z zewnętrznej pamięci eeprom. Symuluje sobie program, dodam, że program napisany w bascomie działa poprawnie, ale w C to już nie chce. Pamięć jaką symuluję to 24AA64, czyli jest ona zgodna z atmelowską. Próbowałem już na prawdę różnych rzeczy dawałem ACK i bez ACK. Kombinowałem z opóźnieniami, ale nic. Zegar...
Ściągnij najnowszego bascoma z MSC Electronics bo starsze wersje czasami się dziwnie zachowują. Raz miałem taką w której wydanie polecenia Enable Interrupts generowało błąd :)
. 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...
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ą...
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...
(at)itadek Zabezpieczenie przed odczytem nie uniemożliwia odczytu, lecz przy odczycie zwracane są kolejne wartości 0x00-0xff. Także jeśli masz błąd przy odczycie (napisz jaki) to związane jest to z połączeniami lub innym problemem. Dla nowego procesora po prostu wgrywasz wsad i tyle.
To co pisze hotdog oczywiście jest słuszne. Ale przypuszczam, że problem jest bardziej złożony. Stare AVRy, do których zalicza się ATMega8 miały problem z komórką EEPROM o adresie 0, najlepiej jej nie używać. Druga rzecz - obowiązkowo włącz BOD - zapis przy niepewnym zasilaniu spowoduje bzdury w pamięci. Musisz też zagwarantować, że na czas operacji...
Witam Chciałem poszerzyć pole swojego działania w ATMEGA8 o zapis i odczyt danych z pamięci wewnętrznej uC EEPROM. Otóż znalazłem na 20 i 21 str. manuala ATMEGA8 funkcje w C zapisu i odczytu danych z EEPROM uC. Oto one: Zapis do EEPROM: void EEPROM_write(unsigned int uiAddress, unsigned char ucData) { /* Wait for completion of previous...
W momencie zapisu (konkretniej w jednym jego kroku) trzeba wyłączyć przerwania, bo pamięć EEPROM wymaga ściśle określonej liczby cykli. Jest to opisane w datasheecie np. ATmega8. Nie wiem czy funkcje w Bascomie to realizują, ale można sobie napisać je samemu i to bez stosowania wstawek assemblerowych, Bascom umożliwia przecież operacje na rejestrach...
Jak to zrobić i co mi to da, skoro flash i eeprom będzie w postaci binarnej ?
Przecież wszystko opisane w datasheecie. Przykładowe podłączenie: 1,3,7 do masy, 2 nie podłączone, adres do zapisu 0b10100xx0 (do odczytu 0b10100xx1), xx - najstarsze bity adresu komórki.
sporo z nas zaczynało od tego ;-) poniżej parę moich (mało odkrywczych) rozwiązań: - zegar - temp wewn. zewn i piec (dodatkowe czujniki nic nie kosztują - lub niewiele) - wilgotność - zmiana jasności podświetlenia (w nocy to spora żarówka i nie da się na nią patrzeć po przebudzeniu) - trend temperatury (rośnie/maleje) - oczywiście progi alarmowe na...
a wiec tak. jeśli dalej nie działa to mam jeszcze 2 pomysły. 1. zmniejszyć rezystory podciagające do 4,7Kohma 2.gdzieś czytałem że zapis w rejestrze TWDR jest możliwy tylko gdy bit TWINT w rejesrze TWCR jest zerem. gdy chcemy cos wpisać do TWDR to najpierw musimy go ręcznie wyzerować (bit TWINT). niech kolega spróbuje to uwzględnić. ja w moim programie...
Witam. Szukam jakiegoś opisu dotyczącego zapis i odczyt do eepromu w atmega8 napisanego w języku C. Jestem początkujący w programowaniu uC dlatego jeżeli jest to możliwe to żeby ta metoda opisana była w stylu jak na tej stronie: [url=http://www.kursc.dioda.com.pl/]http... Mam jeszcze pytanie czy jest możliwość zaprogramowania...
Pamięć 24C daje sięprogramowac bez problemu w ukłądzie, tylko pamiętaj że lutując ustawiasz jej adres {sprawdź w nocie katalogowej nóżki A0, A1 , A2.!} Co do gadania do mikroprocka daj sobie na razie spokój z wysyłaniem znaków . Poszukaj w domu pilota z kodem RC5 najlepiej jakiegoś Philipsa lub LG. I napisz program, który po naciśnięciu wybranego klawisza...
Zapisuj sobie to do eeproma wtedy zapamiętasz na stałe. Jak wykonać? Hmm za pewne wykorzystując jakiś warunek :) Aha, czyli mam sobie przyswoić wiedze na temat zapisu/odczytu z eeprom. Tego mi brakowało :) Dzięki za odpowiedź.
C_rtd_i = eeprom_read_word(&C_rtd[i]); 4\/3!!
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()"
a co chcial bys zeby bylo w tym pliku epp? teraz go nie ma bo nic nie wpisujesz do pamieci eeprom. Jak zrobisz odczyt i zapis to powinien sie pojawic Wiem ze twoj kod dzialal ale bylo duzo bez sensu komend.
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]
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 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
Wrzucam działający kod może się komuś przydać bo ja sie oszukałem i o kombinowałem jak głupi, jest dużo przykładów z błędami w necie Deklaracja typedef struct { uint8_t h; uint8_t m; uint8_t s; } czas; czas ee EEMEM; czas ram; zapis eeprom_busy_wait(); eeprom_write_block(&ram, &ee, sizeof(ram)); odczyt eeprom_busy_wait();...
Rozwiazań jest kilka np.: Możesz użyć porównania ID Możesz zapisać ID do eeprom. Możesz sprawdzać obecność czujnika przed poleceniem odczytu temperatury. itd.
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.
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 ...
Nie do końca wiem o co Ci chodzi , hm mógłbyś jakiś przykład dać? Myślałem jeszcze o użyciu pamięci EEPRom tylko pewnie na długo by nie wystarczyła zapis/odczyt przy codziennym użytkowaniu
Jeśli chodzi o niedostatek pamięci FLASH - to może Atmega168 - 16k FLASH, 1k SRAM, 512B EEPROM. Jest dostępna w "wąskim" DIP28, np. w TME.
"- a nie mówiłem :), pulling to pulling". czytaj dokładniej bo o tym na samym początku mówiłem i ja i inni i sam Osamu Tamura - tak więc z tego typu twoich wypowiedzi wynika tylko to co w skrócie zamieściłem w kilku linijkach poniżej: ... a nie mówiłem, że mówiłeś iż mówiłem o tym, że mówiłeś - to ty nie wiedziałeś że mówiłem o tym, że mówiłem ...................
Może źle się wyraziłem raczej to było założenie. Ale po wyniku odczytu z eeprom wygląda to tak że kasuje bity od 0 do 100 dochodzi do 255 i kasuje odnowa. wiec problem siedzi w zmiennych tylko trzeba to terazznaleść.
Ręce to opadają i masz rację ;) Masz błąd w definicji zmiennej do której wpisujesz ID czujników to nie jest jeden bajt tylko tablica 8x8bitów czyli 8 bajtów. Adresujesz nie istniejące czujniki bo ich adresy sa niepoprawne, wysyła procek ciagle ten sam bajt. Dim Adres1 As Byte 'adres pierwszego Dim Adres2 As Byte 'adres drugiego Dim Adres3 As Byte 'adres...
Możesz wyjaśnić o co ci tutaj chodzi? Mój projekt ma na celu uczenie się AVR-ów i podlega ciągłym zmianom wraz z poszerzającą się codziennie moją wiedzą. Postawiłem sobie kilka celów, a jednym z nich jest próba oszczędzania energii w każdym możliwym miejscu i pisaniu kodu tak aby móc go wykorzystać w przyszłości na innych (np. znacznie szybszych procesorach...
Po pierwsze to zajrzyj do pdf'a odbiornika IR, bo na Twoim schemacie brakuje konda i rezystora przy podłączeniu TSOP'a. http://pdf1.alldatasheet.com/datasheet-p... Ma być w programie: Wygaszacz (godzina + temperatura), - Czasomierz najprościej na programowym RTC: str. 244 w książce Wiązni, zaś temperatura - str. 293. Wszystko...
pmw -> równie dobrze możesz tego HEXa wgrać programem mkAvrCalculator, wtedy unikniesz jakiejś znowu pomyłki przy wpisywaniu z linii komend w konsoli. Wystarczy wejść w jego zakładkę "Programator" i tam masz wszystko do zapisu do pamięci FLASH albo EEPROM czy Fusebitów i Lockbitów albo do odczytu, wg życzenia ;)
Odczytywałeś programatorem zawartość EEPROM? Zacząłbym właśnie od sprawdzenia, czy dane rzeczywiście tam są.
Witam! bardzo serdecznie. Chciałem zrealizować w oparciu o mikrokontroler ATmega8 odtwarzacz dźwięku. Jest to tylko układ realizowany w celach edukacyjnych, więc chciałem dane zapisać najpierw w pamięci EEPROM (ATmega8 ma 512b). Ma być to jeden krótki dźwięk odtwarzany po włączeniu mikrokontrolera. Dźwięki chcę odtwarzać za pomocą głośnika przez PWM....
Zwiększ adres po zapisie do eeprom, to będziesz miał więcej danych do analizy. Dobry pomysł, spróbuję. Dałem autorowi propozycję rozwiązania. Kod, który wkleiłem działa z niewielkimi modyfikacjami (inne dekodowanie bajtów odebranych z szyny szeregowej) na emulatorze arduino z podłączonym do DHT22 Ale tu jest Atmega8 C++ i czujnik DHT11 Zapisujesz dane...
Zapisać np: tak Lcd "Zapis danych !!!" Writeeeprom Hist , 1 Writeeeprom T_pompy , 2 Writeeeprom Hist_pompy , 3 A odczytać tak: Rem * * Odczyt Konfiguracji * * Readeeprom Hist , 1 Readeeprom T_pompy , 2 Readeeprom Hist_pompy , 3
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);...
Ale cały projekt to nie zegarek, co określoną ilość czasu przerwanie inkrementuje główną zmienną programu, dokładnie co 3 minuty, potem następuje odczyt eepromu i sprawdzenie warunku, a główna pętla to pomiar temperatury na DS18b20
Chcę skonstruować urządzenie, które kilkanaście razy dziennie (po przerwaniu) zapisze do pamięci EEPROM godzinę i temperaturę, razem 3 bajty. Układ będzie pracował na jakimś ATiny i termometrze 1-wire Dallasa. Całość ma być mała (z bateriami wilekość temperówki), lekka i tania, więc planuję wykonać ją w SMD (przeszedłem już przez temat uśpienia i asynchronicznego...
Zrób tak: Dim Temp As Byte Dim Reserved As Eram String * 8 Dim Zmienna As Eram Byte Dim Status As Eram Byte If Status <> 123 then Reserved = "Reserved" Zmienna = 100 'Ustawienie wartości po programowaniu Status = 123 End If Temp = Zmienna 'Odczyt zmiennej z EEPROM'u do RAM Temp = Temp + 22 'Modyfikacja Zmienna = Temp 'Zapis nowej wartości...
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...
W Atmega8 deklarując zmienną w EEPROM kompilator zapisał ją według LITTLE_ENDIAN. Zaraz wypróbuję te podpowiedzi.
http://forumrc.alexba.eu/ipw-web/bulleti... nie wydaje mi sie, aby była to lipa, w przeciwnym razie autor nie pisałby referatu. Wiec mam ustawić te fuski, kliknąć odczyt i się same ustawią?? Nie powinno się wczytać najpierw FLASH, potem EEPROM, potem fuski? Wsad z rozszerzeniem .bin, to właśnie to EEPROM, nie?
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...
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....
Pierwsza rzecz sprawdź czy masz wgrane dane do eeproma, druga ustaw stosy na początku programu np: [syntax=basic4gl]$hwstack = 64 $swstack = 64 $framesize = 64[/syntax] EDIT: Błąd. Co robi ten kawałek w Display_msg :) ? Wykasować: [syntax=basic4gl]For Licznik1 = 1 To 12 'odczyt ustawien z eepromu Readeeprom Tablica(licznik) , Licznik Next Licznik1 [/syntax]
Dziękuję za pomoc, właśnie przed chwilą sam wpadłem na to, że pomyliłem adresowanie eeproma, zamiast kolejno adresować Dev address i wpisywać po jednym bajcie MSB i LSB, ja wpisywałem je kolejno do Word address. Skutek był taki, że LSB dopisywał się do następnego odczytu 4-ch wyników. Jeszcze raz dziękuje za zainteresowanie moim przypadkiem. O tyle...
Witam, przeszukuje internet w tę i nazad ale nie mogę doszukać się w jaki sposób odczytać ID karty elektronicznej, np. telefonicznej TP, albo kredytowej. Z tego co wyczytałem to ID karty to 8 pierwszych bajtów karty, więc trzeba je odczytać. Również czytałem, że karty są różne, takie bedącą samą pamiecią EEPROM, albo takie z mikrokontrolerem.. Czy sposób...
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...
Rozumię, że chodzi o zapis do pamięci EEPROM a potem odczyt z pamięci. Aby dokonać zapisu do EEPROM-u należy: Dim x as long 'definicja zmiennej "x" typu Long x = .... 'wpisać wielkość tej zmiennej writeeeprom x , 1 'zapisanie zmiennej "x" do komórki "1" EEPROM-u Aby odczytać z EEPROM-u: readeeprom x , 1 'odczyt zmiennej "x" z komórki "1" EEPROM-u Uwaga:...
Co do odczytu, masz rację, umknął mi brak włączenia zamiast ACK, ale zapis masz źle. Przy zapisie nie wysyła się ACK, wysyła go zawsze odbiorca, czyli w wypadku zapisu kostka EEPROMu.
Poczytaj co-nieco o typach zmiennych, bo to jak widać stwarza Ci problemy. Za pomocą tej biblioteki możesz zapisywać zmienne jednobajtowe - zmienna typu int (znana jako int16_t) zajmuje 2 bajty. Żeby ją zapisać powinieneś najpierw ją rozbić (najlepiej np. za pomocą unii) na 2 bajty i potem każdy z tych bajtów zapisać np. w 2 kolejnych komórkach eeprom....
Nie ma ograniczonej liczby cykli odczytu - spokojnie można odczytywać kiedy są potrzebne. Powoduje to jednak pewne niedogodności: wydłużony czas dostępu oraz wartość w osobnej przestrzeni adresowej. To, czy dane wczytać do pamięci czy nie - zależy od ilości danych i częstotliwości odczytu - małą porcję można zostawić w eeprom w celu zaoszczędzenia paru...
Jak zwykle można na Ciebie liczyć mirekk36 Zmienne w EEPROM są mi potrzebne z dwóch powodów: aby zaoszczędzić RAM i aby w późniejszym czasie napisać sobie program dla Windows, który dałby mi możliwość edycji samego EEPROM. W eeprom chcę zapisać numery telefonów i fragmenty ciągu SMS w PDU. Następnie w zależności od sytuacji chcę składać z tych zmiennych...
Siemka! Nie ma większego problemu i z paroma czujnikami. Rozwiązania tego problemu są conajmniej dwa. 1. Wrzucasz czujniki każdy na innym pinie portu mikrokontrolera i odczytujesz wynik korzystając właśnie z algorytmu dla jednego czujnika. Jedyna kwestia to tylko sekwencyjne przełączanie interface'u 1-Wire pomiędzy połączonymi z czujnikami pinami portu....
Próbowałem już kilu różnych rzeczy i nadal nic. Nie wiem jakie jeszcze opcje mi zostały :(. Podstawowa opcja , to oczywiście ... dokumentacja ;) Powiedz mi , dlaczego tak "szastasz" bitem TWEA :?: Ten bit należy ustawić , wyłącznie(!) przy przesyłaniu danych z slave do master i to pod warunkiem , że master ma zamiar odczytywać jeszcze jakieś dane ze...
Ale to właśnie jest komplikowanie sobie życia! Nie wykorzystujesz podstawowej cechy 1-wire, mianowicie możliwości swobodnej komunikacji przy wykorzystaniu tylko jednej linii portu uC. Gratis masz kontrolę numerów układów, ich ilości, stanu itp. Programując "po okrężnej" wolniej rozwijasz swoje umiejętności! DS18B20 mają unikalny, 64 bitowy numer ID...
Programowanie i odczyt eepromów działa na przejściówce usb-com ,ale bardzo wolno. Gorzej jest z picami, bo ten sam programator (też parę oporników i chyba 4 diody) na sprzętowym com śmiga aż miło a na przejściówce dochodzi do połowy i wywala błąd. W każdym razie eeprom odczytasz i zapiszesz.
Jak działało a nie działa i program nie był zmieniany to przywarcie linii 1-wire do masy wtedy odbiera same zera. Dla upewnienia się spróbuj zaprogramować eeprom w czujniku a później go odczytać, ale to wygląda jak zwarcie do masy. BASCOMu nie znam ale pisząc w C robie sobie zabezpieczenie przy resecie 1-wire sprawdzając czy nie jest przywarty do masy....
Cześć !!! Pomysł bardzo dobry i ciekawy. Ale propnuje przesiąść się na jakiś procesorek ze sprzętowym I2C np. Atmega8 lub któryś z grupy nowych procków Philipsa. Dlaczego. Komunikację Mikroprocesorów z i2C w trybie Slave najłatwiej jest zbudować, gdy masz możliwość obsługi protokołu w przerwaniu. Tzn. procek dalej się kręci , coś czyta czym się zajmuje...
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, dobry przykład obsługi eepromu zamieszczony jest w dokumentacji od atmegi i wygląda to tak : void EEPROM_write(unsigned int uiAddress, unsigned char ucData) { while(EECR & (1<<EEWE)); EEAR = uiAddress; EEDR = ucData; EECR |= (1<<EEMWE); EECR |= (1<<EEWE); } unsigned char...
Napisze ci jak bym to zrobil i przemyslisz sobie sprawe Dodano po 5 1.Zrob pomiary - tak z 120 co 0.2 , 0.4V 2. Wyniki zapisz do eproma z tiny2313 - od komorki 1 a nie od zerowej w epromie (patrz data sheet) zapis taki ze: a) w komórce 1 laduje najmniejszy wynik a w 121 najwiekszy - przy czym wyniki zapisywane sa liniowo - taka aproksymacja odcinkowo...
Zapis rób przy wyjściu z menu, odczyt przed pętlą główną, a bieżące zmiany od razu podczas pracy menu ładuj do PWM - nie ma sensu robić czegoś takiego: Nastawa->EEPROM; EEPROM->PWM. Zamiast tego: Nastawa->PWM i zaraz potem Nastawa->EEPROM; Pamięci AT24CXX zorganizowane są bajtami - w jednej komórce zatem przechowasz 1 bajt.
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ą...
Jest to microwire eeprom 93C86 ja z tym zmianą częstotliwości przez przełączenie nie napisałem wiem że da się to zrobić przez opóźnienie tylko jak to wyliczyć. Założenie dajmy takie że na razie w chwili wykonywania zapisu czy odczytu procesor wykonuje tylko te operacje.
Witam. A mógłbyś napisać co to za odbiornik radiowy, który wymaga temperatury powyżej zera - zaciekawiło mnie to. A nie boisz się że procesor może się zawiesić itp. Ja bym zastosował termostat na wzmacniaczu operacyjnym i termistorze, no ale nie było by wtedy możliwości odczytu temperatury. W takim przypadku autor mógłby zastosować mały trick. Zapisać...
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...
Dokładnie. Napisanie tego co napisałeś (odczyt temp.) w C to pare linijek, do tego dodasz sobie np. PetitFS i problem z głowy. Z drugiej strony, to musi być karta pamięci? Może lepiej zwykły zewnętrzny EEPROM i dodać jakiś interfejs komunikacyjny, np. RS232 i to potem odczytywać?
Jak z czasem odczytu? Nie będzie to wolno działać w przypadku np pamięci 64MB? Ja wykorzystuję karty jako nośnik muzyki do mojego mp3 na ATmega8 i STA015. Nawet przy największym birate nie ma problemów z odczytem. Odczyt z karty musisz robić paczkami 512B, ale możesz wybierać poszczególne bajty. Na stronie, którą wskazałeś jest prosty czytnik SD/MMC...
W programie wyczaiłem taki kawałek: Const In_eep = 160 'Adresy dla EEPROM Const Out_eep = 161 a więc moim zdaniem adres odczytu to 160 a zapisu 161. Z tego co widzę jest podłączone zasilanie przez diodę do nogi 8. A więc jeśli wszystko się zgadza to będę próbował wykonać płytkę.
Bo możesz tylko nakazać wysyłanie sygnału ACK, a NACK nieda się wywołać! Ack to impuls potwierdzający, a NACK to jego brak i kropka. Zanim przejdziesz do ERROR to przekopiuj do jakiegoś rejestru TWSR i sprawdź jaki wywala błąd ... może to uC nieznajduje EEPROM'a.
Witam, Zacznę od tego, że przeszukałem forum, w prawdzie znalazłem interesujące mnie rzeczy lecz u mnie coś nie działa. Zacznijmy od początku. Mam dwa ds18b20 na jednej linii w Atmega8. Chciałbym z nich odczytać numery seryjne. Tutaj zaczynają się schody. Oto kawałek kodu, za pomocą, którego odczytuję dane z linii onewire: //jesli jakies urzadzenie...
Ale gafa! :D Dziękuję ślicznie za pomoc! Jednak nie ma to jak ktoś kto "świeżym" okiem spojrzy na kod ;) Pomimo błędu w funkcji StopTransmition(); kod umożliwiał odczyt z pamięci EEPROM. Powodem tego był fakt iż pamięć po otrzymaniu rozkazu RANDOM READ zwraca tylko jeden bajt po czym sama kończy transmisję nawet jeśli funkcja StopTransmition nie zostanie...
Aby zmienić rozdzielczość i/lub temperatury alarmowe w DS18B20 , należy: 1)odczytać scratchpad 2)zmienić rozdzielczość w bajcie konfiguracyjnym(bajt nr.4 licząc od 0) 3)zapisać do scratchpada 3 bajty , w kolejności: TH ,TL , CONFIGURATION 4)skopiować scratchpad do eepromu Można pominąć kroki 1 , 2. Ustawienia zostaną zapamiętane w wewnętrznym eepromie...
atmega8 odczyt atmega8 eeprom eeprom atmega8
kupić układ scalony astra tylne hamulce kopiowanie schowka
ws2812 arduino przekaznik elektrozawor
Adaptacja alternatora zwrotnego w Peugeot RXH Silnik odbija podczas kręcenia - przyczyny i diagnostyka