Z komparatorem też może wystarczyć jeden pin, jeśli procesor ma możliwość programowego podłączenia drugiego pod Vcc procesora. Można też zrobić tak jak pisze kol. (at)pawlik118 , tylko trzeba pamiętać, że próg przełączenia stanu pinu jest dosyć płynny i zależy m.in. od egzemplarza MCU, temperatury itd. Niemniej da się tak zrobić.
Jeśli symulator zapisał pierwszą komórkę powinien zapisać kolejne , ciężko to zobaczyć przy pracy krokowej bo zapis eeprom trwa od 3,4ms do 8,5ms w rzeczywistości ale w symulatorze należy to odnieść do ilości cykli mikrokontrolera . Biorąc pod uwagę że symulator programowy możliwie wiernie naśladuje mikrokontroler możliwość zapisu kolejnej komórki wystąpi...
a spróbuj, czy puści tak: EECR=(1<<EEMWE); EECR=((1<<EEMWE)|(... a tak na marginesie, czemu 2x inkrementujesz WriteAddress ??
Odczyt nie ma wpływu na żywotność EEPROM, zaś zapis - wg datasheet Write/Erase Cycles: 10,000 Flash/100,000 EEPROM
Najlepiej nigdy, przenigdy nie rób takich rzeczy ;) Argumentem tej funkcji powinien być wskaźnik ale ty stosujesz tu rzutowanie i na własną rękę numerujesz komórki pamięci w EEPROM. To doprowadzi cię kiedyś do zagłady ;) jak już to najpierw zdefiniuj sobie zmienną w pamięci EEPROM: unsigned char zmienna EEMEM; a potem np: mem_year = eeprom_read_byte(...
Witam Wiem że na ten temat było już kilka dyskusji, ale niestety nic nie pomaga. Staram się w na procku ATmega16 obsłużyć wewnętrzny eeprom, odczytywanie działa bez problemu, natomiast zapis na żaden sposób nie chce zadziałać. Korzystałem już z funkcji podanych w notach ATMELa, starałem się trochę je zmodyfikować, ale efektu wciąż brak. Zamieszczam...
Dołączam gotowy projekt komunikacji avr z zew. pamięcią eeprom. Mam nadzieję że umiejętnie go wykorzystasz.
Często się zdarza ponieważ, że dane z początkowych ok. 100 adresów są błędnie zpisywane/odczytywane. Pierwsze słyszę :| O "kłopotach" z komórką 0 - coś mi sie o oczy obiło , ale że 100 :?: To w "małych" atmelkach , gdzie jest tylko 64 B eepromu , byłby on bezużuteczny :( Oprócz tego kod wygląda OK, jak w dokumentacji :-) No prawie ;) Dokumentacja Atmela...
Witam. część kodu z Bascoma (D zadeklarowane jako Word) Input "coś tam.. " , D Waitms 20 Writeeeprom D , 1 w procku "8535" bez problemów zapisuje daną liczbę. Po wymianie procesora na Atmega 16 lub 32, już nie zapisuje tej liczby (kompilator nie zgłasza żadnych uwag). "Po omacku" zauważyłem, że w w/w prockach działa dopiero po dodaniu jeszcze jednego...
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. Mam pewne urządzenie w którym użyłem procka Atmega16 i pamięci eeprom M24256. urządzenie ma dostęp do netu. Chciałbym robić aktualizację programu w procku w następujący sposób: 1. pobranie programu z netu do pamięci eeprom. 2. wysłanie odpowiedniej komendy powodującej przejście do bootloadera. 3. załadowanie nowego oprogramowania i reset. Jak...
Ciężko ci to zrozumieć że od samego początku masz źle? void konwert2(char tekst char tekst do char pomoc ?
Zamieść fragmenty Twojego kodu. Może podczas zapisu rzutujesz int na unsigned char.
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...
Zobacz na jakim porcie masz ustawione hardwarowo SPI, podejrzewał ze na którys wyprowadzeniach portu B i i to jest powodem błedniej pracy wyświetlacza.Sam napisałem (własciwie to pisze bo ciągle coś zmieniam) podobny program tylko na 51 równeirz w BAscomei dodał bym tu jeszcze zapis na EEPROM aktualnej wartości wzmocniania zeby po wyłaczeniu zasilania...
Też miałem o tym napisać ale dałem sobie spokój bo to nie na temat. U mnie często wychodzi około 1M cykli zapisu. Dodano po 1 Możesz zapisywać dane w kodzie Gray'a. Często kilkakrotnie zwiększa to maksymalną ilość zapisów bo każdy bit w bajcie jest zmieniany mniej więcej tak samo często. Ale oczywiście zależy to też jeszcze od charakteru zmian zapisywanych...
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,...
Faktycznie Kolego wojekkk tego pod uwagę nie wziąłem - wynika to z nawyków co do obsługi eeprom. Ale jak najbardziej masz rację. Ja miałem na myśli raczej jakiś "przypadkowy" zapis do eeprom i później korzystanie z tej zmiennej w programie.
Źle podchodzisz do tematu. Tworzysz sobie typ danych w postaci struktury z ustawieniami wraz z polami na CRC. Alokujesz takie typy w RAM, ROM i EEPROM. Strukturę w ROM inicjujesz wartościami domyślnymi. Przy każdej zmianie danych w RAM w tej strukturze aktualizujesz sumę kontrolną. Tworzysz funkcję zapisu całej struktury z funkcjami update do EEPROM....
proponuję zastosować zarówno przed każdym zapisem i odczytem jak i po zapisie/odczycie eepromu makro eeprom_busy_wait() które jest tym samym co while(eeprom_is_ready()==0)
Odczyt z EEPROMu chyba do woli - nie czytałem o ograniczeniach ale moze ktoś wie na 100%. Co do ilosci zapisu to jezeli jest np. kilka bajtów to mozna je zapisywac za każdym razem w innym miejscu (komórce) - jeden bajt jest potrzebny do pamiętania indeksu adresu zapisu. Pozdr. N.
zajmuję się profesjonalnie pisaniem aplikacji na AVRy W takim razie Ty powinieneś odpowiadać na pytania ;) po powiedzmy 50 (+-100) zaprogramowaniach EEPROMu, EEPROM pada (tzn. weryfikacja się nie powodzi). Dzieje się to cyklicznie w najprzeróżniejszych układach, które programuję. W tej chwili mam już trzy padnięte w ten sposób ATMegi (16-stki i 32-ójki),...
Za długie pętle lub za krótkie tablice zmiennych.
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...
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.
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...
...Czy moje rozumowanie jest poprawne? Nie do końca. Jeżeli piny A1=A2=0, to pamięć ta przy zapisie, będzie "widziana" pod adresami 0xA0 i/lub 0xA2.
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...
czyli zgrywać dane na eeprom a następnie podłączając pod zasugerowany konwerter i2c na USB sczytywać na komputer?? tak ?? Także problem tkwi w napisaniu sekwencji zapisu na eeprom i zbudowanie konwertera do sczytywania na komputer??
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ę...
Czy przypadkiem między zapisem a odczytem nie powinieneś sprawdzić czy eeprom nie jest zajęty? Zapis jakby nie było trwa kilka milisekund. Konkretnie eeprom_busy_wait(); .
Programuje EEPROM, automatycznie się programuje poprzez ECLIPS. Odnośnie deklaracji to deklarowałem już w dwie strony uint8_t EEMEM pamt1=0 oraz uint8_t pamt1 EEMEM=0 i w obie jest tak samo, kompilator też nie widzi błędów w obu zapisach. Właśnie szukając gdzieś na forach znalazłem 2 formy zapisów, myślałem że tylko taki błąd jest, natomiast tu nie...
Szukam gdzieś tablicy pl znaków, ale znaleźć nie mogę. sam zrob :P co do zapisu do eeprom tez mialem taki pomysl ale sie nie miesci do wew eeprom w atmega16 i 1 kod zajmuje mniej niz 8kb bo sie miesci do atmega8
Na 100% działają na mojej ATmega169p, optymalizacja -Os void eeprom_write(unsigned int uiAddress, unsigned char ucData) { /* Wait for completion of previous write */ while(EECR & (1<<EEWE)); /* Set up address and Data Registers */ EEAR = uiAddress; EEDR = ucData; /* Write logical one to EEMWE */ EECR |= (1<<EEMWE);...
Tu jest oryginalny program do eepromu. Podstawiłem do swoiego i zapis działa. Chciałbym w drugą stronę odczytać i wyświetlić. Robię sterownik temperatury. Po włączeniu zasilania ma odczytać z eepromu zadaną temperaturę. Porównać z mierzoną i sterować zaworem trójdrożnym. Jak już wspomniałem pomiar temp. działa poprawnie. Nie wiem co to jest: eeprom_busy_wait();...
31.07.2010 - AKTUALIZACJA #3 Wsad 2.04: -poprawiono kilka błędów -dodano obsługę nowych procesorów, łącznie 106 (138) -zmiana wewnętrznego zegara na 1MHz, baudrate UARTa to 2400bps UWAGA, FUSEBITY! Jeśli uaktualniasz wsad do 2.04, koniecznie zmień wartość wewnętrznego generatora na 1MHz. Jeśli wykonujesz układ od początku, jedyną rzeczą jaką musisz...
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...
Co do drugiej uwagi wspomniana konstrukcja w funkcji eeprom_write() jest takowa, z mysla o tym, zebym mogl jej uzywac do zapisywania ciagow. Dzieki temu moge napisac eeprom_write(EEPROM1, adres, "tekst do wpisania < 32 liter"); Obawiam się, że to będzie działać prawidłowo tylko wtedy, gdy adres będzie podzielny przez 32. Poza tym,...
Wiem że można było wykorzystać Drown-Out Detector, dla atmega16:3,6V - 4,6V dla atmega16L(tak jak wyżej, lub...): 2,5 - 3,6V Zasilanie w moim układzie waha się między 4,5 a 5V, dlatego tez użyłem wersji"L", ale w najgorszym wypadku jeśli BOD zadziała przy napięciu 2,5V zapis do pamięci EEPROM się nie powiedzie.... Jak rozumiem masz BOD'a włączonego...
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...
Witam. W pewnym miejscu programu potrzebuję zamienić zmienną word w zmienną byte, (chociażby po to by móc ją zapisać za pomocą polecenia writeeeprom w pojedynczej komórce pamięci eeprom / nie marnować pamięci eeprom). Na początku obliczenia wykonywane są na dużych liczbach - Getadc dla przetwornika 10 bit zwraca wartość 0...1023 (word) ale różnica powinna...
Aby kod łatwo było analizować używaj znaczniki SYNTAX: [syntax=c] tu wklej Twój kod [/syntax] Plik : HD44780.c Plik : HD44780.h Dodano po 25 Ja połączyłem je w ten sposób ale pewnie źle bo wystąpiły błędy w kompilacji. Proszę o pokazanie mi sposób połączenia tych dwóch plików w prawidłowy sposób. Pierwsze uwagi: - te dwa pliki to tylko...
Prawdopodobnie mam ten sam problem... Jestem (szczęśliwym?) posiadaczem laptopa bez portu LPT ani COM. Posiadając jedynie prostą przejściówkę USB->RS232 poskładałem programator z tej samej strony ale na bazie ATmega8. Program napisałem całkowicie w C, wzorując się na wersji w asemblerze. Problem w tym, że zarówno oryginalny program (poprawiony i skompilowany...
Nie wiem jak to u ciebie wygląda w pętli głównej, ale po każdym zapisie do pamięci musisz odczekać chwile zanim cokolwiek wyślesz na i2c, wg. Datasheet układu 24lc16 maksymalny czas zapisu to 10ms więc po każdym zapisie tyle trzeba czekać. Co do zakłucania się uatru z twi, spróbuj zastosować buforowanie danych z eepromu tzn. odczytywane dane zapisz...
A po co ci te informacje? Bo one nie mają żadnego praktycznego zastosowania. Jeśli 20MHz to za mało to masz serię XMega do 32MHz. Jeśli to ciągle za mało to zmień rodzinę. Parametry z noty są określane tak, żeby założony odsetek układów pracował w podanych warunkach. To znaczy, że większość będzie pracować przy szybszym zegarze, a jak szybkim nie ma...
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...
Witam Proszę nie mylić pamięci flash i EEPROM. Pamięć flash to pamięć programu i nie da się jej wykorzystać do przechowywania danych w taki sposób. Taka ilość zwykle wystarcza do tego by napisać i sprawdzić program w mikrokontrolerze. Jeśli chodzi o pamięć EEPROM to jej "żywotność" jest zwykle dużo większa i wynosi powiedzmy 100 000 cykli zapisu/odczytu...
Te 4 eepromy jak mają ustawione adresy? Piny adresowe zwarte do masy, czy wiszą? W jakiej kolejności program je obsługuje? Czy zostawienie jednego rozwiązuje problem? Błąd ten to wystąpienie 0 na lini SDA gdy master wystawia jedynkę. Albert
Czy to mozliwe zeby w ATmega16 samoistnie zmieniala sie zawartosc wewnetrznego EEPROMU podczas wylaczania lub wlaczania ukladu(nie mowie o numerze 0 bo to wiadome? Uklad nie odczytuje ani nie zapisuje pamieci podczas starrtu programu. Napisalem program do testowania bo juz wczesniej mialem problemy z eepromem tak jakby niektore komorki byly uszkodzone...
Czesc Proboje zrealizowac trasmisje miedzy Atmega16 a EEPROM at24C04, mam kilka watpliwosci: a) jak ustawic porty SCL i SDA jezeli mam je zewnetrzenie podciagniete przez rezystory do VCC? Ja ustawilem DDRC=(0<<DDC0)|(0<<DDC1) oraz PORTC=(1<<PD0)|(1<<PD1) b) jezeli ostatni bit adresu harwarowego tego EEPROMa jest bitem A8 adresu...
http://obrazki.elektroda.pl/3637756900_1... http://obrazki.elektroda.pl/6313868300_1... Zrealizowałem w tym roku swoje postanowienie jeszcze sprzed zeszłej zimy i zrobiłem sobie wreszcie własny sterownik pieca CO. Na początek pytanie "dlaczego"? Otóż oryginalny dostarczony z piecem przede wszystkim miał 6 poziomów nadmuchu...
przypadkowego zapisu /kasowania komórki pamięci eeprom z adresu 00 . Wniosek prosty nie używać Tez prawda - szczególnie ze używam tylko jednej.
Kolego Jest to oryginalny moduł Tiny RTC fabrycznie zmontowany.Bateria działa prawidłowo,po odpięciu zasilania nie giną ustawienia.Dodatkowo jest zamontowany EEPROM na I2C ale nie sądzę,że on może coś złego powodować.
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...
witajcie!! Problem wyglada tak: mam 24c08 i zapakowalem do niego plik: FFFFFF070707070F0F1F7FFFFF00FFFFFF3F1F0F... 03030303C3C3C3C3C38303030383C3C3C3830303... 3C3C3C38303C3C3030303C3C303030303FFFF000... 00080C0FFFF00FFFFFF8000000000000000FFFFF... 070793F1F001F3F7070703F1F00007F7F6060600...
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ć...
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ą,...
Jest tylko jedno ale ten program powyżej 512B programu jest płatny, a ja myślałem o czymś za free, poza tym ten bootloader można upchnąć w 238B (odczyt + zapis Flash), albo w 366B (odczyt i zapis FLASH, EEPROM + zapis LockBit'ów) lub wiele innych kombinacji (wybierane #define ... 0 (wyłączone) lub #define ... 0x.. (włączone). Chcący dopasować się do...
Najprościej będzie skompilować jakiś kod do HEX'a... Najprościej, to kierować się zdrowym rozsądkiem :) Autor tematu, próbuje zapisać dane z pamięci programu do pliku, który jeszcze nie istnieje , a typ pliku jest ustawiony na AUTO. Skąd biedny avrdude ma wiedzieć jaki to typ pliku, skoro ten plik jeszcze nie istnieje :?: To tak na marginesie. Jeżeli...
Więc tak: zmniejszanie prędkości procka to iluzoryczne oszczędności, ponieważ o wiele więcej stracisz przy zapisie tych informacji, które zabrałeś na kartę (ona najwięcej pożera prądu) Zrób tak: 1) zwiększ prędkość procka do maksymalnej, przy której działa komunikacja) Wzrost prędkosci avra jest wprost proporcjonalny do zużycia energii ale nie wzrasta...
Witam, Próbuję napisać program do wymiany danych z zewnętrznym EEPROMem 24LC16B. Zapis raczej działa - w podobny sposób udanie komunikuję się z przetwornikiem PCF8591. Natomiast podczas odczytu pamięć zwraca mi wysłany przeze mnie ctrl_byte (adres na magistrali) w trybie Current Address Read, lub 0xFF w trybie Random Read. Kod: [syntax=C]void eeprom_read(...
e marcus Chciałbym trochę zrozumieć zasadę działanie programu a nie na sucho przepisać program. Dlatego proszę o podpowiedzi , abym sukcesywnie sam rozwiązał problem ale dzięki waszej pomocy.......... Kierując twoją uwagę do tamtej dyskusji j.w., nie miałem na myśli kopiowania programu, który i tak wymaga pewnej korrekty, ale na przeanalizowanie możliwości...
Jeżeli to musi być Atmega16A, to chyba jedynym rozwiązaniem jest napisanie interpretera. Rdzeń tego układ nie może wykonywać programu z pamięci zewnętrznej, to nie jest C51, to jest inna architektura. Pomysły typu notatnik na m16 to już zupełne nieporozumienie. Albo używaj do tego telefonu, albo zbuduj takie urządzenie, ale w oparciu o jakiegoś ARMa...
http://obrazki.elektroda.pl/3303656700_1... Wariometr, Atmega168 + LCD Nokia 3330 / 3310 + Bosh BMP085 Witam. Przedstawiam projekt, który zrobiłem na zaliczenie na studiach, a tym samym chciałem, aby był użyteczny. Wariometr elektroniczny służy do pomiaru prędkości pionowej. Można go stosować do wolnego latania paralotniarzy. Polega...
Stosujc się do powyższych wskazówek uruchomiłem program, lecz teraz w terminalu nic się nie wyświetla, więc na to wygląda, że gdzieś flaga SPIF nie jest ustawiana i program się zapętla. Bardzo proszę o jakieś wskazówki w rozwiązaniu problemu. Poniżej przedstawiam poprowiony kod programu. [syntax=c] /* Dołączone biblioteki */ #include <avr/io.h>...
Tego nie wiem, ale w sumie to nie sądzę. Po to był blokowany, żeby nie można było go odczytać. Źródło ma producent i dla niego odblokowywanie nie jest istotne, bo może zapisać sobie nowy. Tu już raczej pojawia się kwestia włamania do układu czyli stosowanie różnych technik, które pozwolą na obejście zabezpieczenia. Możesz próbować chłodzić układ, odczytywać...
Trudno tak wróżyć a błąd pewnie jest błahy. Dlatego warto zawsze wykonać kilka testów. Znajdź to miejsce w kodzie i dopisz to co tam dodałem. To przy starcie pokaże numery seryjne zapisane w pamięci czyli sprawdzi czy zapis przebiegł pomyślnie. Numery pokazuję w postaci Hex bo się akurat zmieszczą na 16-nasto znakowym LCD. Jak w pamięci będa same FF...
Mój program nie uwzględnia podłączenia dwóch czujników do jednej linii. Trzeba by przerobić funkcję odczytów tak aby nie ignorować adresów (opcja/komenda skip ROM powoduje ominięcie adresowania). Adres w DS ma 64 bity a nie jak kolega napisał 16 bit. Trzeba by go gdzieś wprowadzać po odczycie. Można na etapie kompilacji w plik np. .h lecz zmiana czujnika...
A więc tak Kompilator WinAvr, procek Atmega16 chodzi o to że chce zapisać daną tablice (const) bezpośrednio do EEPROMU, żeby kompilator nie rezerwował mi dla niej pamieci RAM. Ponieważ ona jest mi potrzebna tylko do odczytu bajt po bajcie. Dodano po 4 uint8_t EEMEM test_ee[17]={0,8,16,24,32,4...
Witam po raz kolejny! Zgłaszałem się z podobnym problemem, jednakże ten mimo że zbliżony to prosiłbym o podpowiedź W programie pod atmega16 znalazłem zapis: ldiyl, RAM gdzie RAM to stała 0x68 Próbując to przerobić na Atmega128, jakiej powinenem użyc instrukcji a raczej jak y, ale tym razem stała RAM = 0x100 co daje 255 yl to rejestr r28, a więc nie...
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...
Witam Na początek chcę sprostować wypowiedz kolegi emarcus ja nie czekam na gotowca ja jestem początkujący w pisaniu programów. W tym linku co podałeś te kody nie są dobre, nie działają poprawnie a wręcz w ogóle dzięki za takie gotowce kolego Eh, Tak na dobrą sprawę to tamten program nie jest taki zły!!!... Jak autor pisze.... testuje go z zadowoleniem...
Widzę ze kolega wyżej czytał dokładnie 1 pierwszy post :). Może się komuś przyda na przyszłość sekcję zapisująca dane przenosimy do zakresu pamięci przeznaczonego dla bootloadera void boot_program_page (uint32_t page, uint8_t *buf) __attribute__ ((section (".bootloader"))... Oczywiście wcześniej trzeba zadeklarować...
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...
Moje pytanie to: Czy jest możliwość zasyngalizowania kompilatorowi pod jakim adresm ma się znaleźć blok pamięci EEPROM i czy można sobie wybrać ten adres jaki się chce? void eeprom_write_block( const void * __src, void * __dst, size_t __n) Write a block of __n bytes to EEPROM address __dst from __src. Drugi argument to adres. Zdefiniuj sobie adresy...
Da sie to zrobić? Bo robie projekt na atmega8515 (mam ich kilka więc nie będe kupował nowego) a on nie ma TWI a potrzebuje dołączyć pamięć EEPROM Jak to zrobić pod bascomem o ile sie da Witam wszystkich. Ostatnio spotkałem sie z podobnym problemem. Musiałem odczytać i zapisać zawartość 24c08 (1024 bajty). Niestety :( programy przykładowe załączone...
Witam Mam problem z zapisem pamięć flash w atmedze 16. Pamięć po prostu się nie zapisuje. void BOOTLOADER_SECTION boot_program_page (uint32_t page, uint8_t *buf) { uint16_t i; uint8_t sreg; // Disable interrupts. sreg = SREG; cli(); eeprom_busy_wait (); boot_page_erase (page); boot_spm_busy_wait (); // Wait...
39SF010 ma dłuższy adres , więc inny układ pinów i musiałbym przełączyć prototyp. Jak je przetestuję, to napiszę. Już przetestowałem, wszystko śmiga jak należy. [url=github.com/vidmo91/644_parallel_mem... to, co zrobiłem na GitHuba. Może komuś przyda się domorosły programator pamięci równoległych. Trzeba dopisać trochę kodu, żeby stało się to...
Witam, Zauważyłem że podczas zapisu programu do pamięci flash przez avrdude, pamięć EEPROM automatycznie jest kasowana. Robię to komendą: C:\avrdude2\avrdude.exe -p ATMega168 -c usbasp -U flash:w:C:\Users\Mistrzu\Doc... -F Oczywiście można dopisać aby za każdym razem dogrywał także zawartość do...
"Wcześniej udało mi się odczytywać temperaturę z DS18B20 z tym, że po wlutowaniu w płytkę odczytuje mi cały czas 127.9" No to zrób "undo". Albo sprawdź co się zmieniło. Może inny opornik podciągający? Może Vdd niepodłączone do masy? Masz funkcję "void write_byte(char val) //zapisj bajtu do dallasa " To zapisuje tylko do RAM- a nie ma przepisania do...
Witam proponuje ci DS1990 lub 2401 te same układy inna obudowa. posiadają nie powtarzający się nr. podłączasz rezystor 4,7k do 5v data do opornika masa do masy. Data podpinasz do jakiegoś portu ustawiasz go jako 1-wire w programie resetujesz ten port potem wysyłasz 33h i układ wysyła ci nr a ty go zapisujesz do tablicy. Reszta to program i wszystko...
Witam, Od kilku dni nie mogę dojść dlaczego nie działa mi odczyt z AT24C08AN. Za każdym razem ATMega162 odczytuje mi wartość FF. Funkcje I2C_start2(), I2C_stop2(), I2C_write2(), I2C_read2() na pewno są poprawne bo bez problemu obsługuję nimi PCF8583. Podłączenie elektryczne na pewno OK. Próbowałem na 3 różnych sztukach eepromu AT24C08AN i zawsze to...
ditomek -> masz rację,że ta dyskusja nie ma celu. Dodatkowo powiedziałbym, że ani kolega Balu ani nikt inny w tym ja nie chce zrobić z ciebie ostatniej "lamy" jak to określasz... .... to raczej ty sam rozbisz z siebie to co oznacza to dziwne określenie, ponieważ już kolega Balu podpowiada ci, że nie można traktować zmiennych eram jak zwykłych zmiennych...
nie bede za ciebie szukac. Podam ci jedynie: http://szukaj.elektroda.pl/search.php?mo... co do twojego problemu nie programuje w c, rozumiem ze chcesz zapisac to do pamieci eeprom. Radze ci pierw zrobic obsluge lm37, pozniej dodac funkcje ze jak zmieni sie temperatura to zapisuje ja do pamieci eeprom. Napewno zapis do pamieci...
Siemanko, mam problem z zapisem i odczytem danych z eepromu. Mam Atmegę168 taktowaną kwarcem 16MHz i mam w niej funkcje zapisu do zewnętrznego eepromu 24C64. Jednak program dochodzi tylko do momentu wysyłania 0xA0 i koniec... cisza. Gdy zmieniałem kwarc na 4Mhz Zapis i odczyt ładnie się wykonał. // procedura transmisji sygnału START void TWI_start(void)...
Witam, Dlaczego wartość odczytana z pamięci jest inna niż zapisana. Dim Licznik1 As Integer Dim Licznik2 As Integer ..... Writeeeprom Licznik1 , 1 ..... Writeeeprom Licznik2 , 2 Kazda zmienna integer/word okupuje 2 bytes (dwa bajty) w pamieci, a ty przeznaczyles/ograniczyles miejsce w eeprom tylko do 1 byte dla zmiennej 'licznik1'. Wpisujac wartosc...
Witam, postanowiłem "ugryźć" najpierw EEPROM. Więc napisałem sobie taki kod: main.c:15: warning: function declaration isn't a prototype main.c:25: warning: function declaration isn't a prototype Program zapętla się przy "while (!(TWCR & (1<<TWINT)));", gdy wywołuję "TWI_write(adres);" (gdzie adres=100). Wnioskuję to po tym, że na wyświetlaczu...
Czemu służy ? : eeprom_wb(300,UDR); Procedury obsługi tego przerwania (W ogóle procedury przerwań nie mogą być czasochłonne) nie mogą zawierać czasochłonnych operacji, gdyż po odebraniu jakiegokolwiek śmiecia, prawdziwe dane mamy z głowy na ten czas... Kod warto czasem wrzucić na symulator... Zapis do EEPROM można swobodnie przenieść do petli...
Witam. Krótko opisze mój problem jednym tchem czytam Wasze wiadomości. Bardzo proszę o pomoc. ATmega16, a więc niby jest nie zabezpieczony. Programator USB/ASP V2.0; program do odczytu bardzo dobry: Extreme Burner-AVR - przejrzysty łatwy. Procesor ATmega16L //8UA 1422K . Wylutowany z modułu suszarki BEKO ; MARKO17R S/N; 29632820003514. No to tyle symboli....
trochę to poprawiłem ale nadal nie działa, nadal liczy tak jak mu sie podoba. Prawdopodobnie błąd jest w tym wyliczaniu całki. Proszę pomóżcie!!:( #include <avr/io.h> #include <inttypes.h> #include <avr/interrupt.h> #include <avr/eeprom.h> #include <avr/signal.h> #include <string.h> #include <stdlib.h> #include...
Przy kompilacji jeśli próbuję skorzystać z eeprom_update_block() kompilator wywala undefined reference to `__eeupd_block_m16' niestety google nic o tym nie mówi, oczywiście biblioteka avr/eeprom.h jest załączona do źródeł. Częściowy kod programu: [syntax=c] struct time { uint8_t h; uint8_t m; uint8_t s; }; struct time closetime EEMEM={0, 0, 0}; struct...
Witam Mam następujący problem: Mój program ma robić coś takiego. T0 zlicza impulsy z zewnątrz, T1 mierzy czas, w przypadku przepełnienia T0 przepisujemy wartość T1 do tablicy #include <avr/io.h> #include <compat/deprecated.h> #include <util/delay.h> #include "lcd.h" #include <avr/io.h> #include <stdlib.h> #include...
Skoro masz aktualny czas to pewnie jest w układzie jakiś zegar czasu rzeczywistego... Urządzenie wystawia po uruchomieniu stan wysoki który ty odbierasz na uC i odczytujesz aktualny czas i zapisujesz go sobie do jakiejś zmiennej... Kiedy urządzenie się wyłącza znika stan wysoki a ty odczytujesz znowu aktualny czas... Wyliczasz jak długo urządzenie pracowało......
te instrukcje zerują bit w rejestrze ok. wielkie dzięki ale czytając książki na temat programowania tego ustrojstwa atmega było napisane że wystąpienie przerwania w trybie przechwytywania następuje w skutek wykrycia zmiany sygnału na wejściu icp1 gdy timer ustawiony jest w tryb przechwytywania ale mam teraz pytanie (problem)?-brak weny twórczej to kilka...
Witam skonfigurowałem wstępnie adxl345, jednak wyniki są błędne. Czy ruszam akcelerometrem czy ie pokazuje jakieś wartości na wyświetlaczu lcd. Mój sprzęt to: Atmega16A 1Mhz (testowane również na 8Mhz). Wyświetlacz LCD, ADXL345. W programie część na pewno jest dobrze napisana, gdyż jak zmienię szybkość SPI to na wyświetlaczu szybciej wyświetlają się...
vibrasphere pisze wyraźnie że chodzi o RAM a nie EEPROM a RAM może zapisywać ile sobie chce, byle nie byłaby za wolna aby nie spowalniała pracy procka.
Witam! Zbudowałem sobie prosty webserver na Atmega16. Mam na pokładzie 33kB SRAM i 128kB EEPROM, ENC28J60 jako karta sieciowa. Napisałem już cały stos TCP/IP który korzysta z tej zewnętrznej pamięci. Wszystko pięknie działa, zaimplementowane ARP, ICMP, IP, TCP, UDP, DNS i DHCP. Chciałbym zrobić implementacje serwera HTTP. Napisałem testową funkcje która...
Witam, Staram się napisać własny bootloader który ma odczytywać plik z karty SD. Ale nie mogę uporać się z problemem, jak wrzucić bootloader pod odpowiedni adres w pamięci. Na elektrodzie znalazłem że w AVRStudio (4.X) robi się to przez Project->Configuration Options-> Memory Setings i tam wpisuje: Memory Type: FLASH Name: .bootloader...
Kolego (at)sp5gbw o ile rozumiem to program ma działać tak: - po uruchomieniu wczytuje z EEPROM ilość cykli (od 2 do 30) i generuje je czyli generuje przez czas Ta sygnał 5kHz z odstępem Tb między sygnałami. - po wygenerowaniu tego sygnału sprawdza stan klawiatury w oczekiwaniu na zmianę ilości cykli. Jeżeli taka nastąpiła zapisuje ją do EEPROM. Zweryfikuj...
http://obrazki.elektroda.net/80_12772398... Nigdy do tej pory nie zamieszczałem tu swoich projektów, to jest moja pierwsza publikacja na elektrodzie, więc proszę o wyrozumiałość jeśli coś niejasno opisałem. Chciałem pokazać Wam zegarek w moim samochodzie zaprojektowany przeze mnie od podstaw. Do tej pory był najprostszy typ zegarka (godzina...
atmega16 eeprom eeprom atmega16 zapis odczyt eeprom
wymiana samsung świetlówki trzeszczenie zasilacza wentylatora mercedesa
czemu zalewa swiece czemu zalewa swiece
Odbieranie rozmów WhatsApp na Xiaomi Redmi Note 12 Pro bez odblokowywania Wycieraczki Citroen Jumper działają tylko na szybkim biegu - przyczyny i rozwiązania