[avr-gcc] znow te wskazniki (wrr)



Masz problem? Zapytaj na forum elektroda.pl

Poprzedni Następny
Wiadomość
Spis treści
From: "Pawel Kurzawa" <groups_at_nospam_kpw.qs.pl>
Subject: [avr-gcc] znow te wskazniki (wrr)
Date: Fri, 5 Nov 2004 11:13:20 +0100


Witam,
juz mnie szewska pasja dopadla :)

struktura z danymi o pierwszym wolnym adresie we flashu (at45db011)
struct Flash_Addr{
u16 Page_Addr;
u16 Byte_Addr;
};

prototyp:
void FlashMem_write_block (void *Buff, Address_t *Addr, size_t n);

funkcje ma zapisywac dowolna dana od bajtu do struktury. np.

struct Store{
u16 Store_Data;
u16 Store_Time;
u32 Store_Param;
};

wywolanie:
FlashMem_write_block (&Store, &Flash_Addr, sizeof(Store));

no i przy kompilacji wywala:
warning: passing arg 1 of `FlashMem_read_block' discards qualifiers from
pointer target type
warning: passing arg 2 of `FlashMem_read_block' discards qualifiers from
pointer target type

nadmienie tylko ze w funkcji sa modyfikowane zmienne Store oraz Flash_Addr.
Krew mnie zalewa :(
--
--
Best regards
K_at_nospam_pW from Poland

kpw(at)qs.pl
http://kpw.qs.pl
UIN: 8017753
GG: 1263183
---------------- end ----------------



Poprzedni Następny
Wiadomość
Spis treści
From: "Pawel Kurzawa" <groups_at_nospam_kpw.qs.pl>
Subject: Re: [avr-gcc] znow te wskazniki (wrr)
Date: Fri, 5 Nov 2004 11:43:45 +0100


void FlashMem_write_block (void *Buff, Address_t *Addr, size_t n);
void FlashMem_write_block (volatile void *Buff, volatile Address_t *Addr,
size_t n);
to wiem ze pomoze, ale czy to jest prawidlowe wyjscie?

--
--
Best regards
K_at_nospam_pW from Poland

kpw(at)qs.pl
http://kpw.qs.pl
UIN: 8017753
GG: 1263183
---------------- end ----------------



Poprzedni Następny
Wiadomość
Spis treści
From: J.F. <jfox_nospam_at_nospam_poczta.onet.pl>
Subject: Re: [avr-gcc] znow te wskazniki (wrr)
Date: Fri, 05 Nov 2004 12:37:11 +0100


On Fri, 5 Nov 2004 11:13:20 +0100, Pawel Kurzawa wrote:
struktura z danymi o pierwszym wolnym adresie we flashu (at45db011)
struct Flash_Addr{
u16 Page_Addr;
u16 Byte_Addr;
};

Zdefiniowales typ strukturalny, a nie zdefiniowales zmiennej !

Teraz albo:
a) zmieniasz na
struct {
u16 Page_Addr;
u16 Byte_Addr;
} Flash_Addr;

[nie bardzo polecam - zazwyczaj typ strukturalny sie przydaje]

b) zmieniasz na
struct Flash_Addr {
u16 Page_Addr;
u16 Byte_Addr;
} Flash_Buf;


c) dodajesz

Flash_Addr Flash_Buf;

Czyli definiujemy zmienna typu Flash_addr - a wiec strukture.

wywolanie:
FlashMem_write_block (&Store, &Flash_Addr, sizeof(Store));

no i przy kompilacji wywala:
warning: passing arg 1 of `FlashMem_read_block' discards qualifiers from
pointer target type

Bo mniej wiecej napisales cos typu
FlashMem_write_block (& float, & int , sizeof(float));

Przyznasz chyba ze dwa pierwsze argumenty sa glupota :-)

J.


Poprzedni Następny
Wiadomość
Spis treści
From: "Pawel Kurzawa" <groups_at_nospam_kpw.qs.pl>
Subject: Re: [avr-gcc] znow te wskazniki (wrr)
Date: Fri, 5 Nov 2004 14:45:27 +0100


w sumie chcialem to za bardzo uproscic zeby bylo czytelne i wyszla bzdura.
bo wyglada to tak:

typedef struct {
u16 Page_Addr;
u16 Byte_Addr;
}Address_t;

Address_t Flash_Addr;

prototyp:
void FlashMem_write_block (void *Buff, Address_t *Addr, size_t n);

wywolanie:
FlashMem_write_block (&Store, &Flash_Addr, sizeof(Store));


--
--
Best regards
K_at_nospam_pW from Poland

kpw(at)qs.pl
http://kpw.qs.pl
UIN: 8017753
GG: 1263183
---------------- end ----------------