a jeszcze moge dodac jak to zapisac np do komórki pamieci nr100 w eepromie a potem to odczytac z tejze komórki czyli w skrócie adresowanie ? z góry wielkie dzieki No co Ty , żartujesz :?: eeprom int *eeptr; void main(void) { char a; a=0x11; eeptr=100; *eeptr=0x33; a=*eeptr; for(;;); } Piotrek
...Nawiązując do sugestii kolegi wrzuciłem linijki do programiku i na nieszczęście nawet wyświetlacz lcd przestał wyświetlać, a tylko mruga pierwsza linijka. Nie no , jasnowidzem to nie jestem :D Poza tym , to tylko "pomysł na ..." , a nie gotowiec.Pokaż(załącznik) cały kod , to może cosik się zaradzi :D Piotrek
Należę do osób, które za wszelką cenę starają się same pogłówkować i znaleźć rozwiązanie Jedyna prawdziwa informacja, jaką przekazałeś tym zdaniem, to taka, że masz wysokie mniemanie o sobie. Gotowiec dla leniuchów: [syntax=c]static EEMEM uint8_t emode; //rezerwujemy bajt w eeprom ... uint8_t mode=0; //zmienna przechowująca kopię danej z eeprom //odczyt...
Zobacz to : [url=http://radzio.dxp.pl/eeprom/]EEPROM
tak, stosuj tablice. Ulatwi ci to robote.... ALE pamietaj zeby NIE ZAPISYWAC DANYCH W KOMORCE EEPROMA O ADRESIE 0. Jesli zaczniesz deklarowac zmienne w bascomie to : ...jakies zmienne... .... .... .... 'EEPROM dim foo as eram byte 'to ci zalatwia komorke 0, bo tu bascom umiesci tą zmienną, i z niej niekorzystasz dim tablica1(3) as eram byte dim tablica2(3)...
Są oczywiście takie moduły zespolone z pamięcią. Mozna tam zapisywać i czytac po bajcie, ale można też sekwencyjnie całe łańcuchy i tablice nawet serializatorem. Dwie pierwsze funkcje podpowiem. Wygląda na to ze działaja ;) Możnaby dodać jakieś zabezpieczenia na wypadek braku komunikacji. https://obrazki.elektroda.pl/8549538400_...
Witam Przeglądałem forum, jednak zastosowane propozycje nie dały rezultatów.. ;/ mam problem z zapisem i odczytem z pamięci eeprom. Jak mają wyglądać te instrukcje poprawnie?? Robię tak(fragment kodu dot eeprom): int i=1; static EEMEM int i_ee; eeprom_write_block(&i, &i_ee, sizeof(i)); eeprom_read_block(&i, &i_ee,sizeof(i));...
Dlaczego w oknie profili jest dostępna (zaciemniona) opcja FLASH i EEPROM ? skoro program i tak niezapsiuje danych związanych z zapisem/odczytem FLASH i EEPROM.
Witam. Mam pytanie jak zapisywać/odczytywać dane do/z wew. eepromu uP avr 2313 pod C w WinAvr. Przeszukiwałem forum ale nic pomocnego nie znalazłem, dokumentacja nie na wiele mi sie zda z powodu kiepskiej znajomości jęz.ang. Proszę kogoś obeznanego w temacie o jakiś prosty przykład z zapisywaniem i odczytem zmiennej float do eepromu wewnętrznego.
Witam, dzisiaj zabrałem się za zabawę z pamięcią EEPROM. Pierwszy z problemów jaki napotkałem to adresowanie pamięci EEPROM. Znalazłem w internecie 2 polecenia które mnie interesują: eeprom_write_byte (adres, zmienna); x = eeprom_read_byte (adres); Problem w tym, że jak zrobię tak jak podano w tym wątku: http://www.elektroda.pl/rtvforum/topic18...
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...
W C wystarczy zamiast "eeprom_write_byte" wpisać "eeprom_write_word" tak samo z odczytem. W arduino tez powinno coś takiego się znajdować. A nawert jak nie ma to: http://obrazki.elektroda.pl/2158865600_1... http://obrazki.elektroda.pl/9282366200_1... Dodano po 4 HEHEHE tez sie spozniłem. Ale z tymi int to trzeba uwazac....
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
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
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
Bynajmniej nie chciałem urazić w poprzednich postach, jednak, moim zdaniem, dopiero przedostatni post autora tematu konkretnie wskazał problem. Nie znam za bardzo arduino, ale bazując na [url=http://codebender.cc/]kompilatorze online, obsługa eeprom w arduino jest identyczna jak w c. Przykład: [syntax=c]#include <avr/eeprom.h> typedef struct {...
Zapis i odczyt z eepromu jest opisany w dokumentacji gcc Nie GCC tylko AVR-libc ;) [url=http://www.nongnu.org/avr-libc/user...
[url=http://bascom.dxp.pl/bascom_dyrekty... opisane dyrektywy miedzy innymi $eeprom i $eepromhex.
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...
Funkcja odczytuje bajt z EEPROM, porównuje z bajtem do zapisania i jeśli są różne to zapisuje, jeśli takie same, to przechodzi dalej nie robiąc nic. Ponieważ w XMEGA dostęp do EEPROM jest znacznie bardziej zaawansowany (m.in. możliwość jednoczesnego zapisu całej strony EEPROM i odczytu EEPROM przez region zmapowany w przestrzeń adresową MCU, warto się...
Sprawa wygląda następująco: Mam Atmegę8, którą programuję w C (avr-libc). Zapisuję 20 bajtów danych do pamięci eeprom za pomocą funkcji eeprom_write_byte pod określone adresy. Następnie, nie wyłączając zasilania, w dalszej części kodu odczytuję te dane przez eeprom_read_byte. Wyświetlam je, wszystko jest ok. Kolejno, wyłączam zasilanie, włączam ponownie,...
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...
Wiec jaki jest czas wyslania na port jednego slowa zapisanego w tych pamieciach, bo w nocie katalogowej znalazem tylko: "Minimum Wait Delay after Writing a Flash or EEPROM Location:..." Musze wybrac z ktorej pamieci odczyt bedzie najszybszy a z AVR-ami dopiero zaczynam. A moze wiecie jak obsluzyc pamiec zewnętrzną EEPROM (zapis i odczyt) ?
DariuszEE, to by trochę kodu zajęło, a programowanie nawet przy niskich baudrate przebiega dość szybko. Ale kto wie, może w przyszłości pomyślę nad tym, chociaż najpierw postaram się dodać potrzebniejsze opcje (np. odczyt i zapis eeprom stronami).
Oczywiście sytuacja tyczy się też odczytu - czy w trakcie wyłączyć przerwania?
Zamieść fragmenty Twojego kodu. Może podczas zapisu rzutujesz int na unsigned char.
i tak trzeba zrobić podtrzymanie zasilania, bo inaczej zapis może się nie powieść. Co jesli zasilanie padnie w czasie operacji na tej zewnętrznej pamięci? Dwa bloki danych i CRC. Zapisuje się blok 1, następnie 2. Po resece procka wystarczy sprawdzić, który blok ma poprawną CRC i z tego bloku odczytać dane. Dawniej robiłem jak sugerujesz, zapis do eeprom...
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.
Zawsze warto skorzystać z opisu nagłówków ze strony projektu AVR-libc: http://www.nongnu.org/avr-libc/user-manu...
W CodeVisionAVR (C) możesz to zrobić tak: deklaracja zmiennej eeprom unsigned int knastawyCRC; i zapis lub odczyt: knastawyCRC = 23; kakas_zmienna = knastawyCRC; BTW to raczej nie używaj komórki o adresie 00 z EEPROM w AVR, bo możesz się nabawić kłopotów;-). W asm trzeba wykonać kilka poleceń (wpisy do odpowiednich rejestrów i ustawienie bitów), ale...
W avrach do odczytu/zapisu zawartości pamięci ram służą funkcje : http://www.nongnu.org/avr-libc/user-manu...
Witam, Nie mogę zrozumieć dlaczego zapis do eepromu działa dla jednego obszaru a nie działa dla drugiego. To działa. [syntax=c] while (NVMCTRL.STATUS & NVMCTRL_EEBUSY_bm); eeprom_write_byte((uint8_t*)(&USERROW.US... while (NVMCTRL.STATUS & NVMCTRL_EEBUSY_bm); liczba = eeprom_read_byte((uint8_t*)(&USERROW.USE... [/syntax] a to nie [syntax=c]...
$eeprom - dyrektywa kompilatora, która informuje go, że od tego miejsca dane będą trafiać do pamięci EEPROM. Faktycznie dane te trafią do pliku EEP, którego zawartość podczas programowania zostanie przelana do wewnętrznej pamięci EEPROM układu. Napisa: - Etykieta dla polecenia READEEPROM. Jest to przyjazny zamiennik adresu pod którym dane w tej pamięci...
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...
To jest wskaźnik do EEPROM, czyli adres zapisywanej komóki. E2END to stała zdefiniowana w AVR-libc, zawierająca adres ostatniej dostępnej komórki EEPROM, adresacja zaczyna się od 0.
Procek ma tylko zapisać wartość w EEPROMIE oraz po jakimś czasie odczytać. Chyba za szybko nie jest , 10ms przerwy po zapisie chyba wystarczy... Spróbuję jeszcze zwiększyć czas.
Witam. ATTiny programuje w Arduino Ide za pomocą Arduino Nano. Z braku miejsca w pamięci ram, wrzuciłem treść powiadomienia sms do pamięci eeprom: za pomocą #include <avr/eeprom.h> eeprom_write_block Kod programu do zapisania treści powiadomienia w pamięci eeprom ATTiny85: #include <avr/eeprom.h> char powiadomienie[60]; char test[60];...
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ę,...
Witam. Progamując nie korzystałem z EEPROM, a jeśli już to z zapisu i odczytu i to w bascomie. Tam sprawa jest prosta 2 komendy. Pisząć w asemblerze na AVR chciałbym aby program pobierał dane z pamięci EEPROM. Zdeklarowałem w pamięci EEPROM miejsce od którego mają być dane zapisywane. Następnie muszę wpisać dane - tylko nie wiem w jaki sposób to umieścić...
Za długie pętle lub za krótkie tablice zmiennych.
(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....
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.
Witam! Buduje sterownik do kolektora słonecznego i próbuje rozwiązać problem znikających nastawień przy zaniku zasilania. Potrzebuje wpisać zmienną histerezy do pamięci EEPROM którą będzie można zmienić zależnie od potrzeb. Zaczynam od definicji: static EEMEM uint8_t histereza = 3; Odczyt/zapis za pomocą komend: uint8_t histereza = eeprom_read_byte(&histereza);...
Czy każde włączenie mikrokontrolera liczone jest jako odczyt tzn. czy jak włączę uC 10 000 razy pamięć FLASH zostanie uszkodzona? Nie, chodzi o programowanie pamięci, a konkretnie jej kasowanie (ten proces powoli uszkadza pamięci) przed ich ponownym zaprogramowaniem. 2.Po co zapisywać dane w pamięci EEPROM? Co to daje? Czy zamiast zapisywać dane w...
Witam Wiem że może był poruszany już ten temat ale chciałbym zapytać się odnośnie zapisu takiej struktury do pamięci eeprom avr: typedef struct { uint8_t dzien[6]; float temperatura[6][2]; uint8_t tryb[6][2]; }STRUKTURA; czy należy wykonać taki zapis za pomocą funkcji write_block? Odczyt za pomocą read_block? Co by było najlepszym rozwiązaniem?
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ę...
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...
skoro programujesz w C to dlaczego robisz to w taki sposób jak w assemblerze? Przecież są gotowe funkcje które używasz nie martwiąc się jak to się dzieje wewnątrz. w skrócie: //zapis: eeprom_busy_wait(); eeprom_write_byte(); eeprom_busy_wait(); //odczyt: eeprom_busy_wait(); eeprom_read_byte() eeprom_busy_wait();...
Witam, Piszę program na atmege j/w i mam problem z odczytem wartości z eepromu. Napisalem prosty testowy programik: :10000000FFFFFFFFFFFFFFFFFFFFAAFFFFF... :10001000FFFFFFFFFFFFFFFFFFFFFFFFFFF... :10002000FFFFFFFFFFFFFFFFFFFFFFFFFFF... :10003000FFFFFFFFFFFFFFFFFFFFFFFFFFF... :10004000FFFFFFFFFFFFFFFFFFFFFFFFFFF...
[syntax=c]#include <avr/io.h> // Biblioteka wejść/wyjść #include <avr/interrupt.h> // Biblioteka przerwań #include <rc5.h> // Biblioteka ustawień RC5 #include <avr/eeprom.h> // Biblioteka pamięci EEPROM ////////////////////////////////////////... // // // PROGRAM DEKODOWANIA SYGNAŁU RC5 dla AVR // // ATtiny2313 // // //...
Zamiast EEPROM zastosuj FRAM - procedury zapisu i odczytu identyczne a trwałość nieporównywalna - 10^12 cykli zapis/odczyt.
Domyślam się że gdzieś trzeba wpisać procedurę opóźniającą 5ms. Pomiędzy operację zapisu i odczytu bajtu? Z angielskiego jestem noga więc typowe noty katalogowe niewiele mi mówią. Dodane 13.02. Wpisałem procedurę opóźniającą pomiędzy procedurę zapisu i odczytu bajtu i dalej to samo.
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...
To podpowiedz chociaż jak zmienić zapis const uint8_t payload PROGMEM = ...; aby dane zamieszczone we Flash można było odczytać jak z RAM, podobnie jak z EEPROM. Ponoć nowe AVR GCC ma nowe literały, które niezależnie od typu pamięci, gdzie składowane są dane, odczytuje je. W nowszych wersjach AVR GCC wprowadzono kilka ulepszeń ułatwiających pracę z...
W jakim Bascom? Jakiego pliku na PC?? Bascom to język programowania procesora, a jedyne co procesor potrafi to skomunikować się z PC. Po stronie PC musi stać drugi program i to wcale nie napisany w Bascom (Delphi, C, VB, itp.). Jeden program odpowiada za odczyt pliku i wysyłkę danych (ten na PC), drugi (ten w AVR) za przyjęcie danych i ich zapis w eeprom.
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...
Z tymi uniami to trzeba uważać. Dopóki wszystko robisz na AVR to ok, ale takiego kodu nie da się raczej przenieść na inne platformy. A to dlatego, że wiele kompilatorów wyrównuje pozycje poszczególnych pól struktury, co przyśpiesza do nich dostęp, a czasami jest wręcz konieczne ze względu na architekturę procesora. W efekcie unia z char wcale nie odzwierciedla...
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...
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...
4. Blokowy układ pamięci wynika z ograniczonej przestrzeni adresowej. Dany układ nie pozwala na adresowanie każdego bajtu z osobna więc stosuje się bloki np po 64 lub 128 bajtów. Zatem wybierając adres powiedzmy 32, zaglądasz do szufladki w pamięci do której możesz zapisać te 64 lub 128 bajtów. Adres 33 wskazuje na inną "pustą" szufladkę w której jest...
lucas234 to Ty jesteś programistą i Ty decydujesz jakiego typu jest zmienna i gdzie ona ma być zapisana, w której pamięci w zależności od założeń urządzenia które programujesz i tego co chcesz osiągnąć, tak dla przykładu: deklaracje zmiennych w których pamięciach maja się znaleźć: [syntax=c] uint8_t a; // zmienna w pamięci RAM uint8_t EEMEM b;// zmienna...
Chyba AVR BURN-O-MAT tego nie ma. Ja używam avrdude-gui. [url=http://sourceforge.net/projects/avr... Pozdrawiam
Czuję się powalony na łopaty..... Piotrek ja nie wiedziałem, że do wewnętrznego eeprom-u można tak bezpośrednio zapisać zmienną SINGLE. Ciągle czytałem o konieczności rozbiórki, a nikt do tej pory takiej prostej rzeczy nie napisał.... Nawet w Pomocy BASCOM-a (tłumaczenie na polski) tego nie ma, ba nawet w książkach na temat AVR "tysz ni ma".... To jest...
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...
niestety ja mam 51 a nie avr, ale może i by pasowało gdybym miał ten pliczek. Mógłbyś go wrzucić??
Po zapoznaniu się z uwagami stworzyłem taki kod: [syntax=c] #include <avr/io.h> #include <util/delay.h> #include <avr/eeprom.h> #include <avr/pgmspace.h> #include <avr/interrupt.h> //WYJŚCIA #define LED1 (1<<PC5) // 60s #define LED1_ON PORTC |= LED1 #define LED1_OFF PORTC &= ~LED1 #define LED1_TOG PORTC ^= LED1...
Dzień dobry Mam mały problem ze zmianą kolejności adresów czujników DS18B20. Mam tablicę uint8_t z adresami czujników. Każdy adres zajmuje 8 pozycji tablicy. Napisałem menu ustawień z możliwością zamieniania kolejności. W menu po wejściu w wybrany czujnik mogę przypisać mu adres ze "świeżo" przeskanowanej magistrali. Problem w tym, że o ile po zapisie...
A tak z ciekawości zapytam - po co wyważasz tzw głową mur albo otwarte drzwi , pisząc własną obsługę zapisu do EEPROM z jakimiś tam oczekiwaniami itp itd itp Skoro w AVR GCC masz gotowe, wbudowane i porządnie działające funkcje do tego celu, gdzie nie trzeba żadnych takich cyrkowych sztuczek robić. Chyba że czegoś nie zrozumiałem.
Pierwszym krokiem jaki zrobiłem to udałem się na stronę producenta tej pamieći . http://www.microchip.com/wwwproducts/Dev... W polu opisanym Application Notes [url=http://www.microchip.com/stellent/i... - Using C to Interface 8051 MCUs with SPI Serial EEPROMs [url=http://www.microchip.com/stellent/i...
Witam, czy fuse EESAVE w ATTiny26 zapobiega skasowaniu zawartosci EEPROM-a w trakcie kolejnego programowania układu czy również blokuje dostęp programu do zapisu/zmiany nowych danych? Chcę umieścić w EEPROM-ie stałą tablicę wartości (tylko do odczytu) i dodatkowo ją zabezpieczyć przed skasowaniem w wyniku np. mylnego zadziałania programu, czy ustawienie...
Witam, Mógłby ktoś sprawdzić, gdzie robię błąd? Chcę zapisać cokolwiek do wew. pamięci EEPROM. [syntax=c]#define F_CPU 1000000L #include <avr/io.h> #include <util/delay.h> #include <avr/eeprom.h> #include <avr/interrupt.h> //deklaracja zmiennych int h, m, s, i; //inicjalizacja uint8_t eeprom_val[512] __attribute__((section(".eeprom")));...
Dalej walcze z ta pamiecia! Jedyne co udalo mi sie uzyskac to dzialajaca procedura odczytu... Moze i ona od poczatku dzialala ale w ktoryms momencie zaczela mi odczytywac, ze w komorce pod adresem 1 jest wartosc 13, ktora tam w innym momencie wpisalem... Na wszystkich innych adresach mam FF. Probuje na tysiac sposobow wpisac na miejsce tej 13-stki jakas...
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,...
Błąd tkwi wszędzie :) Przede wszystkim - bufor zapisu do EEPROM to w zależności od typu XMEGA max 32 bajty. A więc nie jest tak, że masz zmapowane wszystkie konórki EEPROM do bufora. W danej chwili zmapowana jest jedna strona (max 32 bajty). Bufor zawiera informację, które bajty zostały zmodyfikowane i tylko te są zapisywane do EEPROM po wydaniu polecenia...
Eeee... A po co, skoro i tak zapis do EEPROMu realizowany jest blokowo? A nawet jeśli by nie był, to wystarczy zrobić sobie funkcję, która ten zapis będzie realizowała właśnie w taki sposób? Tak czy siak nie rozwiązuje to problemu autora, ponieważ problem ten jest dosyć skomplikowany [; Ze swojej strony proponowałbym tablicę na takie napisy użytkownika...
Dziękuję szczywronek za odpowiedź na mojego posta. Aktualnie jestem zajęty ( praca przy domu ), ale jak tylko będę przy komputerze, to pokombinuję.Odezwę się. Miłego łikentu. Dodano po 4 Witam ponownie. Zapis i odczyt działa w obu kierunkach. Bardzo dziękuję za pomoc. Kiedy tak patrzyłem na wcześniejsze moje zapiski, to na "moją" logikę wydawało się...
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...
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...
Czyli po kropce podajesz nr odczytywanego bitu, a możesz wyjaśnić dokładniej jak z zapisem jednego bitu? Nie. Praktycznie odczytujesz caly byte. Pamiec EEprom w AVR jest 8 bit szerokosci, czyli 1 byte. Nawet jezeli potrzebujesz wpisac do pamieci eeprom tylko jden bit, to i tak zabiera to jeden byte w pamieci. Nie ma mozliwosci adresowania tylko jednego...
. 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...
Posiadam schemat płytki AVR, autr twierdzi, że nie da się wykorzystać pamięci EEPROM (zapis i odczyt danych z mikrokontrolera ATMEGA16) z powodu złego podłączenia. Nie posiadam żadnego sprawdzonego programu, który miałby testować lub zademonstrować działanie EEPROM. Po usłyszeniu, że jest błąd, stwierdziłem, że nie ma po co poświęcać czasu na analizę...
Jeszcze dodałbym 6ty, znaczy się projekt był na początku banalny, ale chciało się większej funkcjonalności... Co do pierwszego pytania, to sam się zastanawiam, bo jakoś nie umiem tego znaleźć w winavr (tools/options/ na szybko przeleciałem, ale nie widzę nic o optymalizacji). A co do pierwszego? Podstawiasz 16 bitów na 8 i dziwisz się, że nie możesz...
Witam, Z powodu kończących się zasobów pamięci flash jestem zmuszony przenieść definicje wyglądu znaków wyświetlacza LCD od nokii 3310. Deklaracja tablicy oraz fragment tablicy wygląda tak: [syntax=c] static EEMEM unsigned char lcd_Font[][5] = { { 0x00, 0x00, 0x00, 0x00, 0x00 }, // sp { 0x00, 0x00, 0x2f, 0x00, 0x00 }, // ! { 0x00, 0x07, 0x00, 0x07,...
Masz przecież wbudowane, dobrze działające i gotowe procedury do obsługi odczytu i zapisu w AVR GCC. Więc po pierwsze możesz ich użyć a po drugie (skoro chcesz wyważać głową mur) to możesz do nich zajrzeć i zobaczyć jak powinno się to robić a potem ew modyfikować lub robić to wg jakichś swoich specyficznych założeń, jeśli takie są.
uderz na fora związanie z TV-SAT, a raczej do ich archiwów, na pewno znajdziesz czegoszukasz. Była też kiedyś strona KSW-FUNCARD /nie wiem czy jeszcze istnieje/ , wprawdzie o AVR+EEPROM , ale zasada działania ta sama, i z tego co pamietam były tam dokładne dokumentacje co i jak. a jeżeli to nie pomoże, to myśle że można zdeasemblować taki wsad z loaderem...
Witam, Zapoznałem się z tym tematem: https://www.elektroda.pl/rtvforum/topic2... Niestety jest zamknięty, więc musiałem otworzyć nowy. Szukałem wielu porad w tym temacie i ostatecznie napisałem program w BASCOmie i działa, aczkolwiek z pewnym problemem z częstym błędnym odczytem CRC. Teraz powoli przeprowadzam się na C i z podanego tematu ściągnąłem...
czekanie na dostępność EEPROM nie jest potrzebne, bo to już załatwiają funkcje odnoszące się do EEPROM Podeślij proszę do tego jakiś odnośnik, zaglądałem tutaj https://www.nongnu.org/avr-libc/user-man... oraz na dysku do bibliotek ale nie znalazłem implementacji tych funkcji, chętnie zobaczę jak one wyglądają. To co znalazłem...
Przepraszam, że to nie jest odpowiedź, ale po prostu analiza nie ma sensu, bo wykorzystany sposób zapisu do EEPROM też. Może z grubsza: "Adresy są obok siebie". Nie pokazujesz programu, to należy zgadywać, że podajesz adresy np. 11,12,13, zapisujesz po 2 bajty i je sobie nadpisujesz. Poza tym nie wiem jakie prądy i napięcia zamierzasz mierzyć, ale temperatury...
Witam. Mam zamiar zrobić generator arbitralny oparty na AVR. Metoda generacji to Variable-Clock (nie DDS). Mam zamiar użyć zewnetrznej pamięci do przechowywania próbek przebiegu. Myślałem nad zastosowaniem pamięci typu EEPROM AT28C64. Ma ona wytrzymałośc 10000 lub 100000 cylki Moje pytanie brzmi: jak rozumieć to pojecie wytrzymałości ?? tzn, że jakakolwkiek...
Szczerze to Ciebie nie rozumiem, procek kalibruje sie po to by uzyskać częstotliwość wewnętrznego oscylatora jak najbardziej bliska porządanej. To co musisz zrobić to po odpaleniu procka zmierzyć częstotliwościomierzem i uwzględnić zmiane w kalibracji poprzez odczytanie tego bitu kalibrującego i ponowne zapisanie zkorygowanej liczby. Nie wiem po co...
Witam. Zakupiłem wspomniany programator UPP628. Programatorek spisuje się przyzwoicie, choć programowanie równoległe jest nadal niedostępne w obecnej jego wersji. Przywróciłem do porządku ATmegę32 która nie chciała komunikować się przez LPT. Dodatkowo bardzo sprawnie przebiega zapis/odczyt różnych kości Flash i EEPROM, których miałem trochę pod ręką....
Przy próbie programowania wyskakuje okienko: https://obrazki.elektroda.pl/8740540800_... Odczyt z EEPROM po nieudanym programowaniu: https://obrazki.elektroda.pl/9974032400_... Przykładowy kod: [syntax=c] #include <avr/io.h> #include <avr/eeprom.h> const char EEmodName[] EEMEM = {'D','R','V'}; int main(){...
Witam; Korzystając ze strony http://radzio.dxp.pl/ napisałem (w WinAVR) procedurki obsługujące zapis i odczyt danych z zewnętrznej pamięci eeprom 24c32 po I2C. Problem w tym że nie działają.:( Tzn zlokalizowałem problem ale nie wiem jak się go pozbyć. Oto listing programu: twiread a mianowicie w miejscu: while (!(TWCR & (1<<TWINT))); program...
Do 30 Hz po zmianie. Filtr fc=35Hz. Obecne próbkowanie: f= 125Hz (więcej nie dam, bo wtedy dokładność W takim razie musisz się liczyć z przekłamaniem sygnału na granicach pasma. Możesz to próbować kompensować w sofcie mnożąc otrzymane fft przez funkcję odwrotną do ch-ki amplitudowej filtru (kolejne mnożenia), ale weź pod uwagę, że z racji rozrzutów...
Ja na twoim miejscu zacząłbym od nauki podstaw C, a potem ogarnięcia tego języka na AVR. To po pierwsze, a po kolejne: - do zliczania nie używaj float, wbrew pozorom to nie jest obojętne, czy będzie float, czy int. Poczytaj o tym jak float jest reprezentowany w pamięci, bo możesz się zdziwić, kiedy np. x+1 będzie ciągle równe x. - EEMEM nic nie zapisuje...
Zrodlo programu bdm AVR Studio v4.13 procesor ATTINY2313 ,kwarc 20MHz Program zostal napisany bardzo dawno temu i nie jest jakos szczegolnie "dopieszczony" :-) ,ale dziala, wiec nic nie zmienialem. Udostepniam tylko zrodla na AVR poniewaz doszedlem do wniosku ,ze nawet poczatkujacy potrafi skonfigorowac lacze RS232 ,wyslac 5 bajtow i odebrac 2. Inna...
AVR ma mało pamięci RAM więc pozostaje ci odczyt pojedynczych bajtów/słów z pamięci i wrzucanie ich do LCD. Ja używam pamięci EN25F16. Są bardzo szybkie(100MHz), pojemne (16Mb)i nie są skomplikowane w obsłudze. Do zmiany bmp na bgc skorzystaj z programu LCDconvert z pakietu BASCOM.
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...
Doskonale powiedziane :) Najważniejsze jest PLANOWANIE. Jako przykład niefrasobliwości młodego programisty, który po przesiadce na AVR zachłysnął się możliwościami języka C bez pełnego jego zrozumienia umieszczam poniżej kod maszyny stanów realizującej komunikację sterownik - PC. [syntax=C] void rxstring(char adress) { if ((znak!=13)&&(znak>=48)&&...
Witam! Noszę się z zamiarem zaprojektowania urządzenia w którym to wyświetlana będzie spora ilości napisów na LCD-ku w związku z powyższym myślę że w tym przypadku idealna okazała by się pamięć eeprom. I tutaj kieruje pytania do Was drodzy forumowicze: 1. Czy odczyt tej pamięci jest tak samo długi jak jej zapis? Myślałem o tym aby pobierać dane z kostki...
zapis odczyt eeprom eeprom zapis odczyt bascom zapis odczyt eeprom
przerwana grzałka zapalanie palnika impuls praca ciągła
Gdzie kupić pokrętło do sterownika BUDERUS CM221? Krótkie szczotki a spadek mocy rozrusznika elektrycznego