RTV forum PL | NewsGroups PL

Uruchomienie zewnętrznego RAM w ATmega 128 z WinAVR - SRE i konfiguracja

atmega 128 + external ram

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Uruchomienie zewnętrznego RAM w ATmega 128 z WinAVR - SRE i konfiguracja

Guest

Mon Jan 28, 2008 12:42 pm   



Witam. Czy komuś w winavr-rze udało się odpalić zewnętrzny Ram. Ja
próbuję ale z mizernym skutkiem. Mam podłączony CS do nóżki A15 więc
adres zewnętrznego ramu zaczyna się od 0x8000 co też wpisałem w pliku
Make file (a właściwie program do tworzenia makefila). Nie wiem
jedynie w którym miejscu w rejestrze MCUCR wpisać SRE. Wiem że musi to
nastąpić przed funkcją main próbowałem ze stronki o winavrze libc
kombinacji z .init3 ale też nie działa. Jeśli ktoś ma jakieś
doświadczenie to byłoby super. Acha jak chcę przerzucić do
zewnętrznego ramu całą zawartość tak aby nie korzystał z wewnętrznego.
Pozdrawiam

Pelos
Guest

Mon Jan 28, 2008 1:04 pm   



Użytkownik <michwolo@gmail.com> napisał w wiadomości
news:89f78f64-b51a-4adb-88ef-e100c1126617@q21g2000hsa.googlegroups.com...
Witam. Czy komuś w winavr-rze udało się odpalić zewnętrzny Ram. Ja

<Ciach>
Przypomnij sie na priva. Poszukam.

--
Pelos
http://www.pelos.pl

Xaveri
Guest

Mon Jan 28, 2008 1:06 pm   



Użytkownik "Pelos" <pelos@pelos.pl> napisał w wiadomości
news:fnkgd7$p6v$1@inews.gazeta.pl...
Quote:

Użytkownik <michwolo@gmail.com> napisał w wiadomości
news:89f78f64-b51a-4adb-88ef-e100c1126617@q21g2000hsa.googlegroups.com...
Witam. Czy komuś w winavr-rze udało się odpalić zewnętrzny Ram. Ja

Ciach
Przypomnij sie na priva. Poszukam.

--
Pelos
http://www.pelos.pl

Dlaczego na priva - mnie też to interesuje Wink.


Xaveri
Guest

Mon Jan 28, 2008 1:06 pm   



Użytkownik "Pelos" <pelos@pelos.pl> napisał w wiadomości
news:fnkgd7$p6v$1@inews.gazeta.pl...
Quote:

Użytkownik <michwolo@gmail.com> napisał w wiadomości
news:89f78f64-b51a-4adb-88ef-e100c1126617@q21g2000hsa.googlegroups.com...
Witam. Czy komuś w winavr-rze udało się odpalić zewnętrzny Ram. Ja

Ciach
Przypomnij sie na priva. Poszukam.

--
Pelos
http://www.pelos.pl

Dlaczego na PRIV - mnie też zagadnienie zewnętrznego RAM do M128

interesuje... Wink.

Pelos
Guest

Mon Jan 28, 2008 1:18 pm   



Użytkownik "Xaveri" <Xaveri@poczta.fm> napisał w wiadomości
news:fnkfs5$9hi$3@node1.news.atman.pl...
Quote:
Użytkownik "Pelos" <pelos@pelos.pl> napisał w wiadomości
news:fnkgd7$p6v$1@inews.gazeta.pl...

Użytkownik <michwolo@gmail.com> napisał w wiadomości
news:89f78f64-b51a-4adb-88ef-e100c1126617@q21g2000hsa.googlegroups.com...
Witam. Czy komuś w winavr-rze udało się odpalić zewnętrzny Ram. Ja

Ciach
Przypomnij sie na priva. Poszukam.

--
Pelos
http://www.pelos.pl

Dlaczego na PRIV - mnie też zagadnienie zewnętrznego RAM do M128
interesuje... Wink.
Bo jak sie nie przypomni to zapomne. Ok wrzuce na stronke Smile


--
Pelos
http://www.pelos.pl

JS
Guest

Mon Jan 28, 2008 9:42 pm   



W artykule
<89f78f64-b51a-4adb-88ef-e100c1126617@q21g2000hsa.googlegroups.com>
michwolo@gmail.com napisał:

Quote:
Witam. Czy komuś w winavr-rze udało się odpalić zewnętrzny Ram. Ja
próbuję ale z mizernym skutkiem. Mam podłączony CS do nóżki A15 więc
adres zewnętrznego ramu zaczyna się od 0x8000 co też wpisałem w pliku

Na pewno CS jest aktywny stanem wysokim?

--
Pozdrawiam!
Jarosław Szynal

MK
Guest

Tue Jan 29, 2008 11:41 am   



Użytkownik <michwolo@gmail.com> napisał w wiadomości
news:89f78f64-b51a-4adb-88ef-e100c1126617@q21g2000hsa.googlegroups.com...
Witam. Czy komuś w winavr-rze udało się odpalić zewnętrzny Ram. Ja
próbuję ale z mizernym skutkiem. Mam podłączony CS do nóżki A15 więc
adres zewnętrznego ramu zaczyna się od 0x8000 co też wpisałem w pliku
Make file (a właściwie program do tworzenia makefila). Nie wiem
jedynie w którym miejscu w rejestrze MCUCR wpisać SRE. Wiem że musi to
nastąpić przed funkcją main próbowałem ze stronki o winavrze libc
kombinacji z .init3 ale też nie działa. Jeśli ktoś ma jakieś
doświadczenie to byłoby super. Acha jak chcę przerzucić do
zewnętrznego ramu całą zawartość tak aby nie korzystał z wewnętrznego.
Pozdrawiam


Proszę ustawić MCUCR=0x80; dla atmega128 może to być przeciez w main.
Można adresować zewn. pamięć od 0x1100 do 0x1100+0x8000.
Pozdrawiam M.K.

Jurek Szczesiul
Guest

Tue Jan 29, 2008 6:49 pm   



Tue, 29 Jan 2008 11:45:45 +0100, na pl.misc.elektronika, MK napisał(a):

Quote:
jedynie w którym miejscu w rejestrze MCUCR wpisać SRE. Wiem że musi to
nastąpić przed funkcją main próbowałem ze stronki o winavrze libc
kombinacji z .init3 ale też nie działa
.........
Proszę ustawić MCUCR=0x80; dla atmega128 może to być przeciez w main.
Można adresować zewn. pamięć od 0x1100 do 0x1100+0x8000.

Jeśli włączenie ext ram będzie w main - to zostanie stracona przeprowadzana
wcześniej inicjalizacja zmiennych oraz domyślne zerowanie. Rzeczywiście
najlepiej w init3 ( te sekcje startowe właśnie do takich celów są ). Można
to zrobić dodatkowym pliczkiem asm albo bezpośrednio w C, deklarując i
definiując funkcję :

void EnableExtRam(void) __attribute__ ((naked)) __attribute__ ((section
(".init3")));

void EnableExtRam(void)
{
XMCRA = 0;
XMCRB = _BV(XMBK);
MCUCR = _BV(SRE);
}

Funkcji tej nigdzie jawnie nie wywołujemy - sama definicja powoduje
umieszczenie kodu w odpowiednim miejscu - zaraz za wektorami przerwań a
przed załadowaniem zmiennych inicjalizowanych:

..............................
0000008c <__ctors_end>:
8c: 11 24 eor r1, r1
8e: 1f be out 0x3f, r1 ; 63
90: cf ef ldi r28, 0xFF ; 255
92: d0 e1 ldi r29, 0x10 ; 16
94: de bf out 0x3e, r29 ; 62
96: cd bf out 0x3d, r28 ; 61

00000098 <EnableExtRam>:

void EnableExtRam(void)
{
98: 10 92 6d 00 sts 0x006D, r1
XMCRA = 0;
XMCRB = _BV(XMBK);
9c: 80 e8 ldi r24, 0x80 ; 128
9e: 80 93 6c 00 sts 0x006C, r24
MCUCR = _BV(SRE);
a2: 85 bf out 0x35, r24 ; 53

000000a4 <__do_copy_data>:
a4: 11 e0 ldi r17, 0x01 ; 1
a6: a0 e0 ldi r26, 0x00 ; 0
a8: b1 e0 ldi r27, 0x01 ; 1
.........................................................................

To zapewni fizyczne włączenie ext ram odpowiednio wcześniej, natomiast
dyrektywa linkera :
-Tdata=0x801100
umieści tam wszystkie zmienne.

--
Pozdrowienia
Jurek Szczesiul

Guest

Thu Jan 31, 2008 8:41 am   



On 29 Sty, 18:49, Jurek Szczesiul <jerzy.szczes...@wycin.ep.com.pl>
wrote:
Quote:
Tue, 29 Jan 2008 11:45:45 +0100, na pl.misc.elektronika, MK napisał(a):



jedynie w którym miejscu w rejestrze MCUCR wpisać SRE. Wiem że musi to
nastąpić przed funkcją main próbowałem ze stronki o winavrze libc
kombinacji z .init3 ale też nie działa
........
Proszę ustawić MCUCR=0x80; dla atmega128 może to być przeciez w main.
Można adresować zewn. pamięć od 0x1100 do 0x1100+0x8000.

Jeśli włączenie extrambędzie w main - to zostanie stracona przeprowadzana
wcześniej inicjalizacja zmiennych oraz domyślne zerowanie. Rzeczywiście
najlepiej w init3 ( te sekcje startowe właśnie do takich celów są ). Można
to zrobić dodatkowym pliczkiem asm albo bezpośrednio w C, deklarując i
definiując funkcję :

void EnableExtRam(void) __attribute__ ((naked)) __attribute__ ((section
(".init3")));

void EnableExtRam(void)
{
XMCRA = 0;
XMCRB = _BV(XMBK);
MCUCR = _BV(SRE);

}

Funkcji tej nigdzie jawnie nie wywołujemy - sama definicja powoduje
umieszczenie kodu w odpowiednim miejscu - zaraz za wektorami przerwań a
przed załadowaniem zmiennych inicjalizowanych:

.............................
0000008c <__ctors_end>:
8c: 11 24 eor r1, r1
8e: 1f be out 0x3f, r1 ; 63
90: cf ef ldi r28, 0xFF ; 255
92: d0 e1 ldi r29, 0x10 ; 16
94: de bf out 0x3e, r29 ; 62
96: cd bf out 0x3d, r28 ; 61

00000098 <EnableExtRam>:

void EnableExtRam(void)
{
98: 10 92 6d 00 sts 0x006D, r1
XMCRA = 0;
XMCRB = _BV(XMBK);
9c: 80 e8 ldi r24, 0x80 ;128
9e: 80 93 6c 00 sts 0x006C, r24
MCUCR = _BV(SRE);
a2: 85 bf out 0x35, r24 ; 53

000000a4 <__do_copy_data>:
a4: 11 e0 ldi r17, 0x01 ; 1
a6: a0 e0 ldi r26, 0x00 ; 0
a8: b1 e0 ldi r27, 0x01 ; 1
........................................................................

To zapewni fizyczne włączenie extramodpowiednio wcześniej, natomiast
dyrektywa linkera :
-Tdata=0x801100
umieści tam wszystkie zmienne.

--
Pozdrowienia
Jurek Szczesiul

Ok wszystko to rozumiem tylko takie pytanko jakie waitstaity dać
używam kwarca 18.432MHz, podejrzewam iż się nie wyrabia a w pdf ta
kwestia jest strasznie zamotana. A może mam poprostu Ram uszkodzony.
Dzięki

Guest

Thu Jan 31, 2008 12:41 pm   



Witam wielkie dzięki dla Pana Jurka Sz. . Sposób przez niego podany
jest w 100% sprawdzony i działa na pewno, ja miałem problem z CS-em
wyzwalany jest 0. Jeszcze raz dzięki pozdrawiam

elektroda NewsGroups Forum Index - Elektronika Polska - Uruchomienie zewnętrznego RAM w ATmega 128 z WinAVR - SRE i konfiguracja

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map