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

Ajatol
-
-
Posty: 3
Rejestracja: 3 cze 2003, o 21:44
Kontaktowanie:

Dodanie peryferi do ATMega128

Postautor: Ajatol » 11 sie 2003, o 01:32

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.

saltcom
-
-
Posty: 6
Rejestracja: 2 sty 2006, o 19:29
Lokalizacja: Krakow

Postautor: saltcom » 17 sty 2006, o 15:18

prosiłbym o instruktaż jak nalezy czytać/zapisywac/inicjowac dodatkową kość pamieci flash (np.AMD)

jakich uzywac funkcji w avr-gcc dla atmegi128L

prosze poradzcie...

radcorp
-
-
Posty: 79
Rejestracja: 2 sty 2006, o 15:52
Lokalizacja: Polska

Postautor: radcorp » 18 sty 2006, o 21:56

-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

saltcom
-
-
Posty: 6
Rejestracja: 2 sty 2006, o 19:29
Lokalizacja: Krakow

Postautor: saltcom » 19 sty 2006, o 22:49

hej
dzieki za odpowiedz :)

co do rodzaju pamieci to chodzilo o ukladu AMD np. am29lv256m
wiem ze w zaleznosci od pamieci sa rozne algorytmy odczytu i zapisu ale sie zastanawialem jak ugryzc to wszystko w jezyku C ??
cos juz probuje skrobac ale kazda sugestia mile widziana :)

radcorp
-
-
Posty: 79
Rejestracja: 2 sty 2006, o 15:52
Lokalizacja: Polska

Postautor: radcorp » 20 sty 2006, o 23:10

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

saltcom
-
-
Posty: 6
Rejestracja: 2 sty 2006, o 19:29
Lokalizacja: Krakow

Postautor: saltcom » 21 sty 2006, o 09:53

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 :)

radcorp
-
-
Posty: 79
Rejestracja: 2 sty 2006, o 15:52
Lokalizacja: Polska

Postautor: radcorp » 21 sty 2006, o 19:59

zapis jest dobry, jedyne co trzeba zrobić to podać kostce ile bajtów będzie się zapisywać
np: zapis 6B to trzeba podać 5, 10B to 9 itp.

na to drugie pytanie trudno mi odpowiedzieć bo nie wiem co masz na myśli

saltcom
-
-
Posty: 6
Rejestracja: 2 sty 2006, o 19:29
Lokalizacja: Krakow

Postautor: saltcom » 22 sty 2006, o 09:10

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 :)

radcorp
-
-
Posty: 79
Rejestracja: 2 sty 2006, o 15:52
Lokalizacja: Polska

Postautor: radcorp » 22 sty 2006, o 14:44

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ść

saltcom
-
-
Posty: 6
Rejestracja: 2 sty 2006, o 19:29
Lokalizacja: Krakow

Postautor: saltcom » 30 sty 2006, o 20:23

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.

Wróć do „AVR/AVR32”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 89 gości