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
Po prostu deklarujesz zmienne i robisz tak: Dim Eeprom(128) As Eram Byte 'i potem zapis o odczyt: Eeprom(1) = 123 Jakas_zmienna = Eeprom(128)
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ć...
Są oczywiście takie moduły zespolone z pamięcią. Mozna tam zapisywać i czytac po bajcie, ale można też sekwencyjnie całe łańcuchy i tablice nawet serializatorem. Dwie pierwsze funkcje podpowiem. Wygląda na to ze działaja ;) Możnaby dodać jakieś zabezpieczenia na wypadek braku komunikacji. https://obrazki.elektroda.pl/8549538400_...
Witam Z tego co pamietam to by cokolwiek zapisac i odczytac z epromu nalezy podac tez adres komorki pamieci . W BASCOMIE to wyglada chyba tak : Writeeprom Tekst ,adres a potem odczytujemy Readeeprom Tekst ,adres AT90S2313 ma 128 bajtow pamieci EEPROM, wiec jest 128 komorek jedno-bajtowych komorek pamieci. Stad adres : 0-127 Nie wiem jak wyglada sprawa...
Mam wrażenie że przy obecnie wybranym algorytmie nie da się przyspieszyć. Gdyby dane o adresie zapisywane były w ciągu z reszta to ujdzie i nie trzeba czekać ale tak to niestety: 1. ładujesz adres początku 2. wysyłasz dane po koleji 3. czekasz te 10ms 4. zapiszujesz pod 5000 zmienną adresu 5. czekasz znowu 10ms I tak powinien wyglądać fragment zapisywania....
zapis writeeeprom zmienna , adres odczyt readeeprom zmienna , adres Musisz pamiętać ile bajtów zajmuje zmienna którą zapisujesz i o taką wartość zwiększyć adres przy zapisie / odczycie następnej zmiennej Jeśli zmienne typu Byte , adres zwiększasz o 1 Jeśli zmienne typu Word , adres zwiększasz o 2 Jeśli zmienne typu Integer , adres zwiększasz o 2 Jeśli...
Na schemacie znalazłem błąd. Linia A0 układu PCF8583 powinna być połączona z plusem, a nie masą. Inaczej układy I2C będą się nawzajem zakłócać, ponieważ pamięć EEPROM i układ RTC będą miały ten sam adres bazowy.
Jeśli procesor ma wbudowane 512 bajtów EEPROM, to ostatni adres to 0x1FF/511. Przyjmijmy że zapisuje liczbę 123 pod adresem 100, jeżeli odczytam dane z adresu 101 to wynikiem będzie 2? Wynikiem będzie to, co wcześniej zapisano pod adresem 101. Jaką max wartość mogę zapisać pod 1 adresem eeprom? Z punktu widzenia 8-bitowej magistrali danych pod jednym...
chyba nie rozumiem twojego problemu lub czegos nie zrozumiales w helpie: Zapisuje dane do wbudowanej pamięci EEPROM. Składnia: WRITEEEPROM zmienna , adres gdzie: zmiennazmienna, której wartość wpisana będzie do adresowanej komórki EEPROM, adresadres komórki pamięci EEPROM.
Zapisujesz nazwy pod ten sam adres w EEprom Writeeeprom Q , 13 I odczytujesz też z tego samego adresu.
Komenda Print nie wyświetli ci zmiennej na lcd :) 'Program wykonujący zapis do pamięci EEPROM Sub Write_eeprom(byval Adres As Byte , Byval Value As Byte) I2cstart I2cwbyte Addressw I2cwbyte Adres I2cwbyte Value I2cstop Waitms 10 End Sub 'Program wykonujący odczyt z pamięci EEPROM Sub Read_eeprom(byval Adres As Byte , Value As Byte) I2cstart...
Hmm, ale typ układu? Jak to się ma np. do PCF8583 (zegar) i pamięci At24Cxx (eeprom) - adresy bazwoe takie same...
tak, stosuj tablice. Ulatwi ci to robote.... ALE pamietaj zeby NIE ZAPISYWAC DANYCH W KOMORCE EEPROMA O ADRESIE 0. Jesli zaczniesz deklarowac zmienne w bascomie to : ...jakies zmienne... .... .... .... 'EEPROM dim foo as eram byte 'to ci zalatwia komorke 0, bo tu bascom umiesci tą zmienną, i z niej niekorzystasz dim tablica1(3) as eram byte dim tablica2(3)...
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.
Witaj Dzięki już sobie poradziłem :) Problem leżał w tym że mimo opisu Readeeprom i Writeeeprom nie działał bez podania adresu.
Ale po co Ci te adresy? Pozatym, i tutaj można zapanować nad adresami (można je narzucić). Pozatym #2, skoro zapisujesz tylko ostatni numer to tak naprawdę nie potrzebujesz adresu.
Załączam obsługę pastylek Dallasa 1990. Jest to część mojego programu obsługującego imobilajzer. Cztery pastylki są zapisane e EEpronie adres 10, 20, 30, 40 hex. Podprogram odczytuje cały 64 bitowy kod i porównuje je z wzorcem e EEpromie. Gdy któryś bajt różni się od wzorca blokada nie jest zdjęta. Podprogram sprawdza czy odczytana pastylka jest zapisana...
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...
Można zadeklarować prawidłowo zmienną eeram W ten sposób Dim Adres_er(size_t_mac) As Eram Byte At Adres_p_mac Poprzez komende AT znam adres, po jaki będzie się odwoływać zmienna eeram w pamięci. Niestety, ale z Eepromem ten numer nie przejdzie , ponieważ Bascom ignoruje etykiety w Eepromie. Deklaruje, jakie wartości powinny być zapisane w eeram...
$eeprom - dyrektywa kompilatora, która informuje go, że od tego miejsca dane będą trafiać do pamięci EEPROM. Faktycznie dane te trafią do pliku EEP, którego zawartość podczas programowania zostanie przelana do wewnętrznej pamięci EEPROM układu. Napisa: - Etykieta dla polecenia READEEPROM. Jest to przyjazny zamiennik adresu pod którym dane w tej pamięci...
a mog bys zapodac jakas komede ktora by odbierala z dekodera ciag cyfr i zapisywala na dany adres eeprom
Ale czym sie rozni adres 128 od 1 ?
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ą...
Przejrzystosc w kodzie przede wszystkim. :D Pozniej latwiej jest zlokalizowac ewentualne bledy i samo poruszanie sie w kodzie jest znacznie latwiejsze. W kazdym razie wracajac do tematu to ja osobiscie nie lubie etykiet wiec wolalbym to rozwiazac np. w ten sposob: Sub Czytaj_id_klucza() 'tutaj wstawiasz kod odczytu End Sub i pozniej tylko: Call...
chcę zrobić tablicę z nazwami dni tygodnia do kalendarza. deklaruję dim tablica(7) as string * 12 Po co Ci aż 7 12-bajtowych stringów :?: Wystarczy: Dim Dzientygodnia As String *12 , Nrdnia As Byte ... Dzientygodnia=Lookupstr(Nrdnia,Tabli... '0=Pon, 1=Wtor, ... Lcd Dzientygodnia; ... Tablica: Data "poniedziałek", "wtorek"...
Eprom jest zewnetrzny na I2C (24LC512) ale zeby sie odnosic do danej grafiki program musi znac jej adres. (biblioteka do obslugi glcd jest zmodyfikowana do korzystania z zewnetrznej pamieci eeprom) Komunikat pojawia sie dopiero po wywolaniu tej etykiety za pomoca showpice. Plik .eep jest tworzony poprawnie.
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...
OK, jeśli dobrze rozumiem to chodzi o zapis 32 bajtów, czyli strony. Sprawdziłem program z zapisem od adresu 0 do 3200 z krokiem 32 i wszystko działa, ale w ten sposób tracę niepotrzebnie 23 bajty na każdą zapisaną stronę (ponieważ zapisuję 9). Czy jedynym sposobem jest zapis jednego bajtu, zwiększenie adresu o 1, zapis kolejnego bajtu, zwiększenie...
Problem został rozwiązany :). Na jakimś angielskim forum wyszukałem kilka ważnych uwag, mianowicie dwóch. Po pierwsze jeśli dołączasz rezystory, to należy w ich właściwościach zaznaczyć, że sygnał ma być cyfrowy, a nie analogowy. Druga rzecz to czyszczenie pamięci poprzez Debug-> Reset Persistent Model Data. Aha dodam jeszcze, że jak dodajesz plik pamięci...
Normalnie: READEEPROM zmienna [ , adres ] WRITEEEPROM zmienna [ , adres ] Pzdr.
. 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...
Twój 2 przykład dotyczy pamięci o pojemnościach większych niż o ile dobrze pamiętam 512kb. Tam adres jest 2-bajtowy. Stąd różnice.
W tym programie nie podoba mi się to że zapisujesz dane pod bardzo dalekie adresy w pamięci eeprom która ma tylko 512bajtów.
Może cos takiego ? Config Scl = Portc.0 ' I2C Clock. Config Sda = Portc.1 ' I2C Data. Config I2cdelay = 100 Declare Sub I2c_ram_write(byval Addres_desired As Word , Byval Byte_to_write As Byte) ' Writes data to the I2C EEPROM. Declare Function I2c_ram_read(byval Addres_desired As Word ) As Byte ' Reads data to the I2C EEPROM. Declare...
Co do twojego pierwszego problemu, to najprościej jest czytać ciąg nie z określonego miejsca, a za określonym znakiem. Wszystkie dane masz przedzielone przecinkami. Zakładam że tych przecinków jest stała ilość. Po prostu czytaj łańcuch po 7 przecinku do następnego przecinka i już i wtedy długość wcześniejszych danych nie ma znaczenia. Co do eepromu...
Powinieneś skonfigurować SDA i SCL w programie. Nie napisałeś w jakim będziesz pisał bo np w BASCOM 8051 robi się to tak: Config Sda = P1.1 Config Scl = P1.0 i wówczas możesz dowolnie wybrać porty . Przydaje się to przy projektowaniu płytki. A0 i A1 ustawiasz adres do zapisu pamięci albo (+) albo GND
Proszę. Jest to przykład zapisu i odczytu zarówno zwykłych bajtów jak też łańcuchów tekstowych inaczej mówiąc napisów w Eeprom. Program i funkcje działają z małymi pamięciami których adresacja mieści się w jednym bajcie. Do tego przykładu użyłem 24C04 Jeśli ktoś chce to może po prostu wpisać sobie jakieś dane do buff(1), Buff(2) itd i tak zapisać. Potem...
Siemka! A ja mam troszkę inną propozycję dla Ciebie. Nie zapisuj numerów czujników w pamięci programu. Poza tym lepiej jest mieć uniwersalny termometr gdzie jak uszkodzi się jeden czujnik, to z łatwością można zastąpić go innym. Zadeklaruj sobie takie zmienne: dim dsid(40) as eram byte ' zmienna tablicowa (EEPROM) dla 5 czujników dim...
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.
Witam! Twój program nie będzie działać. Ogólnie nie zajmuje się Bascom ale mogę ci pokazać ogólne założenia transmisji z tym scalakiem. Każdy EEPROM I2C ma swój adres. Jest on wyznaczany na podstawie stanów na nóżkach A2...A0. Jeśli podpiąłeś wszystkie te nóżki do masy to adres jest: 0b1010 - stała sekwencja, A2=0, A1=0, A0=0, R/W. Podsumowując: 0b10100001...
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...
Czarna magia. Wyświetlacz mam czarno biały. Nie dam rady z tym co mi pokazałeś. Napisałeś że port b wypluwa grafiki. Tu potrzebna jest komunikacja z AT24c32 linie SCL SDA i adresy. To wszystko znam. Nie wiem tylko jak zamienić grafikę, aby wrzucić do eeprom.
Najprościej zrobić to w pętli zwiększajacej adres komórki do odczytania, ilość obiegów równa z ilością bajtów do odczytania.
Pewnie chcesz zrobic inteligentna kopiowarke do pamieci eeprom. Przedewszystkim musisz sobie odpowiedziec dokladnie jakie pamieci beda stale a jakie wymienne. Oczywiscie mozna zrobic dwie magistrale - jedna do pamieci wewnetrznej i druga do wymiennych(i za takim rozwiazaniem ja bym byl bo jest troche bezpieczniejsze). Rozne pamieci maja rozne adresy...
Nie jestem pewien ale twój problem chyba tkwi w adresie eepromu. Z tego co widze na schemacie piny A0-A2 są podłączone do masy więc adres 24c64 to 1010000[R/W]. Spróbuj może zmienić Const Adres_write na 10100000 (160) a Const Adres_read na 10100001 (161). Pozdro
Ja komunikaty wrzucałem w 50 znakowego stringa a potem sobie wysyłałem na uart/lcd. A potrzebowałem mieć całość w pamięci bo przed wysłaniem sprawdzałem sumę kontrolną zawartości tego stringa. Dim Txt As String * 6 [...] $eeprom Data "napis1" Data "napis2" $data [...] Readeeprom Txt , 0 'adres pierwszego napisu Print...
Otworzyłem hexedytyrem tego txt i po kazdej linii wystepuje 0D 0A. Czyli oprócz entera jest jeszcze znak przeniesienia do nowej linni. Wydaje mi sie ze własnie przez to terminal wysyła dane mimo ze nie otrzymał zachety input. Do jakich pamieci stosuje sie zmiane adresowania strony, a do jakich rozdziela adres na mlodsze i starsze bity? Wiem ze 24c04...
Pamięć 24C daje sięprogramowac bez problemu w ukłądzie, tylko pamiętaj że lutując ustawiasz jej adres {sprawdź w nocie katalogowej nóżki A0, A1 , A2.!} Co do gadania do mikroprocka daj sobie na razie spokój z wysyłaniem znaków . Poszukaj w domu pilota z kodem RC5 najlepiej jakiegoś Philipsa lub LG. I napisz program, który po naciśnięciu wybranego klawisza...
Podczas programowania kasowana jest pamięć flash oraz eeprom więc dane ulegają utracie. należało by zapisać pamięć eeprom do pliku przed programowaniem i podczas programowania ustawić programowanie pamięci flash+eeprom. zmiennej nietrzeba zmieniać na postać bcd. adresowanie - kolejne adresy narastające o rozmiar poprzedniej zmiennej. (a-bajt b-wyraz...
Jeżeli chcesz użyć 24c04 to tylko dwie nóżki możesz użyć do zmiany adresu kości na I2C, z tego wynika że do adresowania pamięci używa się 6 bitów a bit 7 w połączeniu z osmioma bitami adresu komórki służą do adresowania 4k pamięci.
A co Ty chcesz tam robić tym grubszym kablem z powodu wyższego adresu? Montujesz taki DIP SWITCH i ustawiasz adres. https://obrazki.elektroda.pl/8410468100_... Niepotrzebnie komplikujesz prostą sprawę. Jak chcesz im nadawać "niepowtarzalne MAC`i" to równie dobrze możesz im nadać adres we flash czy eeprom. To, że rzekomo Twój stary Bascom...
dobra, tdv, moze sie źle wyrazilem. mozna do 51 podpiac EPROM z programem i RAM z danymi. ale podpinasz to do tej samej magistrali, skladajacej sie z 1 lub 2ch portow i zatrzasku do multipleksowania danych z adresami. a w AVR siem tak nie da.
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ć...
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...
A szanowni koledzy nie zauważyli że 2313 nie posiada pinu Portd.7 do którego to kolega lijon1 podobno podłączył SDA 8O I czy aby napewno adres tej pamięci to 160 :?: Pzdr. Piotrek Sz.
Long to zmienna zajmująca 4ry bajty. Jeśli więc potrafisz zapisać w EEPROMie pojedyncze bajty, to możesz zamienić Long na 4 poszczególne bajty i zapisać je kolejno do pamięci. Można chyba też ustalić adres, pod jakim fizycznie zapisywane są zmienne, więc możesz też skopiować te 4 bajty z pamięci wewnętrznej do zewnętrznej.
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...
Nie po przedrostku tylko: Dim Eliczba as ERAM byte Co do zaś zanikania danych z komórki 0 to jest to dawna sprawa, a przy tym musi być spełnione kilka warunków by doszło do takiego zdarzenia. W dodatku możesz przecież ręcznie wskazać gdzie będzie zapisana twoja zmienna za pomocą At przy deklaracji zmiennej jako pierwszą zmienną bajtową,lub zadeklarować...
Nie, adres to "word" na pewno kurcze, im dłużej patrzę tym mniej rozumiem... tak samo zapisuję i odczytuję adres jak i zmienną wpamięć, obie typu word i jedna się zapisuje poprawnie a druga nie.. jest co prawda rozwiązanie działające - zapisuje adres w eepromie procesora i śmiga aż miło, ale to takie... nie od końca to :)
mam problem z 24c16 : wiem że jest to 2048bx8 , zapisuję w kolejnych 30 komórkach liczbę np. 3 i w zasadzie jest ok , ale jak odczytuję zawartość pamięci (od 0 do 2074) to co 256 komórek powtarza się to co wpisałem na początku Dim A As Byte , B As Integer Const Adresw = 160 Const Adresr = 161 For B = 0 To 30 I2cstart I2cwbyte Adresw I2cwbyte B I2cwbyte...
Jak podłączam zaasilanie to raz komunikacja działa a raz nie, tzn. włączam układ działa, wyłączam i znowu włączam i już jest problem, może to że piny nie wykożystane nie są zaprogramowane powoduje błąd i zawieszanie się programu dodałem migającą diodę i miga cały czas więc program się nie zawiesza. Już mi ręce opadają :( jak wpisze do uC to : [syntax=basic4gl]...
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...
Chyba myślimy o innych tablicach danych chodzi ni o taką tablicę która umieszcza dane w pamięci programu a nie w ramie tak jak w tym programie do zapisywania danych w eepromie program przeznaczony do umieszczenia w procu a nie do odpalenia w symulacji chyba że komuś chce się czekać 3,5h na zapisanie 1024b albo ma dobry emulator. Cały czas z braku programatora...
Te EEPROM-y mają taki adres: MSB LSB 1010xxxR gdzie: xxx - A2 A1 A0 R - bit odczytu/zapisu Ten adres musisz wysłać do tej pamiątki aby cokolwiek sensownego na niej robić.
Pomijając literówkę w słowie "eeprom" to deklarując zmienną jako eram byte to siłą rzeczy zostaje ona automatycznie zapisywana do eepromu pod adres 0. Masz dwie opcje: pierwsza to deklaracja zmiennej jako eram byte i odczytywanie jej z eepromu z adresu 0 lub zapisanie zmiennej jako byte i wcześniejszy jej zapis do eepromu pod dowolny adres i następnie...
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...
Witam. Jak zapisuje się dane do eeprom w avrgcc? W bascomie wystarczyło zadeklarować zmienną jako zmienna typu ERAM, później zapis w programie wyglądał tak: zmienna_eeprom = zmienna analogicznie odczyt: zmienna=zmienna_eeprom Czy da się posługiwać zmiennymi tak jak powyżej w avrgcc? Wiem, że można użyć min.: eeprom_write_byte ( *adres, val) - zapisuje...
Czy to jest nowy czujnik ? Zrób mu skanowanie SA w całym dostępnym zakresie adresów, przy którym otrzymasz prawidłowe wartości (inne niż 255 i 0). Może w EEPROM'ie ma zapisany inny adres.
Tak się dzieje jak stosujesz instrukcje Gosub, program idzie do procedury a tam znowu stosujesz Gosub i w tej na koncu nieszczęsne Retrurn. Program idzie w "krzaki" bo przepełniasz stosy i nadpisujesz w pamięci Ram zmienne. Poczytaj o procedurach i funkcjach w pomocy Bascoma, użyj Declare Sub a potem Sub: i END SUB. Stosuj też deklaracje ramki i stosu...
Ten zegarek ma wyprowadzenie adresowe musi mieć na nim masę dla adresu &HA0 VCC dla &HA2. A w programie to nie jestem pewien czy z tymi adresami coś nie jest też pomieszane. Najprościej podłącz zamiast zegarka eeprom o takim samym adresie i się dowiesz czy masz zegarek sprawny. Na początek możesz zmasować wyprowadzenie SDA i zobacz czy program wyświetli...
mega16 storsuje do testów ,bo tylko to mam narazie podreką ,docelowo bedzie atmega128 ale ale ,wielkie podziekowania dla kolegi zumek z forum :) ,dostałem od niego kawałe kodu w bascom do obsługi pamiechi dataflash,ale kozystanie odbywa sie jak z zwykłego eeprom (adres zapisu do konkretnej komurki) zatem czekam na paczuszke z TME i jeszcze przed swietami...
Witam, jest program który ma za zadanie komunikować uC z PC. Wszystko poprawnie działa o ile procesor jest podłączony do programatora, a dokładnie podłączony jest kabel SCK. Dlaczego nie chce program działać po odłączeniu programatora? Programator zgodny z stk 500v2. Program: $regfile = "m32def.dat" $crystal = 11059200 $baud = 9600 $hwstack...
hm.. przy i2cwbyte niewidze delay'a 10ms na to aby eeprom mógł zapisac dane, z tego 'loadera' do eeproma wywnioskowałem że ten 'obrazek' (tablica bajtów) jest ładowany pod adresy od 0 do 255. kolejny błąd jaki widze to 'to' że tablica ta ma 504 bajty i w żaden sposób niezostanie cała zapisana do eeproma przez ten pierwszy kod. kolejny problem jest taki...
Z tego co wyliczyłem ostatnia zadeklarowana zmienna wchodzi na obszar zarezerwowany dla stosu i właśnie dlatego wyskakuje błąd braku pamięci. Zmniejsz rozmiar stosu a zobaczysz, że uda się skompilować bez błędów. Tak samo jak zwiększysz stos to jeszcze mniej zmiennych zadeklarujesz. Bardzo dużo projektów na Bascomie zrobiłem, w większości używałem EEPROMu...
Sypie błądami przy kompilacji. Jak zaremuję odczyt to błędów już nie ma, ale nie zapisuje danych do EEPROM. Z eepromu fajnie korzysta się w połączeniu ze strukturami, ale to dla większej ilości danych. Jak potrzeba 2-3 zmienne to robię coś takiego: [syntax=c] #include <avr/eeprom.h> uint16_t x1, x2; //zmienne które należy zapamiętać w eeprom...
Poopuszczałeś trochę, a do tego literówki i dlatego wyrzucało błędy. Ten program kompiluje sie poprawnie. $regfile = "attiny2313.dat" $crystal = 11059200 $hwstack = 32 $swstack = 10 $framesize = 20 'DEKLARACJA ZMIENNYCH I PROCEDUR Dim Flaga As Bit , Flaga1 As Bit Dim Wylacz As Byte , Znak As Byte , Adres As Byte , Licznik As Byte Dim Znak1...
to ze przez odpowiednie adresowanie pamęci można do niej zapisywać kolejne bajty to wiem, ale chodzi mi konkretnie o to jak dopisywać kolejne bajty, np: w basic dla dosa było to chyba tak: Open "plik.txt Append As#1 Zmiennna Close #1 Append o ile sie nie mylę dopisywało do pliku kolejne bajty Możliwe ze cos pomylilem teraz z ta składnią dla basica,...
Powód jest prosty :) Cały czas się uczę bascoma i chcę dowiedzieć się jak najwięcej. Wiem że można to zrobić zapisując w eepromie procka ale chciałby wiedzieć jak to się zapisuje do eepromu zewnętrznego. Przypuśćmy że są takie układy w których bardzo często zapisuje się nowe ustawienia i wtedy najlepszym rozwiązaniem jest zapis do pamięci zewnętrznej,...
Więc wiadomo już jaki to język, oczywiście bascom. Jest wykorzystywana taka sama zmienna ponieważ dane typu byte, zmienna startuje od 1 i index w tablicy pokrywa się z adresem eepromu. Bez problemu odczytuję dane z eepromu (oczywiście poza pętlą) więc eeprom na pewno jest :). Racja jest coś o tym w helpie, ale jakoś nie bardzo rozumiem dlaczego działa...
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...
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...
sprawdz tutaj http://www.easy-soft.pl/zasoby/opis-1-wi...
Trochę dziwna ta nota. Na obrazku co innego a w tabeli co innego ( a przedtem dalej nie chciało mi się czytać). Na stronie 55 pisze że Command Byte wyglada tak : cztery najstarsze bity to adres pod który chcesz coś wpisać a Ty chcesz pod adres z tabelki niżej czyli pod adres 00, potem dwa bity oznaczają czy to zapis czy odczyt więc znów dwa zera i potem...
Tak podajesz adres i odczytujesz z niego jeden bajt co odpowiada jednej literze (jednemu znakowi w kodzie ASCII). Co do zapisu tekstu to ja bym to ugryzł za pomocą rs232. Mianowicie używasz przejściówki USB<>RS232 i np. po wysłaniu z komputera znaku ESC wchodzisz w tryb programowania i z klawiatury wpisujesz tekst do zapisania. Ewentualnie zawsze...
Komórki pamięci są 1 bajtowe! Word ma 2 bajty. Z tego co wiem to Bascom pozwala DIMować jakąś zmienną tak aby była umieszczana w EEPROM. Wypróbuj to. Drugi wariant to taki żebyś za pomocą HIGH i LOW rozbił 2 bajtowy Adres na 2 pojedyncze bajty, zapisał je do eeprom, a następnie znów złożył przy odczycie w 2 bajtowy word. Piszesz że przy wartości np...
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.
Moja liczba to 34bity. Myślałem o stringu: 1. załaduję liczbę stringa i string do eepromu, 2. odczyt eepromu do stringa 3. Wysyłanie: odczyt kolejnych adresów stringa ( po kolei jeden adres to jeden bit który wysyłam) Mogę też tak: zacznę zapisywać to w eepromie, każdy bit to inny adres (tak będzie najłatwiej, bo będę tylko zmieniał numer adresu) ale...
sprawdzić pasowałoby czy przypadkiem nie widzi pod adresem 160 układu 24c04, ja mam pamięć 24c16 i adres pierwszej strony jest 160, taki sam ma adres układ 8583, właśnie siedzę i próbuję coś z tym zrobić bo zegar czas urzeczywistego mi zwariował jak obsługiwałem równolegle. Na tą chwilę mój RTC wyświetla mi głupoty na LCD i próbuję coś z tym zrobić....
Zagadnienie jest dość złożone, ale zacznijmy może najpierw od faktu, że AVR-ów nie programuje się w C/C++. W tym języku możesz co najwyżej napisać program, skompilować go i otrzymać plik wynikowy/wsadowy z kodem maszynowym zrozumiałym dla uC. Dopiero wtedy możesz zaprogramować uC i nie ma to znaczenia, czy kod źródłowy został napisany w C/C++, asemblerze...
Podoba mi to podejscie: Wziałem program z sieci, nie działa więc na pewno jest to wina atmegi, ST, attiny, fairchilda, motoroli ........ , ale na pewno nie moja. Atmega8 lipna, 32 lipna i 16 lipna. Wez datacheeta i ustaw rejestry samodzielnie. Jak masz konkretne pytanie to pytaj A moze po prostu sprawdz co nie działa. I2c transmisja jest dosc prosta....
Teraz problem zmiennej SINGLE . Otóż mam w programie coś takiego: Dim Tzap1 As Eram Single Dim Tterm1 As Single Tterm1 = Tzap1 Cls Napis = Fusing(tterm1 , "#.#") Lcd Napis Wait 3 Cls Main: 'program główny . . . . . . cos tam dalej . . . . Chodzi w tym o to, że podczas startu programu zapisaną wartość SINGLE mam "przepisać" do zmiennej...
Wyraźnie ci pisze "I2cwbite" czyli zapis jednego BAJTU.. w EEPROM'ie I2C komórka ma 8 bajtów.. jeśli chcesz zapisać jakąś zmienną która zajmuje więcej niż bajt to niema zmiłuj sie.. musisz podzielić na bajty... np takie coś: dim A as word A = 12345 '--------- I2cstart I2cwbyte adresw I2cwbyte adres_komórki i2cwbyte hi(A) I2cstop '--------- I2cstart...
Single ma 4 bajty jakiegos badziewia w sobie, więc: skompiluj program i dowiedz sie w okienku informacujnym pod jakim adresem jest pierwszy bajt, a potem czytasz te 4 bajty oddzielnie i juz masz zmienna rozbita na kawałki tak zeby je zapisać do eeproma. W bascomie są funkcje do odczytywania wartosci spod podanego adresu ram. Jak zmienić wartość dziesiątek...
Podaje sprawdzony program do obsługi tej pamięci: $regfile = "m32def.dat" $crystal = 8000000 Config Lcdbus = 4 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Pb.4 , Db5 = Pb.5 , Db6 = Pb.6 , Db7 = Pb.7 , E = Pb.3 , Rs = Pb.2 Config Scl = Portc.0 Config Sda = Portc.1 Declare Sub Write_eeprom(byval Adres As Byte , Byval Value As Byte)...
Witam, dziekuje za zainteresowanie tematem.. Mam podłączone dwie pamięci (z początku była jedna) o adresach 160 i 162 (program do wyszukiwania urzadzen pod 12c w bascomie wykrywa cztery adresy 160,161,162,163 - pewnie równiez te do zapisu danych). Pamięć jest na 100% dobra, programowana ICPROGIEM. Zauważyłem że (przypadkowo) dając samoa polecenie: i2cstart...
Po dodaniu adresu nadal występuje ten sam problem. Nie ma konieczności podawania adresu. Jeżeli nie jest podany address, compiler nadaje automatycznie swój address, który możesz widziec otwierając report (*.rpt) plik w 'notepad'. Wtedy nazwa zmiennej jest label i jej odczyt (readeeprom ) jest wywołany także poprzez jej nazwę a nie aktualny address...
miałem podobny problem , jednorazowo zapisywałem do eproma 6 bajtów w pętli , i zawsze po odczycie były jakieś bzdury , podzieliłem zapis na 6 osobnych podprogramów i w końcu zadziałało , wydaje mi się że to z bascomem jest coś nie tak . Sub Zapis_pam For N = 1 To 4 For Dev_adr_wr = 160 To 172 Step 4 'Pom = Tab_wzg(n) 'Msb_zap = High(pom) 'Lsb_zap =...
właśnie też czytam o eeprom i też spotkałem się z tym żeby pod adresem 1 nic nie wstawiać więc zmieniłem adres o jeden w górę i zobaczę czy to pomoże? Napotkałem jeszcze coś takiego przeszukując neta "Wrażenie uszkadzania początkowych komórek pamięci eeprom bierze się stąd, że procesor po załączaniu napięcia startuje już przy napięciu 1.8V, ładuje konfigurację...
Dlaczego tego w pętle nie dałeś, choć by for next. Wtedy cały listing zajmował by 5 linijek, no może 10 a nie taki tasiemiec Na dokładkę , to kol. raven000 chyba zapomniał ,że eepromy buforują dane do zapisu i trzeba kontrolować adres , żeby się bufor nie "przekręcił" ;) Ta procedurka , raczej nie zadziała :( Piotrek PS Co to za tajemnicza "kostka"...
eeprom adres adres eeprom adres bascom
schemat mikrofali panasonic grzeje silnik małych obrotach power kernel
niwelator laserowy electrolux washing
Buczenie w głośnikach wzmacniacza WS432 - przyczyny i rozwiązania Mycie przełącznika isostat w myjce ultradźwiękowej: wskazówki i ryzyka