Witam Czy jest możliwość stworzenia tablicy która będzie zapisana w pamięci eeprom ?? Mam ta tablice ( raczej dane jakie mam w niej umieścic) i jak nie ma innej opcji wpiszę je ręcznie w edytorze hex.. korzystam z avrstudio i nie bardzo wiem jak mogłbym sobie z tym poradzić ten uC ma 512 bajtów moje dane zajmują troche ponad 300 chodzi mi o przykład...
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.
Przyczyną błędu może być format pliku do zaprogramowania. Typowo jest to plik z rozszerzeniem ".hex" - zawiera on oprócz zawartości pamięci dane dodatkowe, jak adresy miejsc zapisywanych czy sumy kontrolne. Przy wykorzystaniu całej pojemności taki plik ma objętość większą, niż pojemność pamięci docelowej. Innym formatem jest plik z rozszerzeniem ".bin",...
[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.
C_rtd_i = eeprom_read_word(&C_rtd[i]); 4\/3!!
Fonty muszą być w Flash ROM gdyż tak działa kod z biblioteki. Jedyną możliwością jest jej przeróbka - musisz mieć pełną wersję BASCOM AVR i znać kod maszynowy - a wtedy możesz je przenieść w inny obszar pamięci. Jak już będziesz zdecydowany na przeróbkę to w glcdks108.lib znajdź procedurę _gwrite_lcdchar . Bascom Ci nieco ułatwi zadanie procedurą _getbytefromrom...
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 czy odczekujesz, aż pamięć zdąży wykonać operację zapisu? Potrzeba jej na to ok 10ms. Byćmoże symulator to tego nie uwzględnia. Wstaw delay między poszczególne operacje zapisu do pamięci, lub testuj flage zakończenia zapisu do pamięci.
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++;}...
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...
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...
Nie napisałeś nic, co mogłoby pomóc rozwiązać problem. Nie wiadomo jakiego typu jest zmienna ramka2, co zwraca funkcja USART_Receive(). Może być to zmienna ośmiobitowa, a jeśli tak jest, to taki token się w niej nie zmieści, choćbyś nie wiem jak się starał. Jeśli token ma długość 6 bajtów, to musisz je odczytać, zapisać np. do tablicy i tą tablicę zapisać...
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ć...
Próbowałem 200kHz, 100kHz, 50kHz. Za każdym razem efekt ten sam. To może spróbuj zajrzeć do PDF-ka tej pamięci i zainteresuj się mechanizmem PAGE WRITE, bo to on jest źródłem Twoich kłopotów.
1. Co to za funkcja "substr4"? Pomyłka przy przepisywaniu? 2. Jak zwalniasz pamięć przydzieloną przez malloc? Jeśli zapomniałeś, to będzie kaszana. 3. "strcmp(*id_1,*id_2)" -> id_1 oraz id_2 to tablice. Odwołania do nich traktuje się jak wskaźniki do pierwszego bajtu *id_1[0], więc powinno być "strcmp(id_1,id_2)" 4. Na twoim miejscu napisałbym samodzielnie...
Z EEPROM'u nie skorzystasz (WriteProtekt). Pin 2 i 6 dla MAX232 nie poprawione. R1 nie zmieniony. AVCC i AGND nie podłączone. Uczysz się naszym kosztem ... przepatrz pierwszy lepszy PDF dotyczący układu uruchomieniowego dla AVR i dowiesz się jak podłączyć MAX'a, podłączyć prawidłowo RESET i EEPROM.
Ciesz się , że to wogóle działa :D Przypatrz sie 1-szej linii i napisz , czy po jej wykonaniu linia SDA będzie rzeczywiście w stanie niskim :?: void EEPROMStopTransmition() { EEPROM_PORT |= ~EEPROM_SDA; //***************** EEPROM_PORT |= EEPROM_SCK; EEPROM_PORT |= EEPROM_SDA; } Piotrek
Dlatego też postanowiłem usypiać scalaka kiedy tylko się da i jak najgłębiej jak w danej chwili można. Dlatego też rozwiązanie TWI na przerwaniach jest dla mnie ważniejsze niż czas jaki poświęcę na opracowanie kodu w stosunku do metody czekania w pętli na kończenie poszczególnych rozkazów TWI. Czy o to Ci chodziło? Tak o to chodziło, i tak tylko podpowiadam...
Tak teraz wszystko jest poprawnie.
Za każdym razem, kiedy wgrywam program na procesor za pierwszym odczytem pojawiają się właśnie śmieci, a nie dane, które były wcześniej zapisane, więc chyba jednak w momencie programowania procesora właśnie "wpalam" eeprom. Wiem tylko, że można uniemożliwić zapisywanie eepromu w fusebitach. Niezupełnie, w fusebitach można tylko ustawić, aby nie kasował...
Na początek proponuje darować sobie TSOP1736. Chyba, że masz gwarancję że w okolicy nikt nie będzie używał żadnych pilotów podczerwieni. Wszystkie chodzą na 36 kHZ i będą wzbudzać lub zakłócać twoje urządzenie. Lepiej zastosować jakiś układ IRDA i zestawić prostą komunikację szeregową na UART. Masz wtedy jeden port szeregowy w PC i drugi port szeregowy...
Nie jestem pewny o co tak naprawdę koledze chodzi. Czy to jakoś pomoże? Dim tekst as eram string*30 Najprostszy sposób na zapis stringa w pamieci eeprom. pozdrawiam Tomek
A wgrałeś zawartość EEPROM?
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.
no to daj (unsigned int *)a w wywołaniu procedur eeprom_xxx
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...
A istnieje jakiś sposób programowania przez UART tylko wewnętrzną pamięć EEPROM ? np. w Atmega8 ? Oczywiście chodzi mi o opcję bez bootloadera.
Witam. Mam pytanie i prośbę o pomoc zarazem. Mam w zamyśle "stworzyć/odszukać" w Borlad C++ pulpit, w którym uzupełniało by się tabele albo poprostu pola edit. np.: Nr. Wartość (0-255) 001 - 123 002 - 035 003 - 224 --- --- --- Następnie tak uzupełnioną tabele po kliknięciu w button poprzez RS232 chciałbym umieścic w pamieci eeprom mojej atmegi8, z zachowaniem...
Odczytywałeś programatorem zawartość EEPROM? Zacząłbym właśnie od sprawdzenia, czy dane rzeczywiście tam są.
Przechowuj dane w pamięci RAM
Tak, jest wiele tematów na których podstawie stworzysz coś osobistego co pomoże ci. Później możesz śmiało wrzucić to na forum tylko pamiętaj o tych podstawach (konsensatory, masa, AVCC, VCC itd.), które wielkokrotnie były omawiane.
... 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
ldi r16,(1<<TWPS0) sts TWSR,r16 ldi r16,18 sts TWBR,r16 ret z tego wychodzi preskaler 160 czyli przy 1Mhz sygnał clk ma czestotliwość 6250Hz. niby nic nie szkodzi że tak wolno ale sprubuj dać wiecej. dodał bym jeszcze ldi r16,(1<<TWEN) sts TWCR,r16 w procedurze inicjalizacji i jakieś jakieś małe opuźnienie. jak bede w domu...
Masz na myśli książkę „Programowanie mikrokontrolerów AVR w języku BASCOM”. Mam fajna. Kilka pytań odnośnie samego układy: 1.Jaki zegar to taktuje, 4, 8 MHz. 2.Po co ci zewnętrzny EEPROM jak ATMEGA8 ma w sobie 512B, co przy kompresji danych ASCII daje 576 znaków tekstu. 3. LCD 16*2 jest za wielki lepiej 8*2, będzie to łatwiej schować. Dodaj...
Witam, problem kompilacji bootloadera powrócił - prosiłbym teraz o wersję 16MHz dla atmegi8, tą z możliwością programowania EEPROMu i LOCKBITów :) W załączniku Atmega8, 16Mhz,9600bps,eeprom,lockbit :wink:.
sprawdź to : lcd_putsf(*text);
Chodzi mi o sprawdzone rozwiązanie sprzętowe tym bardziej, iż nie mam wolnych portów w mikrokontrolerze a chcę zwolnić użytkownika z potrzeby zapisywania wrażliwych danych przed wyłączeniem zasilania. Oczywiście można by zastosować RTC (z RAM) i podtrzymaniem lub FRAM ale problem braku wolnych portów wyklucza to rozwiązanie jak... i zapewne wszystkie...
W pętli głównej ostatni if nie ma end if'a. Napisz mi jaki dokładnie jest to typ pamięci, powinno być jeszcze opóźnienie przy zapisywaniu do pamięci. Jeśli masz w tym układzie wyświetlacz LCD to spróbuj najpierw transmisji po rs w pętli głównej wstaw procedure odbioru znaku i od razu go na wyświetlacz, wtedy będzie wiadomo czy komunikacja z kompem chodzi...
EEprom programujesz plikiem *.eep z projektu, jeżeli jest wykorzystywany np. jakieś wstępne ustawienia
uint8_t EEMEM uk_mem 1. W tablicy zapisuje wartości hex w formacie '0x00' do '0x0f'. Może lepiej będzie zapisywać je w formacie int 0-15, bo zajmie to mniej miejsca w pamięci? Co to są "wartości hex w formacie '0x00' do '0x0f'"? Łańcuchy znakowe, czy liczby 0 - 15? 2. Zmienna 'czujnik_mem' mówi czy w układ będzie włączony czujnik i przyjmuje wartości...
Taka rejestracja może zająć napeweno więcej niż 3 bajty. Jeśli przykładowo w ciągu minuty otwarte zostana te drzwi to musisz zapisać pełną date i czas z sekundami co da 6 bajtów dla zdazenia - dzień, miesiąc, rok, godziana, minuta, sekunda. Dodatkowo bajt zdażenia i zabezpieczenie poprawności wpisu CRC. dlatego myslałem że zrobie to tak: będe zapsywać...
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(..)...
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...
. 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...
Spróbuj ustawić BOD, też tak miałem gdy go nie używałem.
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
Operacje na eeprom poprawione. Wynik; 7706B. Czy można przenieść znaki specjalne [Chr] do pamięci eeprom?
eesave służy do tego żeby podczas kasowania mikrokontrolera pozostawić zawartość eeproma i ma się to do obecnej sytuacji jakoś nijak . Kolega zapisuje eeprom nastawami i chce wprowadzić do eeproma nastawy początkowe ,które by czytał podczas pierwszego uruchomienia mikrokontrolera po zaprogramowaniu . zapisanie eesave da jedynie tyle że przy zmianie...
Możesz zrobić podtrzymanie zasilania na kondensatorze i monitorować stan na jakiejś nóżce przed tym układem-tam zniknie zasilanie najpierw i wtedy wykonać procedure zapisu stanu do eeprom.
... chciałbym żeby zmienna w EEPROM przy starcie miała wartość np 100 a na razie ma 255. Może jakieś porady? Zaprogramuj ją programatorem lub na początku programu zapisz ją do EEPROM.
Przed kontynuacją realizacji tego projektu proponuję pewien eksperyment. Załóżmy, że dźwięk będzie odtwarzany z prędkością 4000 próbek na sekundę - to połowa częstotliwości z jaką zwykle przesyła się mowę w najsłabszych kanałach. Przy takim tempie odtwarzania, cała zawartość pamięci EEPROM zostałaby odegrana w czasie 128 ms. Proponuję spróbować przyciąć...
Czyli jeżeli wgram hex do arduino, a z arduino przesle plik .ino do atmegi, to atmega go zrozumie (mimo ze to ino a nie hex) czy nie zrozumie? Czy nie ma tu reguły? Bo nie wiem czy arduino jest też jedna z opcji zapisywania flash i eeprom.
To wytłumaczę to tak. Tak jak w pętli jesst to wskazane zapisuje bity od 0 do 100 potem zostawia pamięć nie ruszoną do 255 i znowu zapisuje 100 bajtów i znowu do 255 nie tknięte i tak w kółko aż do końca pamięci. Podmień te dwie funkcje z tej biblioteki. Błędem w tej bibliotece jest używanie makr "bit_is_set()" do sprawdzania stanu bitu, ponieważ makro...
A google nie działa?. Twój problem jest problemem twoim i indywidualnym. Wybudzać procek możesz również Uartem. Na niewielka ilość danych to tak jak tmf powiedział fram lub nawet eeprom..
Ja mam podobny problem. Przy programowaniu Fusebitów na Atmega168P też mi wyskakuje błąd. Ale niemniej fusy programują się poprawnie więc po prostu to ignoruję i odzielnie programuję fusy i flash/eeprom.
EEPROM 256kb (32KB) został podłączony i uruchomiony poprawnie. Temat zamykam.
Strasznie szybko sobie zjedziesz EEPROM - ma przecież tylko 10 000 razy cykl zapisu gwarantowany, czyli po 10 000 zmian możesz mieć poważne problemy - komórka padnie. Albo zmieniaj co jakiś czas komórki, albo zapisuj dane przy wyłączeniu urządzenia - dodaj większy kondensator podtrzymujący zasilanie i jak wykryjesz spadek napięcia zasilania przed kondensatorem...
Fakt, pomylilem z EEPROM.
No to chyba będę musiał się w atmegę16 wyposażyć. Mam już 6,5KB/8 a jeszcze troszkę muszę dopisać. Czy mógłbym prosić o podrzucenie jakiegoś sensownego linku jak pisać kod optymalnie pod kątem rozmiaru pliku wynikowego po kompilacji? Ewentualnie jeszcze coś o zapisie do eeprom.
W pliku "stdint.h" znajdziesz: typedef signed char int8_t; typedef unsigned char uint8_t; Jest to po prostu definicja typów ;) uint8_t to po prostu zmienna unsigned char nic więcej ;) A EEMEM to zmienna przechowywana w pamięci eeprom.
Zamieniłem adresy, ale niestety bez zmian. Coś musi być źle, ale co? Co zauważyłem, to za każdym razem program ustawia max wartość pwm1a czyli 250. Może ja coś źle w kodzie zrobiłem? A może wartości pwm nie da się zapisać w eepromie? Bo próbowałem na różne sposoby i za każdym razem to samo - nie pamięta ustawienia zewnętrzny eeprom.
Datashee atmega8 ...write/erase cycles: 10.000Flash/100.000 EEPROM.. czyli 5.000 cykli gwarantowane
Witam, Od niedawna mam mały problem z zapisem do eepromu typu 24c64. Odczyt działa mi elegancko, ale z zapisem mam już mały kłopot. Próbowałem różnych podejść do sprawy, ale wszystko poszło na marne. Najlepiej zobrazuje to kod programu: Proszę o pomoc, bo już nie mam co wymyślić. O co tak na prawdę mi chodzi. Po wysłaniu porcji danych (jednego bajtu)...
Chcesz wpakować program w EEPROM ??? [syntax=bash]-U eeprom[/syntax] Nie wejdzie!!! http://www.ladyada.net/learn/avr/avrdude...
U mnie to jest tak: 144, 145 PCF8591 162, 163 PCF8563 160, 161 EEPROM 24LC32A
Kwestia ile takich sekwencji próbek na raz chcesz zapisać. FRAM jest fajny, bo praktycznie niezużywalny, ale drogi. Z drugiej strony pamięci EEPROM mają ograniczoną ilość zapisów, ale np. 100tys. prawdopodobnie i tak cię nie ogranicza. Jeśli potrzebujesz gromadzić dużo próbek to karta mikroSD wychodzi tanio, a przy pewnych założeniach jej obsługa jest...
znaczy ze z pamieci SRAM dane same znikaja w trybie idle lub sleep? skoro piszesz w C, to co cie obchodzi w jaki sposob realizowane jest adresowanie posrednie? 4\/3!!
Witam. Przecież w wylistowanym programie masz zapis i odczyt pamięci EEprom. teedd
dokladnie, to powinno rozwiazac tylko nie rob tego w petli (bo po co)
Tyle że ja chcę zrobić to na zewnętrznym eepromie. Mógłby ktoś napisać mi kawałek kodu, (w bascomie) który zapisywał by zmienną string przez i2c do zew. Eepromu?
a po co się upierać przy writeeprom, skoro można zadeklarować sobie zmienną wprost w obszarze pamięci EEPROM i później z niej korzystać prawie tak jak ze zwykłej zmiennej w RAM Dim Zmienna As ERAM Byte a później gdzieś w kodzie: Zmienna = Obroty ' w ten prosty sposób zapamiętujesz w EEPROMIE swoje obroty albo Obroty = Zmienna ' czyli np po starcie odtwarzasz...
Dobra, juz sobie poradziłem :) teraz działa :)
Zapis i odczyt z eepromu jest opisany w dokumentacji gcc Nie GCC tylko AVR-libc ;) [url=http://www.nongnu.org/avr-libc/user...
Więc w tym momencie mam 2 wyjścia: 1.Zmiana procka na większy. 2.Zewnętrzny EEPROM, bo Atmega8 ma tylko 512 bajtów wewnętrznego EEPROM'a. Co byś polecił w przypadku takiego projekciku?
Zbudował już to ktoś??? Ma może ktoś działający rezurektor i mógł by zgrać z niego soft (do pamięci flash i eeprom)???
Odpowiedź znajdziesz w danych układu. Te 2.56 V ma bardzo dużą tolerancję. Nie można polegać na tej wartości. Jeśli 5V o dokładności 2..5% podzielisz dzielnikiem 1%, to i tak będziesz miał dokładność 2..5%. Jeśli pomiar ma być dokładny - albo użyj źródła napięcia odniesienia (np. TL431), albo przynajmniej kalibruj każdy uC przez zmierzenie Vref i zapisanei...
Zmiana OSCCAL na maksa może spowodować problemy przy zapisie do EEPROM i FLASH. Możesz trochę zrobić wstawek asemblerowych w newralgicznych miejscach programu.
Niestety nie wiem jak podłączyć programowaną atmegę do mojego programatora Jest coś takiego jak dokumentacja techniczna. Znajdziesz tam np opis pinów układu. Programator podłączasz łącząc każdą jego linię (mios/mosi/sck/reset/gnd oraz ewentualnie vcc) z odpowiadającymi im pinami procesora. Druga sprawa, piszesz "wiele plików" - do pamięci programu...
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
Mam takie[syntax=c]// Set TWI boud rate TWBR = 0; // 0 - bardzo szybki, 255 = 14 kHz [/syntax] Chyba zaczynałem od 255 i doszedłem do 0. Zawsze możesz zwolnić tą magistralę. Ja mam kwarc 7,38MHz a EEPROM przy procesorze i oporniki 4k7 do VCC
Mam jeszcze jedno pytanko: Jak zaprogramować wewnętrzny EEprom w ATmega8? W PonyProg wybieram Data memory (wybieram plik jaki ma być zapisany *.hex) daje mu write data memory (EEprom) niby coś zaprogramuje a jak daje mu żeby odczytał co jest w EEpromie to są same FF.
Chip Erase kasuje tylko pamieć flash i eeprom a nie fuses które można tylko odczytać lub wpisać nowe. Pozdr. N.
Tak, ATmega8 posiada wbudowaną 512 bajtów pamięci EEPROM.
tak ale jak to potem do eepromu wpisać
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.
Jak to "+" z "-"??? Co zwarłeś? Piny procka? Wyporwadzenia zasilacza? Mogło sie coś zepsuć, bo mega8 ma dwie pary wyprowadzeń zasilania. Jeśli np. na GND była masa, a na AGND wskoczyło +5, to nie wróże dobrze kości. Ale, skoro da się poprawnie programować EEPROM... to może masz włączone jakieś LOCK BITS?
Ja korzystam z stk 200/300 z allegro. Wrzucasz plik hex i eeprom.
Ale się uparliście o ten kalendarz :P A takie pytanie. Czy po zapisie flasha, jeśli w eepromie siedzi jakaś wartość od PWM-a, to trace tą wartość - eeprom się zeruje?
Kontrollerlab. Trochę dziwny, ale idzie się przyzwyczaić. USBasp jest obsługiwany przez avrdude bezproblemowo. Spróbuj skompilowac i wrzucić program z konsoli, dowiesz się czy wszystko jest ok. avr-gcc -O3 -mmcu=atmega8 program.c avr-objcopy -O ihex -R .eeprom a.out program.hex Wrzucenie programu (możliwe że będą potrzebne uprawnienia roota): avrdude...
Zapis do EEPROM jest wywoływany przez zwarcie pinu PD2 (INT0) do masy, co wywołuje przerwanie. Nie jest w przerwaniu które jest wywoływane co 0,125us. --- Pozdrawiam, Michał
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...
Ok Dzięki spróbuję tak zrobić
Czy tym układem dam radę przesyłać dane przez I2C ? I do czego służy ten dodatkowy eeprom ? :)
odczyt nie niszczy eeproma
Flash: avrdude -p atmega8 -c usbasp -P usb -U flash:w:flash/matrixclock_ht1632_atmega8... Eeprom: avrdude -p atmega8 -c usbasp -P usb -U eeprom:w:eeprom/matrixclock_by.bin:r Fuse: avrdude -p atmega8 -c usbasp -P usb -U lfuse:w:0x24:m -U hfuse:w:0xd1:m
Ooooo! Robi się jaśniej! ;-) Jaki eeprom? Jaka szybkośc uarta?
Tyle że u mnie procesor ma jeszcze spory zapas mocy obliczeniowej. Przetaktowałem żeby SPI było szybsze. A tu Ci niespodzianka: Przy 24MHz wszystkie peryferia włącznie z EEPROMem w ATMega8-16 zasilanej z 3,0V działają prawidłowo już od 2 lat. PS. 2 lata temu XMEGA była może w planach więc nawet nie myślałem o tym. A jakiś ARM czy coś to za duża różnica...
Kompilowane pod asemblerem AVRasm2 od najnowszyego AVRStudio. Przeznaczenie pliku eep jest do wewnętrznego EEPROM mikrokontrolera, bez jego zaprogramowania robocik ma prawo wariować, z tego co wyczytałem w pliku źródłowym. To nie jest pod WinAVR, ewentualnie avrdude, ale trzeba czytać dokumentację jak się programuje EEPROM. Polecam : http://www.amwaw.edu.pl/~adybkows/elka/i...
Czyli tak - dajesz Atmelka zależnie od potrzeb ATTiny2313, ATMega8 lub ATMega16 /8515/8535 itp...(portów hohohoho), do PC łączysz się przez: 1. SPI/USI<>LPT (wersja nie wymagająca dodatkowych elementów), PC pracuje jako MASTER, ATMEL jako SLAVE (ten układ składa się TYLKO z procesora, jakiegoś kondensatorka odsprzęgającego zasilanie) 2. UART<>RS232...
Tak jak w temacie, chce zapisać zmienną typu string 80 znakową do 24c16, czy musze to jakoś konwerterować, czy eeprom "przyjmie" stringa ? Procek to atmega8
atmega8 eeprom atmega8 szeregowy eeprom wewnętrzny eeprom atmega8
simson ładowania chińskie testery akumulatorów zablokować windows update
creative audigy sb0090 prexer instrukcja
HardSPL dla HTC Kaiser: Instalacja i Wskazówki Przełącznik funkcji piekarnika Siemens HE48E54/01 nie działa - przyczyny i rozwiązania