Przez analogię do tego: When WP is connected high to VCC, all write operations to the memory are inhibited. także uważam, że można bez rezystora.
Podłączyłem JTAGICE mkII do Atmega 32 w komercyjnym urządzeniu żeby ocenić czy procesor nie jest uszkodzony i jakiś cudem po moich eksperymentach procesor okazał się wyczyszczony. Przy pierwszych odczytach lock bity miały wartość 0xC0 (wszystko zablokowane), przy kolejnych zrobiło się 0xFF. Praktycznie urządzenie jest już stracone, procesor wyczyszczony...
Cześć, Postanowiłem zbudować sobie miernik poziomu CO2 w powietrzu, wykorzystując czujnik SCD41, komunikujący się po magistrali I2C. Według datasheetów Atmegi 16 oraz SCD41 powinno to być dość proste do ogarnięcia, jednak czujnik cały czas milczał jak zaklęty. Po podsłuchaniu analizatorem stanów logicznych co też się dzieje na magistrali wychodzi na...
Panowie ale jaja. Wstępnie przyczynami były sam stycznik oraz wyswietlacz lcd hd44780, a procesor wcale się nie zawieszał. Dzięki Panowie, gasiki próbowałem na cewkę i na styki, sterowanie zmieniałem 3021/3041. O ferrytach nie pomyślałem. nie mam, kupię. W każdym razie, dwa jakie mam, styczniki lovato bgp0910a, lutowane do druku maja dosyć silne drgania...
Tak. To plexa z grawerowanymi cyframi, cały projekt jest tu pod linkiem : https://obrazki.elektroda.pl/3515599500_... https://obrazki.elektroda.pl/1132266300_... https://obrazki.elektroda.pl/2617164600_...
To co obserwujesz akurat jest zupełnie normalne. Zauważ, że programowanie EEPROM polega na programowaniu wyłącznie bitów o wartości 0. Bity o wartości 1 ne są programowane, bo takie one są po operacji kasowania. Czyli jeśli masz w komórce 0xFF, a wpiszesz 0xFE to będzie ok, jeśli do komórki 0xFE wpiszesz 0x01 to otrzymasz 0x00 - dlatego, że najmłodszy...
Witam. na początku zaznaczę że nie jestem specjalistą w dziedzinie i dopiero zgłębiam i poznaje "tematy" związane z Arduino itp. Do kilku dni jestem posiadaczem płytki ATMega 2560 + ESP 8266 [url=https://pl.aliexpress.com/item/TZT-...
Witam walcze od kilku godzin z takim problemem przy zaniku zasilania kondensator podtrzymuje MCU i umożliwia mu zapis do eeprom zanik wykryty wewnętrznym komparatorem, no i układ działa ale jak szybko wyłączę i włącze zasilanie a jak zrobie to wolno to nie działa kod trochę zmodyfikowałem min wektor przerwania i dodałem funkcje testujące na lcd. Używam...
Witam. Mam problem z ta pamiecia. Mecze sie juz dwa dni i nic. Podlaczylem ja na jednej magistrali z PCF8583 (RTC) i ADS1100 (ADC) do uP Atmega 8. Zegar i przetwornik chodza bez problemu. Narazie uzywam programowej obslugi I2C w AVRGCC z biblioteki RKlibAVR... Pin A0 pamieci mam podlaczony do masy wiec adres pamieci na magistrali to 101000px, x=1(odczyt),...
Witam szanownych forumowiczów. Spotkałem się z bardzo dziwnym problemem na na Atmega 128. Napisałem program, który wpisuje dana do wewnętrznego eepromu pod wskazany adres a nastepnie odczytuje dana z tego adresu i wyswietla na LCD. Wszystko do tej pory jest ok. Problem pojawia się jak wgram nowy program i próbuje odczytać dana z tego samego adresu w...
Rozumiem, w takim razie, że zawsze warto używać _update, zamiast _write? To zależy co chcesz zrobić. Jak zainicjować EEPROM domyślnymi wartościami to obowiązkowo write. Jak zapisać blok danych uprzednio odczytanych z eeprom to zdecydowanie update. Zawsze można dać _update. Jedyna różnica pomiędzy _write i _update polega na tym, że _update sprawdza,...
W dokumentacji ATMEGA8 jest taki kod służący do zapisu do pamięci: 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); /* Start...
Witam! Zacząłem pisać program który odczytał by mi z układu 24c02 dane i zapisał je do pliku. Eprom się odczytuje i zapisuje mi do pliku tylko ,że każdy bajt w oddzielnej linii a nie w jednej. Oto kawałek kodu: Cls Lcd "odczyt epromu" K = 0 Buf2 = "" 'For Addressw = 162 'S=Dir( "*.txt") Open "i2c.txt" For Append As #3 ' Addressw = 172 For I = 0 To 255...
Oki pomylilem sie chodzilo mi o pin WP czyli write protect. Jest tez jeden problem otoz programem do zczytywania adresow magistrali odczytywal mi kilka adresow a nie jeden jak pin A2 wisial w powietrzu a po podpieciu go do plusa adres zmienial sie na jeden 168. Wczesniej zczytal mi adresy 160, 162, 164, 166, jednak adres 162 gryzlby sie z adresem PCF8583....
Witam Uruchomiłem przykład z tej strony http://tuxgraphics.org/electronics/20090... i wszystko działa tak jak powinno i mam możliwosc zdalnego sterowania z serwera na avr. Problem jest z tym że nie rozumiem w jaki sposób realizowane jest w podanym niżej kodzie załączanie i wyłączanie czterech portów atmegi. Pomimo...
'---------------------------------------... '---------------------------------------... '--------WAV PLAYER-----16kHz 8bit mono------------------------------------... '---------------------------------------... '---------------------------------------...
Witam Od kilku dni męczę sie z próbą odczytu temperatury z czujnika DS18B20 przy pomocy bibliotek rklibavr. Czujnik jest podpięty do portu PB0 w procesorze amtega8, rezystor podciągający ma wartość 4,74K dane zczytane z czujnika są wyświetlane na standardowym wyświetlaczu 2x16. Atmega pracuje na wewnętrznym oscylatorze 1Mhz, całość jest zasilana ze...
Witam, Mam problem z modułem bazującym na ATxmega32E5 (AVT1807, > atprogram -t avrispmk2 -i pdi -d atxmega32e5 info Tool avrispmk2 has firmware version: 1.17 Target voltage: 3.30 V Device information: Name: atxmega32e5 JtagId: N/A CPU arch.: AVR8_XMEGA Signature: 0x1e954c Lockbits: 0xff Fuses: 0xffffffffffffff...
Juz byl taki temat ale został zamknięty. Moj problem polega na tym ze nie moge ruszyc ds1820 w C z wykorzystaniem bliotek rklib do obslugi ds. #include <avr/io.h> #include<avr/interrupt.h> #include<avr/eeprom.h> #include<string.h> #include "lcd.h" #include "ds18x20.h" #include "delay.h" uint8_t gSensorIDs[OW_ROMCODE_SIZE];...
Ogólnie rzecz biorąc działa, ale nie mogę zaimplementować zatrzymania/uruchomienia odliczania w podprogramie Zegar: oraz jak zrobić aby np po ustawieniu Ustawczas ponad 60 sekund pokazywał mi 1min i cośtam sekund i pokazywał to odpowiednio na lcd. Właśnie podczas pisania wpadłem na to że gdy Jakiczas jest > 60 then Minuty +1 - to chyba to? Ale jak...
Witam Mam płytkę Loggera GPS + SD + PCF8563. Jeśli chodzi o GPS i zapis na SD wszytko jest OK. Problemem jest ( i to pierwszy raz się z czymś takim stykam ) odczyt danych z z układu PCF8563. Otóż dla pewnych wartości sekund, odczytana wartość czasu - godziny jest większa o 40 ( czterdzieści ). Czyli jeśli czas jest 22:40:02 to jest wyświetlany poprawnie,...
Datashee atmega8 ...write/erase cycles: 10.000Flash/100.000 EEPROM.. czyli 5.000 cykli gwarantowane
Jak najbardziej write_block zapisze poprawnie - kluszem jest parametr size. Jeśli pobierzesz &id_czujnika i sizeof(id_czujnika) to będzie ok.
Spróbuj tak: odczyt [syntax=c] if(eeprom_is_ready()) { eeprom_read_block(&ustawienia,&ustawieni... } [/syntax] zapis [syntax=c] cli();//Globalna blokada przerwań if(eeprom_is_ready()) { eprom_write_block(&ustawienia,&ustawieni... } sei();//odblokowanie przerwań [/syntax]
Raczej odczytywanie danych z pamięci eeprom do zmiennej w eepromie nie jest dobrym pomysłem.
Używając etykiet w .eseg nie zastanawiasz się nad fizycznymi adresami, robi to za ciebie kompilator. Tym niemniej aby operować na tych danych należy oczywiście użyć "okienka podawczo - odbiorczego" w EEDR, zgodnie z notą katalogową ( http://www.atmel.com/dyn/resources/prod_... ). Wszystko z .eseg ląduje w pliku .eep, którym możesz za...
Nie odpowiada on jednak na pytanie: Full-swing czy Ext. Crystal Osc.? Aliści (jest takie słowo!) podejrzałem składnię polecenia generowanego przy wgrywaniu bootloadera i w nim lfuse=0b11110111 czyli 0xF7 zatem - Ext. Full-swingCrystal. Ustawienia fusebits są w pliku avrdude.conf dostarczanym wraz z MiniCore. Sekcja dla 328 wygląda następująco: [syntax=ini]#---------------------------...
Jeżeli kolega może podłączyć kwarc 16MHz, to po powrocie z pracy mogę załączyć sprawdzony program termometru z atmegą 32, wspomnianym kwarcem i obsługą LCD 2x16. Układ DS18b20, jak inne układy 1-wire wymagają bardzo dokładnych czasów, żeby się poprawnie skomunikować. Ja też trochę powalczyłem zanim zobaczyłem prawidłową temperaturę. Zgodnie z obietnicą:...
Komplikacje z utworzeniem zmiennej. (Microchp Studio, AVR128DA32) Pokrótce: Odmierzam czas . Wynik wpisuję do EEprom-u , wartość 24 bity Chcę edytować w/w wartość, wpisuję ja do zmiennej "wartosc32" i błąd : zmienna "wartosc32" umieszczana jest pod adresem 0x940C Gdy zaglądam do pamięci- nic nie jest nadpisane ( czyli "??" ) Odczytanie wartości z EEpromu...
Nie znam się na tym kodzie ... Nie wiem nawet jak to zaprogramować , ja tylko robie flash albo eeprom write. Naprawde nie rozumie .. ;(
LosRabinos Nie wiem, czy trochę poniewczasie, ale zawsze to coś. Odnośnie hardware-u: PCF8563 noga 3 (A0) do masy i wtedy (pierwszy listing): [syntax=c]// Funkcja zapisuje pojedynczy bajt danych do układu RTC na magistrali I2C void EEPROM_Write(unsigned char ucAddress, unsigned char ucData) { TWI_Start(); // Wysłanie sekwencji start //tutaj zmien na...
I2cwbyte &B1010_0000 To zapis binarny dopuszczalny przez BASCOM (spotkałem w kilku przykładach), można też oczywiście zapisać adres szesnastkowo i dziesiętnie (160). Rozumiem Twoje zdziwienie, bo sam tak zareagowałem... ale kompiluje się bez problemu. Poniżej zameszczam zmodyfikowany program... jednak też nie działa prawidłowo... niektóre liczby wyświetlane...
moim zdaniem inaczej, ale mnie wiele w nawykach uP drazni i chciałbym innego kodu. [syntax=c] struct { uint8_t pos1, pos2 .... } Pozycje; ... Pozycje pozycje; ... fun(){ eeprom_write_block (&pozycje, ee_adres_1, sizeof(pozycje)); } [/syntax]
http://obrazki.elektroda.pl/4553573800_1... Przy tworzeniu projektów z mikrokontrolerami, oprócz uniwersalnych płytek stykowych, często przydają się gotowe moduły testowe, które można szybko podłączyć. Można kupić takie w wielu sklepach, ale ich ceny są na ogół absurdalne, np. w Kamami sprzedają płytkę z ATmega128 za 109 zł! Poniżej...
Dziękuję że kolega od razu nie użył RTFM :) M32 -> Atmega 32. Funkcje pochodzą z avr/eeprom.h. Kompilator winavr połączony z avrstudio 4.
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...
OK. Wszystko rozumiem. Nie wiedziałem o tym makro, również o innych które namierzyłem. Muszę popróbować pisząc jakiś kod. ( zainteresowanie moje wynikało z tego. że zastanawiałem się, o co chodzi z podwójnymi podkreślnikami "__"w plikach *.h.) Ale mniemam że, tyczy to bardziej kompilatora. To nie moja "liga". Daje spokój. Narazie muszę dokończyć ten...
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...
Odczyt nie ma wpływu na żywotność EEPROM, zaś zapis - wg datasheet Write/Erase Cycles: 10,000 Flash/100,000 EEPROM
a spróbuj, czy puści tak: EECR=(1<<EEMWE); EECR=((1<<EEMWE)|(... a tak na marginesie, czemu 2x inkrementujesz WriteAddress ??
No np mozesz zrobić cos w tym stylu: Dim T(4) as byte Dim i as byte For i = 1 to 4 writeeprom T(i), i next i W T(1) - T(4) umieścisz sobie dane (mintuty, godziny czy co tam jeszcze chcesz)
A dokładnie na to działać tak. Po BT wysyłam komendę np "resetoff" po której wykonuje się digitalWrite(12, HIGH) oraz EEPROM.write (1, 1). Wtedy do przełącznika (tranzystora) idzie stan HIGH i obwód RESET - BT się ROZŁĄCZA.
Czyli Twój pseudokod to jest taka jakby kolejka FIFO? No niezupełnie. To co przedstawiłem buffer_is_empty() zwracająca prawdę lub fałsz) należy sobie dopisać. Sprawa jest dosyć prosta np. w przypadku USART. Wystarczy dodać bajt do bufora, później - jeśli bufor nie jest pusty - pobrać bajt i wysłać. W przypadku I2C sprawa jest o tyle skomplikowana,...
Nie miałem za bardzo czasu ale wracam do nierozwiązanego problemu. http://obrazki.elektroda.pl/7699775600_1... http://obrazki.elektroda.pl/3826926900_1... Tak wyglądają screeny po wywołaniu programu CRCGEN. Pliki wgrane programatorem działają poprawnie a przez bootloader tylko ten krótki (choć po przemieleniu ma także...
Widzę, że zapisujesz w koło w jednym miejscu: "eeprom_write_byte(1, humidity+1)". Zwiększ adres po zapisie do eeprom, to będziesz miał więcej danych do analizy. Dodane: (at)gps79, tak, tylko te "print() i println()" mogą autora zmylić. Może "printf("pomiar: %d temperatura: %d wilgotność: %d%%\n", numer, temperature, humidity)"?
Zrobiłem układ z posta http://www.elektroda.pl/rtvforum/topic17... Przy programowaniu procesora wywala mi błąd: C:\WinAVR-20100110\bin\avrdude.exe -C C:\WinAVR-20100110\bin\avrdude.conf -p m8 -P /dev/parport0 -c usbasp -U eeprom:w:C:\Users\pawel\Desktop\atmega-h...
Przy próbie wgrania pliku wyskakuje mi błąd. Atmega8 sprawna. Co robie źle ? C:\WinAVR-20100110\bin\avrdude.exe -C C:\WinAVR-20100110\bin\avrdude.conf -p m8 -P /dev/parport0 -c usbasp -U eeprom:w:C:\Users\pawel\Desktop\atmega-h... avrdude.exe: AVR device initialized and ready...
a wiec tak. jeśli dalej nie działa to mam jeszcze 2 pomysły. 1. zmniejszyć rezystory podciagające do 4,7Kohma 2.gdzieś czytałem że zapis w rejestrze TWDR jest możliwy tylko gdy bit TWINT w rejesrze TWCR jest zerem. gdy chcemy cos wpisać do TWDR to najpierw musimy go ręcznie wyzerować (bit TWINT). niech kolega spróbuje to uwzględnić. ja w moim programie...
Witam, mam problem z zapisem do EEPROM po wyłączeniu zasilania. Dokładnie to zapisuje mi tylko pierwszą linijkę poniższego kodu: SIGNAL(SIG_INTERRUPT1) { eeprom_write_byte(&eeprom_val http://obrazki.elektroda.pl/1904090200_1...
Witam serdecznie. Po przeszukaniu wątków nie napotkałem na rozwiązanie problemu o podobnej treści. Mianowicie dotychczas korzystałem z eepromu w ten sposób: Piszę językiem C: [syntax=c] extern EEMEM uint16_t eeprom_values[200]; EEMEM uint16_t eeprom_values[200] = {0,0}; //- zapis to zmienna = 85; eeprom_write_word(&eeprom_values[10], zmienna); //odczyt...
write eeprom atmega write eeprom write block
motorola oryginalna bateria komputer motorze fałszywy płomień
bateria niteo makita migają diody
Błąd silnika FMI97 - diagnostyka i możliwe przyczyny VitoCell Comferral 18 kW - kocioł kondensacyjny Viessmann