XDATA i ATmega

Dec 31, 2005 2 Replies

hey.



przerabiam właśnie program z 8051 na ATmege i mam problem z pewną deklaracją. u_int xdata Loc_var; pytanie co zrobić z tym xdata?? wyczytałem ze tak się deklaruje zmienną w zewnętrznej pamięci dla 8051. ja przerabiam to na ATmege64 i też mam do niej doczepioną zewnętrzną pamięć i chciałbym zrobić przez analogie tak samo. Czy w gcc jest jakiś sposób na taką deklaracje??



Pozdrawiam.


no więc kombinuje nadal i tak sobie wymyśliłem: ta moja zewnętrzna pamięć to tak naprawde urządzenie do którego musze dokonać wpisów. więc zmienne które zadeklaruje muszą być w przestrzeni adresowej tego urządzenia.

#define OFFSET 0x8000

unsigned int *p = (unsigned int*) (OFFSET+1)

*p = 0x11;

myśle że takie rozwiązanie powinno zadziałać. OFFSET to rozmiar pamięci SRAM mojej ATmegi. a zapis

*p = 0x11; powinien być już wpisem do pamięci mojego urządzenia. czy dobrze kombinuje?? proszę o jakieś inne sugestie jeśli to możliwe.

Pozdrawiam.

U¿ytkownik "Look" snipped-for-privacy@priv4.onet.pl> napisa³ w wiadomo¶ci news: snipped-for-privacy@priv4.onet.pl...

Dobrze kombinujesz - to nprawde dziala :), ja korzystalem z ATMEGA128 i robilem podobnie przykladowo dla tego uP dostep do kosci USB podpietej do magistrali - robilem tak:

#define OFFSET 0x1100

void writeUsb(U8 Adres,U8 Dana) {

U8 *portBase = (U8*)OFFSET;

*(portBase+Adres) = Dana; }

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required