adres należy rzutować na wskaźnik. ostatnio był podobny temat Co masz na myśli? C znam średnio :cry:
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(...
Piszę program który w założeniu ma posiadać pamięć ustawień. Dokładniej jest w nim 11 zmiennych oraz 128 możliwości ich ustawień (128 banków pamięci dla tych 11 zmiennych). Każda zmienna jest 8bitowa. No i dostaje od kompilatora (WinAVR ) dziwne komunikaty: warning: pointer targets in passing argument 1 of 'eeprom_read_byte' differ in signedness W kodzie...
wychodzi na to, że Atmega 16 z jakiegoś powodu przekręca nadawany adres Jak się nie czyta dokumentacji tylko przegląda po łebkach - to tak to jest. Jak wysyłasz adres to bit 0 w TWDR jest bitem kierunku a bity 1-7 to adres. Twój adres EEPROM jest już 8 bitowy :) bo tak to producent w DSie zrobił (uwzględnił to że bit 0 jest kierunkiem) https://obrazki.elektroda.pl/1310316600_...
Na jednej szynie to działać nie będzie. Chyba że dasz dodatkowe bramkowanie na linii SCL, tak żeby zrobić coś na kształt Chip select. Prościej jednak będzie poszukać EEPROM-u innego producenta, który będzie miał inny adres.
Tak, może się tak zdarzyć, przy niestabilnym zasilaniu. Dlatego zawsze włączaj BOD oraz zmieniaj zawartość rejestrów EEADR na adres nieużywanej komórki EEPROM.
A swoja drogą to jakżeś to wyczytał? W dokumentacji jest napisane ze taka pamiec wymaga dwóch słów adresujących (MSB i LSB) i2cstart i2cwbyte adres 'adres fizyczny I2C pamieci i2cwbyte adres_msb 'starsza część adresu i2cwbyte adres_lsb 'młodsza cześc adresu i2cwbyte dane i2cstop I odczyt też tak samo: i2cstart i2cwbyte adres 'adres sprzętowy I2C pamieci...
poszukuje gotowych modulow na procku atmega, czyli procek wyswietlacz lcd klawiatura RTC EEPROM zasilacz itp.. gdzie mozna cos takiego dostac, prosze o wskazowki adresy firm itp dzieki
ale zaraz w koncu dziala wpisywanie czy nie,bo w 1 poscie piszesz ze nie dziala.. ale rzeczywiscie ,przyklad z dokumentacji u mnie nie chcial ruszyc... ten przyklad co ci podalem dziala napewno.. u mnie nawet z adresem 0x01
Siemano. Jeżeli chcesz umieścić np. tablicę jednowymiarową w sekcji EEPROM to możesz wykonać to w taki sposób const unsigned char Tablica[] EEMEM = { 0x3e,0x51,0x49,0x45,0x3e, 0x00,0x42,0x7f,0x40,0x00, 0x42,0x61,0x51,0x49,0x46, 0x21,0x41,0x45,0x4b,0x31 }; Niestety przy takiej deklaracji pierwszy element tablicy nie będzie znajdować...
Co do wysyłana szesnastkowych wartości przez RS'a. Możesz użyć funkcji sprintf(); Wyglądało by to następująco: sprintf ( Bufor, "%X:%X:%X:%X:%X:%X", MAC[0], MAC[1] .......); Bufor powinien mieć wielkość 6*3 bajtów. Zostanie w nim zapisana np. tak postać: "0C:2A:......" Aby wykorzystać tą procedurę musisz dołączyć stdio.h. Tu pojawiają się pewne schody....
Ty czy Kardaś? No ta w zasadzie popodmieniałem nazwy komend w przypadku mastera, ale w tym przykładzie nie ma dużo więcej do roboty, jak uda się stworzyć własną apkę na kompa to trochę pozmieniam (dodam więcej case'ów xd). Dużym problemem było to, że nie zaznaczyłem zapisu eepromu w eclipse, ale nadal są błędy teraz już chyba tylko po stronie slave'a:...
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...
masz konflikt adresow PCF tez ma adres 1010000 taki sam jak masz dla 24c1024
Z tego co się orientuję to EEprom używa się zazwyczaj do zapisywania takich danych jak ustawienia i opcje wczytywane przy starcie "systemu", jego szybkość zapisu/odczytu jest względnie mała, i zapisując coś do EEpromu podajesz konkretny adres, więc chyba trzeba samemu kontrolować ile się ma jeszcze miejsca (jakie adresy są wolne ) .
Może nie traci - odczytaj EEPROM i porównaj. Prawdopodobnie przekłamanie dotyczy jednego bajtu EEPROM, tego na który aktualnie wskazuje rejestr adresowy EEPROM. Stąd też, ustaw wartość tego rejestru na nieużywaną komórkę pamięci EEPROM zawsze kiedy się do tej pamięci nie odwołujesz, możesz np. na 0 i pominąć tą komórkę pamięci przy zapisie (zapisywać...
Dane do zapisania do pamięci FLASH wydobywa się ze skompilowanego pliku ELF, przy pomocy avr-objcopy , zarówno dla pliku HEX i binarnego. Makefile wygenerowany przez MS7 zwiera taki wpis: ihex na binary : [syntax=text]"...\avr-objcopy.exe" -O binary -R .eeprom -R .fuse -R .lock -R .signature -R .user_signatures "test1.elf" "test1.bin" [/syntax] Ale...
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,...
AVR nie posiadają rozkazu, którym by mozna bezpośrednio odczytać wewnętrzny EEPROM. Służą do tego macra (sekwencje rozkazowe). Zostaje chyba tylko pośrednio przypisać zmiennej konkretny adres w EEPROM-ie i względem niego adresować pozostałą część umownej tablicy.
Ad.1 Odpowiedź ze strony producenta : DataFlash® is the world's number one selling serial interface flash family. Introduced in 1997, Atmel's Dataflash families (45 series and the recently introduced 26 series) are feature rich, low pin count, sequential access families ideal for program code, data storage, Serial EEPROM replacement, and the next...
Chciałem takie zdjęcie wysłać do wyświetlacza. Bo tak to trzeba podać adres potem stronę potem kolejny adres potem adres odczytu i dopiero odczytać, i to troch czasu zajmuje.
Odnoszę wrażenie, że cały problem polega na tym, że widzisz wartość binarną ADC jako tekst. Na przykład liczba 455 traktujesz jako 3 znaki: '4', '5' i '5'. Potraktuj liczbę 455 jako liczbę 2 bajtową bez znaku, czyli uint16_t, czy unsigned int (zależnie od notacji). Oto przykładowy kod: [syntax=c]uint16_t adc_pos; //zapis do eeprom-u zmiennej adc_pos...
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,...
A sprawdziłeś adres, może masz ustawiony cały czas dla EEpromu.
zapisuję ja po sieci na eeprom 24c i co dalej To zależy. Generalnie zazwyczaj uC jest tak skonfigurowany, że po uruchomieniu najpierw uruchamia się bootloader, a jeśli stwierdzi, że nie ma nic do roboty to uruchamia się główny program. W Twoim przypadku bootloader musi sprawdzić zawartość eeprom i jeśli wykryje, że znajduje się tam inny wsad niż jest...
Dzięki wader_669 i emarcus , to mi wyjaśniło a właściwie skomplikowało rozwiązanie, dzielenie modulo 8 i reszta to nr bitu. czy możecie jesze podpowiedzieć , jak po każdym uruchomieniu w petli FOR/NEXT wpisać do eepromu 0 w bajty o adresie 1 (druga komórka pamięci) do 420?
To będziesz musiał się trochę napocić. Po pierwsze jak używasz watchdoga w programie, to musisz w jakiś sposób sprawdzić czy reset aby na pewno służył do upgrade'u. Możesz to zrobić np przez zapis do eepromu jakiejś wartości, odczyt i odczyt jej bootloaderze (pamiętaj żeby bootloader ją resetował). Dobry by był też mechanizm który by pozwolił na zrezygnowanie...
Możesz: -odczytać osobno programatorem eeprom i sprawdzić czy program coś zapisuje, -wpisać ręcznie do pamięci eeprom i sprawdzić czy będzie reakcja, -podać adres do funkcji zapisu i odczytu na sztywno w ramach testu.
Jeśli chodzi o soft, to powstał szkielet programu. Na razie odmierza to czas, i powinno obsługiwać pilot RC5. W polach „A:” – powinien wyświetlić się adres pilota, „C:” – numer przycisku z pilota. W symulacji programowej poszło, ale na razie nie mogę przeprowadzić prób z braku modelu. Ale żeby stworzyć wersje BETA...
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...
Co do 1 pytania : uint8_t tablical_EE[] = {0,8,16,24,32,40};// 6 adresów user'ów 8-io bajtowych eeprom_read_block (wzorzec,tablica_EE[i],8)... Prościej się już chyba nie da. Poruszasz się po tablicy w eepromie i ściągasz do wzorca kod 8bajtowy user'a dalej sobie to jakoś porównujesz czy coś.
Trzeba koledze uswiadomić że przyjęto aby wszystkie pamieci na szynie I2C maiły adresy $Ax a ustawienia adresów wykonuje sie przez odpowiednie podłaczenie pinów adresowych. PCF8583 jest traktowana jako pamiec i może miec adres $A0 lu A2, natomiast 24c moze miec adresy $A0,$A2....$AE I tutj może byc źródło konfliktu.
http://obrazki.elektroda.pl/3799930900_1... Jakiś czas temu pisałem, jak nagrywać gry z PC na PEGASUSA. Teraz pora podejść do tematu z drugiej strony – jak zgrać naszą ulubioną kolekcję kartrydży na komputer. Wiele osób może się dziwić, po co taki zabieg, zwłaszcza, że większość gier z tej konsoli krąży już po Internecie. Czasem...
Mam pod i2c podłączony zegarek na ds1307 i atmegę 2561 i to wszystko komunikuje się prawidłowo bo z atmegi programowałem eeproma. Mi się wydaje że to też w tym układzie niedziała. Zrobiłem to tak że do atmegi mam podłączone gnizado kart sd i atmega znajduje i przesyła pliki do arma. Komunikują się po ISP i TWI bez problemów ale czy arm czyta z tego...
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...
A nie zrobiłeś tego odwrotnie: Const Adres_o = 172 Const Adres_z = 173 spróbuj zamienić ,czyli: Const Adres_o = 173 Const Adres_z = 172
Witam, Te pierwsze trzy wywołania odczytu z EEPROMu mają jako argument podany adres w postaci &zmienna. Niby kompilator coś wylicza ale okazuje się, że adres jest zły. Ostatnie wywołanie jest z jawnym podaniem adresu. To jest dobrze i w efekcie daje poprawny odczyt... Przejrzałem ten plik dalej i w 'tłumaczeniu' innej funkcji te adresy są wyliczone...
Witam Mam problem z SPI w Atmedze32. Staram się skomunikować ją z pamięcią 25LC128. SPI inicjalizuję następujaco void InicjalizacjaSPI(void) { // Wyjścia SS, SCK, oraz MOSI są wyjściami DDRB = _BV(SPI_SS) | _BV(SPI_MOSI) | _BV(SPI_SCK); // Ustawiamy SS oraz SCK w stan wysoki PORTB = _BV(SPI_SS) | _BV(SPI_SCK);...
Właśnie siedze nad podobnym programem tylko na ATMEGA 32 Ma to być notesik słówek zapisywanych w pamięcie EEPROM 24c64. Można to zrobić przechowując adresy początku słówka lub mniej oszczednie założyć, że słówko ma np. 15 liter i nie ma problemu z adresem słówek. Pozdrawiam PS. Ja wybrałem pierwszą opcje. Mój program narazie odczytuje tekst z kompa...
Witaj, Więc robisz bardzo ciekawy projekt który sam kiedyś miałem zamiar zrobić. Mam tutaj na myśli głównie sterowanie tymi wyświetlaczami punktowymi. Przyznam szczerze że na pierwszą przygodę z mikrokontrolerami to dość odważny projekt wymyśliłeś <brawo> 1) Tak. Mam na myśli pamięć EEPROM do przechowywania danych np. 24C256 (8kB) Są i większe...
Każdy układ mogący pracować na szynie I2C jest wyposażony przez producenta w adres. Podany zwykle w nocie katalogowej - możliwy do modyfikacji przy pomocy wyprowadzonych PINów młodszej części adresu. Adres można też odczytać w prosty sposób opisany w Elektronice dla Wszystkich dlatego nie będę tu przytaczał - lektura godna polecenia. ;)
Jestem ciekaw czy ktoś spotkał się z takim problemem i z milczeniem ze strony tej firmy. Nabywając tą płytkę czytałem kilka razy opis i instrukcję, i nie było wzmianki że trzeba coś sobie samemu lutować. Wyprowadzenie pinów A0, A1 i A2 świadczy że miała być tam inna pamięć, której adres można ustawić tak aby uniknąć kolizji z RTC.
O, wielkie dzięki! :) To może zapytam przy okazji o budowę adresu, bo tutaj też mam pewne wątpliwości. A widzę że Kolega w temacie :) W niektórych notach, w tabelce Serial Programming Instruction Set, w polach adresu jest tylko podane "adr MSB" i "adr LSB". W niektórych (np Attiny2313) te dane są pokazane w postaci binarnej i tam widać co gdzie należy...
I właśnie o tą tablicę mi chodzi, czy dany czujnik temperatury zawsze przyjmie to samo miejsce(pozycje) w tej tablicy???, czy np po restarcie zasilania, czy po ponownym wyszukaniu jego pozycja w tablicy się zamieni??? Jak one się sortują na tej tablicy??? Kol. BlueDraco już odpowiedział. Ja tylko dodam, że ta tablica jest sortowana po adresach i warto...
To wiem :D Ale ja bardziej pytam czy zanik zasilania niczego nie zepsuje poza niekompletnym zapisem. Nie zawsze niezapisane dane są cenne, ważne żeby to co już zapisane poskładać sensownie i nie uszkodzić elektroniki. Procesor nigdy nie powinien pracować przy nieodpowiednim (niewystarczającym) zasilaniu. Dlatego warto włączyć BOD. Przy niedostatecznym...
W funkcji eeprom_read po drugim I2C_start musisz wysłać jeszcze raz adres układu, tym razem adres do odczytu z wyzerowanym najmłodszym bitem. Marek
Plik hex mozesz bezposrednio wgrac do ponyproga i nim zaprogramowac uklad - przy ladowaniu hexa wybierasz czy ma byc ladowany do FLASH czy EEPROM. A jesli nie masz hexa to w ponyprogu mozesz recznie edytowac zawartosc komorek. Co do odczytu to tak - wystarcza. Ale zamiast operowac na bezwzglednych adresach, co szybko zacznie stwarzac problemy lepiej...
Dzieki za odpowiedz czyli powinno byc jakos tak ? twistart(); twiwrite(0b10100000); twiwrite(a[0]); twistop(); _delay_ms(10); Dokładnie tak. Co do ACK rozumiem ze jesto jakiego rodzaju sygnal ktory daje nam komunikacje jednak nie mam pojecia jak go uzywac ;C Masz beznadziejnie napisane funkcje obsługi...
Tutaj muszę najpierw dopowiedzieć, że spotkałem się z kolegą (at)piotrva (bardzo sympatyczny młody geniusz) i przekazałem jedną z dziwnie zachowujących się ATMeg do testów - dlatego teraz testy wychodzą spod jego pióra. W piątek kupiłem nową ATMegę32 (na Wrocławskiej) i już chciałem napisać, że oczywiście wszystko jest OK (bo zaprogramowałem od razu...
Problem dotyczy wszystkich języków programowania i wszystkich mikrokontrolerów. Chodzi o uszkadzanie się zawartości pamięci eeprom kiedy program idzie w krzaki. Zauwzyłem, żę kiedy traktuję atmegę zakłoceniami emc potrafi o ona zacząć wykonywać inny fragment kodu (bascom), jakby skoczyła pod jakiś przypadkowy adres. objawia sie to czasem podwójnym pisaniem...
Nic nie trzeba przestawiać. UARTem jako slave ne generujesz przecież resetu. Pisałeś o wykrywaniu resetu przez uart. Jak jednym uartem wykryję wartość bitu, reset, zgłoszenie alarmu (przedłużony reset) i reset overdrive? Dodano po 18 chyba, że masz kuszącą dla mnie ofertę finansową :) Jeżeli uartem załatwisz wszystkie powyższe stany magistrali to,...
Thx, za pomoc niestety udało mi się upakować obrazki, które się nie mieściły do wewnętrznego eeproma w atmega128 przez co zabawę z zewnętrznym zostawię sobie na później, ponieważ to część mojej mgr i chcę jak najszybciej to już zakończyć :). Korzystam z programowego i2c, czy to źle? Co do Config Twi = 400000 to mi się o tym zapomniało i nie umieszczałem...
Znalazłem podobny temat https://www.elektroda.pl/rtvforum/topic8... ale za bardzo nie mogę zrozumieć odpowiedzi (późna godzina może). Jaki adres ukłądu w końcu powinienem użyć? Poniżej daję kod, który nie działa (funkcja zwraca false). Prośba o spojrzenie, co robię źle. Z pamięciami eeprom pierwszy raz się spotykam. Od razu pytanie odnośnie...
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...
Freddie Chopin, wnioskuję z tego, że kompilator z Bascoma jest głupi bo wywala mi brak SRAM pomimo, że zmienne nigdy nie zostały użyte w programie i praktycznie cały ram powinien być wolny. Hmmm... Tak sobie czytam i się zastanawiam... Nasunęły mi się pod wpływem powyższych postów takie pytania: PO CO deklarować zmienne, których się później nie używa...
Witam! Mam problem z zaprogramowaniem kości 24c32. Jest ona podłączona do atmegi8 do lini sda i scl. Pozostałe linie eepromu są: a0, a1, a2, wp, vss do masy i vcc do plusa. Atmega odczytuje tylko 255 więc komunikacja chyba jest ale oczywiście pamięć pusta, a gdy próbuje coś wpisać to to samo.. Przykładowy program: 'początek i2cstart i2cwbyte 160 'adres...
Witam, Nie miałem okazji przedtem pobawić się EEPromem zawartym w Atmega16, aż do dzisiaj. Pogrzebałem po necie i napisałem taki oto programik: [syntax=c] #include <avr/eeprom.h> #define ASRES1 1 #define ADRES2 5 #define ADRES3 10 uint8_t zmienna1, zmienna2, zmienna3; int main(void) { zmienna1= eeprom_read_byte ((uint8_t*)ADRES1); //czytanie z...
Wydaje mi się że jak byś nie zrobił i będzie działało to tak jest dobrze ;] ilu programistów tyle podejść do tematu... Jeżeli już zadeklarujesz taką dużą tablicę to tak czy siak będzie ona zajmowała jakąś przestrzeń w pamięci więc czemu nie użyć jej i odczytać z eeprom wszystkiego na raz. Kiedyś robiłem podobny sterownik do CO ze sterowaniem temperaturą...
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ć...
Tak, wszystko się zgadza. Jeśli łączyłbyś potem np. 2 kości to wtedy w jednej dajesz oba piny do masy, a w drugiej jeden do VCC i masz 2 pamięci pod 2 różnymi adresami. Można w ten sposób połączyć do 4 pamięci typu at24c04
Chodziło mi właśnie o systematyzowanie komórek po 4 żeby przy odczycie nie rozjechały mi się adresy. Zgadza się Właśnie o to mi chodziło Macie rację warto poświęcić jedną komórkę na wskaźnik. Właśnie tego mi brakowało Jeszcze nie wiem jak to zrobię, przede mną cała noc zabawy, dam jutro znać jak się udało , ewentualnie na czym utknąłem. Nie potrzebujesz...
Witam. Mój problem pojawia się podczas zapisu do pamięci at24c1024 wartości większej niż 127 (0x7F). Wartości mniejsze są prawidłowo zapisywane i odczytywane pod każdym adresem. Natomiast wartości większe od wspomnianej nie są zapisywane. Czy ktoś spotkał się już z podobnym problemem? Pozdrawiam.
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...
znam kilka możliwości: 1.Pamięć SRAM z podtrzymaniem bateryjnym 2.Są też pamięci tzw. ZeroPowerRAM są to pamięci j/w tylko że fabrycznie ma wbudowaną bateryjkę (chyba coś koło MK48Z02 2kB) wadą jest znaczne rozbudowanie układu (adresowanie + dane) 3.Zastosowanie jakiegoś zegarka RTC... - z reguły takie układy mają kilka(naście) bajtów pamięci konfiguracji...
Jest to słowo :) określające konkretny adres w pamięci. Jest ono zależne od budowy i sposobu adresowania pamięci. Najczęściej są to słowa 2 x 8 bitów. W dokumentacji pamięci masz dokładnie napisane co które bity oznaczają.
Mam oscyloskop. Kiepski ale jakieś przebiegi do 1MHz pokazuje. Sygnał z DS18B20 co 1 sekundę jest cały czas. Obciążenie wyjścia ma 4k7 tak jak w aplikacji. Wyjście DEB cały czas na 1 (5V) . Nie widzę żadnego sygnału 1 s. DIN - na teście, jest sygnał, potem zero. LOAD na teście jest, potem 1.CLK na teście jest, potem 0. Dodano po 3 Dla sprawdzenia: TINY85,...
Bascom Atmega Jak zapisać domyślne wartości w eepromie pod wskazanym adresem? Tworzenie zmiennych w kodzie, które mogą wskazywać, pod jaki adres ma ona wskazywać zajmuje miejsce w kodzie programu. Jeżeli zadeklarujemy to w ten sposób to wszystko jest zapisane w pliku epp i nie zajmuje miejsca w kodzie programu. Ale jak wskazać że przykładowo etykieta...
Chyba najprościej przerobić bootloader. Po pierwsze dodając funkcjonalność zapisu do tego EEPROM. Po drugie, jako że prosty plik Hex ma przestrzeń adresową 64kB, natomiast ta Atmega nie ma tyle pamięci, to przypisać część niewykorzystanej przestrzeni "wirtualnie" do zewnętrznego EEPROM, aby bootloader "wiedział", że część danych ma tam wylądować. A...
Witam Was! Programuję sobie właśnie mój sterownik do terrarium i napotkałem wczoraj na problem którego nie mogę za Chiny przeskoczyć... otóż wczoraj przed nabrojeniem miałem sobie kod: #include <avr/io.h> #include <util/delay.h> #define F_CPU 1000000UL #include "HD44780.c" #include "config.h" #include "i2c.h"...
Ręce to opadają i masz rację ;) Masz błąd w definicji zmiennej do której wpisujesz ID czujników to nie jest jeden bajt tylko tablica 8x8bitów czyli 8 bajtów. Adresujesz nie istniejące czujniki bo ich adresy sa niepoprawne, wysyła procek ciagle ten sam bajt. Dim Adres1 As Byte 'adres pierwszego Dim Adres2 As Byte 'adres drugiego Dim Adres3 As Byte 'adres...
Wydaje mi się że nie opłaca się ładować tych 32 bajtów do eepromu , pewnie procedura odczytująca zajmie więcej miejsca. Ale :) można by tam coś innego władować, w eepromie masz coś około 500 bajtów wolnych. Wolne miejsce można by wykorzystać na teksty wyświetlane na LCD. Niektóre łańcuchy też się powtarzają. Często masz np . [syntax=basic4gl]Locate...
Witam wszystkich. Mam pewien problem, a mianowicie podczas próby odczytania zawartości EEPROM w ATmega64 do zmiennych wpisywane są jakieś dziwne śmieci. Potrzebuję odczytywać zmienne różnych typów w EEPROM i próbowałem zrobić to za pomocą read_eeprom_block jak i sekwencyjnie zczytywać po 1 bajcie, jednak za każdym razem się dziwne krzaki pojawiają....
Witam Oczywiście programując mikrokontroler zaprogramowałeś także EEPROM. Wnioskuję że programujesz procesor także bezpośrednio w Bascomie, (EEPROM jest na drugiej zakładce) :) A tak dodatkowo.... czy wydanie polecenia: Readeeprom Z, 1 powoduje odczyt danej z pierwszej wprowadzonej przez Ciebie komórki (bo zerowej nie używasz). Zmienna Z powinna być...
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...
jeszcze nie wgłębiałem się dokładnie w fuse-bity, nie znam sięw tej tematyce jeszcze raczej są wporządku, płytkę kupiłem razem z atmegą która miała je już ustawione poza tym wszystko inne chodziło po 1wire czy PCF8574 po I2C Co do programu to zrobiłem zmianę i teraz działą OK: Const Addressw = 162 'adres zapisu Const Addressr = 163 zmieniłem adresy...
Witam, 1. Nie podałeś jaki jest rozmiar pamięci EEPROM a od tego zależy sposób adresowania. Linie A0,A1,A2 masz podpięte do +5V (logiczna 1) czyli jeżeli masz pamięć mniejszą niż 24C16 to adres 0xA0 jest niewłaściwy. 2. Linia WP dla normalnego trybu pracy powinna być podpięta do GND (logiczne 0). 3. Aby zdiagnozować problemy na I2C po zakończeniu każdej...
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)"?
Dobrze kombinowałeś w programie wyżej, ale... błędy, błędy... i dlatego nie działało prawidłowo. Zobacz sam co to za kwiatki ;) [syntax=basic4gl] Readeeprom Dsid1(1) , 1 Readeeprom Dsid2(1) , 3 Readeeprom Dsid3(1) , 5 Readeeprom Dsid4(1) , 7 [/syntax] czytasz do Dsid1(1) jeden bajt z eepromu o adresie 1, później Dsid2(1) też jeden bajt z adresu 3 itd,...
wlasnie chodzi o to ze w atmega to dziala bez problemu ale 89s8253 nie jest AVR ale juz dalem rade okazalo sie ze jednak musi byc podany adres gdzie ma to zapisac ale dzieki wszystkim za pomoc.
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...
Rezystory podciągające podpina sie jedną końcówką pod linię sda lub scl a drugą pod VCC a wyprowadzenia pc5 łączysz bezpośrednio z scl pamięci tak samo pc4 bezpośrednio z sda pamięci . Dla standardowego adresu A0 A1 i A2 podłącz do masy. Książki możesz poszukać w księgarni czy empiku albo zamówić bezpośrednio u wydawcy www.btc.pl książka Mikrokontrolery...
Hej! Jak podłączyć do ATmega128 bądź innego AVR zewnętrzną pamięć EEPROM przykładowo 8k tak aby widziana była od adresu 2000h. Chodzi tu głównie o rysunek ale proste wyjaśnienie dlaczego tak a nie inaczej też mnie ucieszy :) Temat aktualny do środy 14:00 Pozdrawiam :)
RS232 wymaga zastosowania konwertera poziomów (najczęściej MAX232). Podłączasz go do pinów I/O : PD0 (RxD) i PD1 (TxD), konkretnie piny 14 i 15. Sposób podpięcia MAX232 znajdziesz na większości schematów urządzeń wyposażonych w RS232, gdyż jest to typowy i najpopularniejszy układ do tego celu. Poszperaj w sieci. (np. jest application note na www.avrfreaks.net)...
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...
http://obrazki.elektroda.pl/5985056000_1... Witam. Od razu przepraszam za jakość płytki drukowanej, dopiero uczę się je robić. Moją nową "zabawką" jest urządzenie, zwane "PseudoComputerem". Pomysł Wpadłem na pomysł urządzenia, które będzie posiadało coś na kształt interpretera. Wczytuje ono komendę w postaci kodu, następnie argumenty...
. 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...
portB 7-d7 portB 6-d6 portB 5-d5 portB 4-d4 PortB 0-Rs PortB 2-E Rw-Gnd Taktowanie procesora 16mhz [syntax=c]//----------------------------... // *** Obsługa wyświetlaczy alfanumerycznych zgodnych z HD44780 *** // // - Sterowanie: tryb 4-bitowy // - Dowolne przypisanie każdego...
Nie da się zaadresować jednego bitu. Adresuje się po 8 bitów, więc jak czytasz całość, bascom spod konkretnego adresu pobiera bajt w miejscu. Najpewniej bascom nie obsługuje wyłuskiwania pojedynczych bitów z zmiennej będącej w eepromie. Odczytaj cały bajt do zmiennej w ramie, a dopiero wtedy dziel go na bity - metoda fool-proof.
Witam, korzystam z WinAVR oraz AVR Studio. Napisałem dwie proste funkcje: void zapisz( uint8_t pozycja, uint8_t wartosc ) { eeprom_busy_wait(); eeprom_write_byte(&pozycja,wartosc... } char odczyt(uint8_t pozycja) { eeprom_busy_wait(); return eeprom_read_byte(&pozycja); } Wiem, że ATmega...
Znalazłem sobie takie cos w dokumentacji do AVR-ow w atmegach to jest w rozdziale o eepromie: void EEPROM_write(unsigned int uiAddress, unsigned char ucData) { /* Wait for completion of previous write */ while(EECR & (1<<0x00));// <<=== USTAWIENIA TU !!!!! EEWE)); /* Set up address and data registers */ EEAR = uiAddress; EEDR = ucData;...
Dodaje kod do zapisu daty i czasu w PCF8563 [syntax=basic4gl] '********************* Funkcja ustawiająca zegar PCF8563 Sub Settime_pcf Ssek = Makebcd(s) 'sekundy Mm = Makebcd(m) 'minuty Hh = Makebcd(h) 'godziny Dday = Makebcd(day) 'dni Wwk = Makebcd(wk) 'dni tygodnia Mmonth = Makebcd(month) 'miesiace Yyear = Makebcd(year) 'lata I2cstart 'warunek startu...
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...
Chcesz wpakować program w EEPROM ??? [syntax=bash]-U eeprom[/syntax] Nie wejdzie!!! http://www.ladyada.net/learn/avr/avrdude...
Czy istnieje jakiś avr kompatybilny programowo z atmega32 tylko z większą od 2 do 4 razy ilością SRAM i EEPROM? Wszystkie ATmega są kompatybilne programowo - kilka literek w nazwach rejestrów zmienić to żaden problem. Nowsza wersja ATmega32 to ATmega324/644/1284, ale tez zawsze jakieś rejestry inaczej się nazywają. Jeśli nie chcesz pokazywać kodu,...
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...
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 Mam problem z transmisją I2C po wybudzeniu uC. Jeśli uśpienie nie było zbyt głębokie (tryb IDLE) transmisja I2C działa bez problemów. Jeśli uśpienie było głębsze (np. POWER DOWN) po wybudzeniu nie działa magistrala I2C. Aby ponownie zaczęła działać konieczny jest RESET uC. Napisałem krótki program ułatwiający analizę problemu. plik main.c: [syntax=c]#include...
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(..)...
http://obrazki.elektroda.pl/5636705900_1... https://filmy.elektroda.pl/37_1378532310... Termometr mikromocowy LCD ATMEGA16 Tym razem głównym celem projektu było sprawdzenie możliwości wykonania mikromocowego systemu pomiaru temperatury w oparciu o możliwie standardowe elementy, mówiąc w skrócie byłem ciekawy czy zwykły avr może być...
Ja zrobiłem tak:(procek atmega 16 bo jak będzie mało eprom to wystawie mega32) Mierze sobie napięcie z przepływki ADC(0)- mam od 0 do 1023 Tak samo mam pwm od 0 do 1023 konfiguracja , im mniejsza liczba w rejestrze COMPAREA tym krócej trwa stan niski, korekta za pomocą przycisków + - i zapis do eeprom Adc=pwm to działanie liniowe , na którym auto po...
eeprom adres adres eeprom atmega adres
spawanie uziomu podłączyć żyrandol wiatrak uszkodzi onkyo
schemat instalacja elektryczna bramy instrukcja pilot grundig
Wymiana środkowej kratki nawiewu Opel Meriva A - krok po kroku Olej do automatycznej skrzyni ZF 5HP19 - specyfikacje i zamienniki