Aktyw Forum
Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.
Sprawdź punkty Zarejestruj sięZapis tablicy do eepromu
Moderatorzy:Jacek Bogusz, robertw, k.pawliczak, Moderatorzy
Witajcie...
Czy zapisywał ktoś kiedyś tablice zmiennych do eepromu w AVRowym bascomie?
R_temp as byte
Zmienna as byte
Element_tablicy(400) as eram byte
Writeeeprom R_temp , element_tablicy(zmienna)
Taka linijka kodu jest nie do przełknięcia przez kompilator. Zapisywanie zamieniając "zmienną" na konkretna wartość liczbową działa ale mija się z celem przy zapisie ponad 400 zmiennych.
Jakieś pomysły zapisu do eepromu w pętli?
Z góry dziękuje za pomoc
Czy zapisywał ktoś kiedyś tablice zmiennych do eepromu w AVRowym bascomie?
R_temp as byte
Zmienna as byte
Element_tablicy(400) as eram byte
Writeeeprom R_temp , element_tablicy(zmienna)
Taka linijka kodu jest nie do przełknięcia przez kompilator. Zapisywanie zamieniając "zmienną" na konkretna wartość liczbową działa ale mija się z celem przy zapisie ponad 400 zmiennych.
Jakieś pomysły zapisu do eepromu w pętli?
Z góry dziękuje za pomoc
Chyba nie zrozumiałeś...
Faktycznie chciałem to zrobić dokładnie jak piszesz... jednak w pętli musisz jakoś zmieniać numer komórki tablicy. Czyli musisz napisać :
zmienna=1
while zmienna <400
Writeeeprom R_temp(zmienna) , element_tablicy(zmienna)
incr zmienna
wend
Problem w tym że kompilator nie przyjmuje takiej składni.
Napisanie:
element_tablicy(1) 'as eram byte
jest poprawne,
natomiast napisanie:
element_tablicy(zmienna) 'as eram byte ' zmienna as byte
już nie jest poprawne.
To co mija się z celem (ze względu na zajmowane miejsce) to pisanie:
Writeeeprom R_temp(zmienna) , element_tablicy(1)
Writeeeprom R_temp(zmienna) , element_tablicy(2)
Writeeeprom R_temp(zmienna) , element_tablicy(3)
itd.
Faktycznie chciałem to zrobić dokładnie jak piszesz... jednak w pętli musisz jakoś zmieniać numer komórki tablicy. Czyli musisz napisać :
zmienna=1
while zmienna <400
Writeeeprom R_temp(zmienna) , element_tablicy(zmienna)
incr zmienna
wend
Problem w tym że kompilator nie przyjmuje takiej składni.
Napisanie:
element_tablicy(1) 'as eram byte
jest poprawne,
natomiast napisanie:
element_tablicy(zmienna) 'as eram byte ' zmienna as byte
już nie jest poprawne.
To co mija się z celem (ze względu na zajmowane miejsce) to pisanie:
Writeeeprom R_temp(zmienna) , element_tablicy(1)
Writeeeprom R_temp(zmienna) , element_tablicy(2)
Writeeeprom R_temp(zmienna) , element_tablicy(3)
itd.
nie nie... tam jest to dodane jako komentarz rzeby dokładnie określić na jakich zmiennych operuje.. kod dokładnie wygląda tak:
dim element_tablicy(100) as eram byte
dim R_temp as byte
dim Zmienna as byte
zmienna=1
while zmienna < 100
R_temp = jakieś obliczenia
writeeeprom R_temp , element_tablicy(zmienna)
incr zmienna
wend
i taki kod nie działa...
natomiast wymiana (zmiena) na (1)
dim element_tablicy(100) as eram byte
dim R_temp as byte
dim Zmienna as byte
zmienna=1
while zmienna < 100
R_temp = jakieś obliczenia
writeeeprom R_temp , element_tablicy(1)
incr zmienna
wend
już śmiga.
Tylko nie daje mi to możliwości zmiany elementu tablicy. Tu mam problem właśnie...
dim element_tablicy(100) as eram byte
dim R_temp as byte
dim Zmienna as byte
zmienna=1
while zmienna < 100
R_temp = jakieś obliczenia
writeeeprom R_temp , element_tablicy(zmienna)
incr zmienna
wend
i taki kod nie działa...
natomiast wymiana (zmiena) na (1)
dim element_tablicy(100) as eram byte
dim R_temp as byte
dim Zmienna as byte
zmienna=1
while zmienna < 100
R_temp = jakieś obliczenia
writeeeprom R_temp , element_tablicy(1)
incr zmienna
wend
już śmiga.
Tylko nie daje mi to możliwości zmiany elementu tablicy. Tu mam problem właśnie...
A moze tak:
zapiszesz R_temp do tablicy w eepromie wewnątrz AVRa.
O to chodziło ??
Kod: Zaznacz cały
Element_tablicy(400) as eram byte
....
while zmienna < 100
R_temp = jakieś obliczenia
element_tablicy(zmienna)=R_temp
incr zmienna
O to chodziło ??
Tak działa
Natomiast obczaiłem jeszcze inny sposób. Otóż w pleceniu
writeeeprom var, adres
zmienna adres wcale nie musi być deklarowana jako zmienna eram. Można wstawić tam zwykłą zmienną byte i też śmiga... co więcej można tam wstawić nawet z palca wpisaną konkretną liczbę. Co więcej jeśli wstawimy tam jakaś zwykłą zmienną to już kompilator przyjmuje składnie zmienna(zmienna2) szkoda ze help tego nie opisuje
P.S. dlatego lubie ASM inna bajka ze nie znoszę go za czas jaki trzeba mu poświecić
Natomiast obczaiłem jeszcze inny sposób. Otóż w pleceniu
writeeeprom var, adres
zmienna adres wcale nie musi być deklarowana jako zmienna eram. Można wstawić tam zwykłą zmienną byte i też śmiga... co więcej można tam wstawić nawet z palca wpisaną konkretną liczbę. Co więcej jeśli wstawimy tam jakaś zwykłą zmienną to już kompilator przyjmuje składnie zmienna(zmienna2) szkoda ze help tego nie opisuje
P.S. dlatego lubie ASM inna bajka ze nie znoszę go za czas jaki trzeba mu poświecić
Witam
np tak
działa bez problemu
np tak
Kod: Zaznacz cały
for index = 1 to 8
ds = &h0f + index
writeeeprom dsadres1(index) , ds
next index
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 90 gości