Look
Guest
Sat Dec 31, 2005 12:12 pm
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.
Look
Guest
Sat Dec 31, 2005 1:16 pm
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.
Piotr
Guest
Fri Jan 06, 2006 5:22 pm
Użytkownik "Look" napisał w wiadomości
Quote:
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??
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;
}