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ć.
a spróbuj, czy puści tak: EECR=(1<<EEMWE); EECR=((1<<EEMWE)|(... a tak na marginesie, czemu 2x inkrementujesz WriteAddress ??
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...
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...
zapis do eeproma w atmedze16 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 EEPROM_read(unsigned int uiAddress) { while(EECR &...
(at)mas24 Do tej pory wszystko masz w SRAM, więc możesz to używać jakkolwiek chcesz. Natomiast po skopiowaniu do EEPROM już nie. TFunkcja kol. (at)michalko12 oczywiście kopiuje wszystko do EEPROM, na lokalnej kopii w SRAM ciągle możesz pracować. BTW, o ile dobrze pamiętam działasz też na XMEGA? Tam masz fajnie, bo EEPROM można zmapować w obszar przestrzeni...
Odczyt nie ma wpływu na żywotność EEPROM, zaś zapis - wg datasheet Write/Erase Cycles: 10,000 Flash/100,000 EEPROM
Zamieść fragmenty Twojego kodu. Może podczas zapisu rzutujesz int na unsigned char.
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,...
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...
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...
Fusebit EESAVE powoduje tylko, że EEPROM nie jest kasowany w czasie wykonywania polecenia chip erase. Dla większości programów do programowania AVR jego stan jest obojętny - jeśli widzą plik eep to i tak użyją go do programowania, chyba, że dodatkowo odznaczysz opcję programowania pamięci EEPROM. Napisz coś więcej o tych błędach - kiedy występują? Wyrzuca...
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...
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...
Witam. Jak programuję atmegę16 to tracę dane eeprom, czy to jest normalne ?
Korzystam z atmegi 32. Problem polega na tym że chcę zapisywać wartości do eeprom-u. Zapis robię co przerwanie timera2 od przepełnienia. I za każdym razem jak dochodzi do zapisywania do eeprom-u to mikrokontroler się resetuje. Czytałem coś o fuse bitach coś zmieniłem, ale nie pomogło. Trzeba oddzielnie eeprom i flash programować? Zestaw ewaluacyjny...
Drodzy koledzy... Napisałem niedawno program. Jest w innym poście. Nadal go rozwijam i aktualnie pisze funkcje do programowania. Poprostu chciałbym aby moje urządzenie było uniwersalne, programowalne :) Włącze urządznie, odpali się z parametrami domyślnymi, zaprogramuje je i jak zapamiętać je, żeby po wyłączeniu i ponownym włączeniu one nie zgineły....
Witam. Od pewnego czasu zacząłem się bawić w programowanie eepromu w atmedze i już napotkałem kilka nieprzyjemnych doświadczeń. Zacznę może od zapisywania pamięci eeprom. Mam kilka pytań z tym związanych, więc je ponumeruje :). 1. Jak to jest zapisałem do eepromu jakiś znak, potem go odczytałem. Żeby sprawdzić, czy wszystko gra wyświetliłem go na LCD....
Nie za bardzo mi to wychodzi.. powiedziałbym, że nawet wcale :( uint8_t adr __attribute__((section(".eeprom"))); (...) eeprom_write_byte(&adr, zm); i zm=eeprom_read_byte(&adr); -dziala, jednak zalezalo mi na nieco wiekszej wartosci
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...
Witam Mam problem bo nie mogę nakłonić attiny2313 do zapisu a następnie odczytu wartości z eepromu. Próbuję zapisać wartość liczba_LED do eepromu a następnie ją odczytać a wyświetlacz 7-LED zobrazuje to. Co robię nie tak? Z góry dziękuję za pomoc. #define F_CPU 4000000L #include <avr/io.h> #include <util/delay.h> int main(void) {...
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...
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();...
Witam. Mam takie pytanie, poniewaz uzywam pameici eeprom, a w nocie katalogowej od atmega16 pisze, ze EEPROM ma trwalosc 100k cykli. W moim programie chce aby jedna zmienna byla pameitana po wylaczeniu zasialnia i ponowanie wpisywana po zalaczeniu. Odczyt z eepromu mam wykonany raz na pcozatku programu, zas zapis pojawia sie za kazdym razem gdy wchodzi...
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.
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...
Dzięki. Jeszcze jedno pytanko. Czy taki zapis jest prawidłowy: [syntax=c]mem_year=eeprom_read_byte((uns... char*)(actual*3+2));[/syntax] actual to zmienna typu int
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...
właśnie też nie. Tzn gdy zrobie inaczej, najpierw coś zapiszę a później odczytam to jest ok. Czyli jak zrobie tak: int main(void) { DDRD=0x02; //0 to wejscie //1 to wyjscie GICR=(1<<INT0)|(1<&... //zezwolenie na przerwanie zewnetrzne INT0 MCUCR=(1<<ISC01)|(1<... //wjescie INT0...
Przyłącze się do tematu żeby nie zakładać nowego. Mam prośbę. Jestem raczej raczkującym programistą. Wczoraj cały wieczór walczyłem z obsługą 24c16 przez ATMEGA16. Mam takie procedury. ldi R16, (1<<TWPS0) out TWSR, R16 ldi R16, 10 out TWBR, R16 TWISTART: ldi R16, (1<<TWEN) | (1<<TWSTA) | (1<<TWINT)...
Witam Próbuję wysłać, a następnie odebrać bajt danych z pamięci EEPROM 24C04. Niestety zamierzony efekt nie występuje, a brakuje mi już pomysłów co jeszcze można poprawić, dlatego bardzo proszę o przeanalizowanie poniższego programu i wskazanie gdzie są błędy. Po wgraniu programu nic się nie wyświetla ani na wyświetlaczu LCD, ani na terminalu PC. [syntax=c]...
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...
http://obrazki.elektroda.net/74_12452644... Chciałem zaprezentować tutaj swoją pracę magisterską, jaką jest rozproszony system pomiaru temperatury z wykorzystaniem do transmisji danych technologii Bluetooth. System składa się z: - jednostki bazowej (na pierwszym foto) - jednostek zdalnych - komputera z odpowiednim oprogramowaniem Sercem jednostki...
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...
Dołączam gotowy projekt komunikacji avr z zew. pamięcią eeprom. Mam nadzieję że umiejętnie go wykorzystasz.
Witam, Mam problem z zapisem i odczytem do EEPROM łancucha zmiennych typu char Atmega162, avrgcc, program symuluje w winavr + hapsim + virtual port kit char ipaddress[16]; char ipaddress_odczytany[16]; char portnumber[6]; char portnumber_odczytany[6]; char phonenumber[11]; char phonenumber_odczytany[11];...
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...
Sprawdziłem dla pewności jeszcze raz, char pomoc Ponieważ Twoja funkcja void konwert2(char tekst nie dodaje znaku '\0' w tablicy tekst . Elementy Twojej tablicy to tekst i tekst (nie mylić z '\0'), a jaka będzie wartość komórki, która znajduje się za tablicą to czysty przypadek. Z kolei instrukcja LCD_WriteText(pomoc); będzie wyświetlać kolejne komórki...
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...
Problemu szukaj w warunkach if. Zasilanie nie ma w tym przypadku znaczenia. Poza tym przed zapisem (eeprom_write_byte(&pamt1,++t1)) do zmiennej w pamięci EEPROM (pamt1) inkrementujesz wartość zmiennej t1 (++t1). Nie wiem, czy tego właśnie oczekujesz. Poza tym nie operujesz na pozostałych zmiennych zarówno w RAM (t2, t3, t4), jak i w EEPROM (pamt2...pamt4)......
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...
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);...
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.
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??
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...
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
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,...
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ę...
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...
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...
LosRabinos Nie wiem, czy trochę poniewczasie, ale zawsze to coś. Odnośnie hardware-u: PCF8563 noga 3 (A0) do masy i wtedy (pierwszy listing): OD KIEDY PCF8563 MA NOGĘ ADRESOWĄ? Takowa jest w modelu pcf8583, w 8563 pełni ona rolę programowanego wyjścia sygnału etatowego i jeśli z niego nie korzystamy to powinna być pozostawiona jako niepodlaczona......
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...
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...
witajcie!! Problem wyglada tak: mam 24c08 i zapakowalem do niego plik: FFFFFF070707070F0F1F7FFFFF00FFFFFF3F1F0F... 03030303C3C3C3C3C38303030383C3C3C3830303... 3C3C3C38303C3C3030303C3C303030303FFFF000... 00080C0FFFF00FFFFFF8000000000000000FFFFF... 070793F1F001F3F7070703F1F00007F7F6060600...
atmega16 eeprom eeprom atmega16 zapis odczyt eeprom
zasilać konwerter multiswitcha demontaż peugeot bateria pilot centralne
toshiba satellite sterowniki toshiba satellite sterowniki
Zamienniki dla ULN2001D: ULN2003, ULN2004 i inne Diagnostyka pompy oleju w Seacie Leon 2