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ęDodanie peryferi do ATMega128
Moderatorzy:Jacek Bogusz, procesorowiec, r-mik, Moderatorzy
Witam
Po pierwsze muszę podłączyć pamięć zewnętrzną do ATMega128(nie pomyliłem się). Powinna być to pamięć flash o pojemności 1M i najlepiej organizacji bankowej (16 * 64kb) , ale w ostateczności może być zwykła bez banków pamięci. Będzie używana jako pamięć danych a wewnętrzny flash ATMegi (128 kb) wykożystam jako pamięć programu. Niewiem jak rozwiązać sterowanie tą pamięcią.
Drugi problem to do tego procesora będzie podłączone pięć scalaków portów 8255 w sumie pietnaście portów wyjściowych (aż tyle mi potrzeba) a problem ten sam . Jak rozwiązać sterowanie to znaczy jak wybierać poszczególne porty do zapisu.
Wcześniej bawiłem się na Z80 i problemów większych nie miałem ale w AVR czuję się jakiś zagubiony.
Po pierwsze muszę podłączyć pamięć zewnętrzną do ATMega128(nie pomyliłem się). Powinna być to pamięć flash o pojemności 1M i najlepiej organizacji bankowej (16 * 64kb) , ale w ostateczności może być zwykła bez banków pamięci. Będzie używana jako pamięć danych a wewnętrzny flash ATMegi (128 kb) wykożystam jako pamięć programu. Niewiem jak rozwiązać sterowanie tą pamięcią.
Drugi problem to do tego procesora będzie podłączone pięć scalaków portów 8255 w sumie pietnaście portów wyjściowych (aż tyle mi potrzeba) a problem ten sam . Jak rozwiązać sterowanie to znaczy jak wybierać poszczególne porty do zapisu.
Wcześniej bawiłem się na Z80 i problemów większych nie miałem ale w AVR czuję się jakiś zagubiony.
-podaj typ pamięci jakich chcesz użyć, samo słowo flash to mało(pełna nazwa układu np: 24C64)
-są różne pamięci typu flash, różniące się algorytmem zapisu
tak mała dygresja
zapis do pamięci flash danych może nastąpić tylko jeżeli komórka pamięci zostanie skasowana (ustawiona w 0xFF) i tu jest problem różne pamięci różnie kasują zawartość pamięci, jedne mogą kasować pojedyńcze komórki, a niektóre tyko całe bank np: po 8kB
-jeżeli ma to być pamięć danych to lepiej zastosować pamięci typu SRAM po to je zrobiono
-są różne pamięci typu flash, różniące się algorytmem zapisu
tak mała dygresja
zapis do pamięci flash danych może nastąpić tylko jeżeli komórka pamięci zostanie skasowana (ustawiona w 0xFF) i tu jest problem różne pamięci różnie kasują zawartość pamięci, jedne mogą kasować pojedyńcze komórki, a niektóre tyko całe bank np: po 8kB
-jeżeli ma to być pamięć danych to lepiej zastosować pamięci typu SRAM po to je zrobiono
z tego co wyczytałem na szybko z data sheet to ta kostka ma dwa sposobu zapisu
pierwszy tradycyjny, drugi tzw. write buffer, zapis 32Bytes lub 16words
żeby dobrać się do tych funkcji trzeba wygenerować odpowiednią sekwencję na wejściach
, w data sheet jest tabelka pokazująca co trzeba zrobić żeby wybrać jedną z funkcji, oprócz tego zawarte tam są algoryty jak prawidłowo zapisać i odczytać dane z układu.
może głupia ta podpowiedz, ale bez dograej znajomości data sheet nie da rady nic zrobić z tym układem
powodzenia
pierwszy tradycyjny, drugi tzw. write buffer, zapis 32Bytes lub 16words
żeby dobrać się do tych funkcji trzeba wygenerować odpowiednią sekwencję na wejściach
, w data sheet jest tabelka pokazująca co trzeba zrobić żeby wybrać jedną z funkcji, oprócz tego zawarte tam są algoryty jak prawidłowo zapisać i odczytać dane z układu.
może głupia ta podpowiedz, ale bez dograej znajomości data sheet nie da rady nic zrobić z tym układem
powodzenia
yhy
a mam pytanko - co zrobic jesli paczka ma 41 bytes a chce zapisywac po 32 bytes i np. rozpoczac z pod dowolnego adresu czyli moze sie zdarzyc ze zapis wygladalby tak :
zapisanie 3bytes
zapisanie 32bytes
zapisanie 6bytes
razem mamy 41bytes (tu dodolna wielkosc)
i co zrobic jesli sie nie opatrzenie bedzie się chcialo zapisac wiecej niz jest wolnego miejsca ?
pozdrawiam
a mam pytanko - co zrobic jesli paczka ma 41 bytes a chce zapisywac po 32 bytes i np. rozpoczac z pod dowolnego adresu czyli moze sie zdarzyc ze zapis wygladalby tak :
zapisanie 3bytes
zapisanie 32bytes
zapisanie 6bytes
razem mamy 41bytes (tu dodolna wielkosc)
i co zrobic jesli sie nie opatrzenie bedzie się chcialo zapisac wiecej niz jest wolnego miejsca ?
pozdrawiam
oki
a w tym ostatnim pytaniu chodzilo mi o to ze jesli zaczne zapisywac gdzies w ostatnich obszarach pamieci ale moja paczka danych bedzie b.duza to braknie miejsca ... i co z tym zrobic :
- caly czas sprawdzac przy kazdym zapisie czy jest jeszcze wolne miejsce czy tylko ograniczyc sie do wyjatkowych sytuacji a jesli tak to do jakich ?
- no i czy wogole jest szansa aby sie ustrzec przed nadpisaniem wczesniej zapisanych danych... tzn. czy jest sposob aby kontrolwac to ze poprzednio zapisywalem od danego adresu do jakiegos adresu a nastepnie jesli zaczne pisac od innego wczesniejszego adresu to zeby moje dane nie wkroczyly na te wczesniej zapisane dane (tak sie stanie oczywiscie gdybym zle podal adresy zapisu [bo to mozna wczesniej policzyc i tak ustalic aby sie nie nadpisaly]) ale czy my jestesmy w stanie stworzyc jakis alg. automatycznej ochrony tych danych...
to tylunio,
pozdrawiam
a w tym ostatnim pytaniu chodzilo mi o to ze jesli zaczne zapisywac gdzies w ostatnich obszarach pamieci ale moja paczka danych bedzie b.duza to braknie miejsca ... i co z tym zrobic :
- caly czas sprawdzac przy kazdym zapisie czy jest jeszcze wolne miejsce czy tylko ograniczyc sie do wyjatkowych sytuacji a jesli tak to do jakich ?
- no i czy wogole jest szansa aby sie ustrzec przed nadpisaniem wczesniej zapisanych danych... tzn. czy jest sposob aby kontrolwac to ze poprzednio zapisywalem od danego adresu do jakiegos adresu a nastepnie jesli zaczne pisac od innego wczesniejszego adresu to zeby moje dane nie wkroczyly na te wczesniej zapisane dane (tak sie stanie oczywiscie gdybym zle podal adresy zapisu [bo to mozna wczesniej policzyc i tak ustalic aby sie nie nadpisaly]) ale czy my jestesmy w stanie stworzyc jakis alg. automatycznej ochrony tych danych...
to tylunio,
pozdrawiam
jedynym rozsądnym zabezpieczeniem przed zapisem jest zapamiętywane ostatniego adresu i sprawdzanie czy adres bierzący jest większy czy mniejszy od tego zapamiętanego,
jeśli jest mniejszy to error i koniec zapisu (będzie o przypominąć zapis na stos w uP, zawsze do góry, a nie do dołu), ma to wadę Flash ma skończoną wielkość
jeśli jest mniejszy to error i koniec zapisu (będzie o przypominąć zapis na stos w uP, zawsze do góry, a nie do dołu), ma to wadę Flash ma skończoną wielkość
czy jest ktoś w stanie opisać i podać przykład dla opcji zapisu we wspomnianym flashu "write buffer" (zapis 32 bytes)
bede wdzięczny
PA, PD, WBL, SA (jak tym sie posługiwać - prosze o przykład - oczywiście jezyk C)
z góry wielkie dzięki
pozdrawiam
[ Dodano: 14-02-2006, 05:29 ]
krotkie pytanie z innej beczki ale w obrębie atmegi 128:
jak obsłużyć wbudowane TWI (jak wygląda inicjacja ? na co trzeba zwrocic uwage) - oczywiscie pozostajemy w obrebie jezyka C
pozdr.
bede wdzięczny
PA, PD, WBL, SA (jak tym sie posługiwać - prosze o przykład - oczywiście jezyk C)
z góry wielkie dzięki
pozdrawiam
[ Dodano: 14-02-2006, 05:29 ]
krotkie pytanie z innej beczki ale w obrębie atmegi 128:
jak obsłużyć wbudowane TWI (jak wygląda inicjacja ? na co trzeba zwrocic uwage) - oczywiscie pozostajemy w obrebie jezyka C
pozdr.
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 2 gości