AVRGCC i ja raz jeszcze... ;-)



Masz problem? Zapytaj na forum elektroda.pl

Poprzedni Następny
Wiadomość
Spis treści
From: Milosz Skowyra <mewashek_at_nospam_wp.pl>
Subject: AVRGCC i ja raz jeszcze... ;-)
Date: Wed, 12 May 2004 12:43:45 +0200


Ehlo.

Na wstepie... potrzebne do kombajnu marchewkowego ;-)

Mam strukture:
typedef struct
{
int adres[6];
unsigned char preheat[6];
unsigned char limit[6];
unsigned char character[6];
unsigned char nazwa[16] ;
}eeprom_set;

Struktura owa jest powiazana w pewien sposob z wielopoziomowym menu. W
pewnym miejscu programu tzn. tam gdzie nastepuje wyswietlenie konkretnej
wartosci ze struktury, nastepuje ustawienie wskaznika: int *edit_buffer
na dana za pomoca: edit_pointer=&ustawienia.adres[mep2-2]; W zupelnie
innej czesci programu musze miec mozliwosc edytowania wartosci na ktora
wskazuje edit_buffer. Dokonuje tego za pomoca np. (*edit_pointer)++;
Teraz problem: Jak widac struktura ma 2 typy danych inty i chary. Tak
byc musi, jak zmienie char-y na inty to w EEPROM-ie mi sie nie pomiesci,
adres musi byc intem. Procedura edycji danych musi byc jedna i edytowac
zmienne int i char. Jak to zrobic zeby wskaznik int *edit_buffer mogl
wsazywac obiekty char. Bo wskazywac to potrafi
edit_pointer=(int*)(&ustawienia.limit[mep2-2]); ale zapisuje dana jako
inta (zajmuje 2 bajty i slusznie).
Co powinienem sie dowiedziec ?? I czy w tym przypadku nie mam znow
problemu ze wskaznikami ?? Poczytalem K&R ale nie ma tam zasadniczo
informacji jak postapic w tym przypadku. Teoretycznie moglbym
wykorzystac wskaznik typu void i przepisywac go do wskaznika albo typu
char albo typu int. Ale moze da sie bardziej elegancko. Moglbym tez niby
przeciazyc funkcje, ale wolalbym miec dwa w jednym... da sie tak ??


--
Regards. Przy odpowiedzi usun "." przed "net" z adresu!!!
|-----------------------------------------------------|
| Milosz Skowyra GSM Mobile +48 600 95 35 72 |
| miloszek_at_nospam_fido.net.org.pl 2:484/2.47 on fidonet |
|-----------------------------------------------------|

========
Path: news-archive.icm.edu.pl!news2.icm.edu.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: "Andy" <anokWYTNIJ_at_nospam_ceti.pl>
Subject: Re: AVRGCC i ja raz jeszcze... ;-)
Date: Wed, 12 May 2004 14:17:48 +0200


Użytkownik "Milosz Skowyra" <mewashek_at_nospam_wp.pl> napisał w wiadomości
news:40A1FFE1.ECFCA803_at_nospam_wp.pl...
Ehlo.

Na wstepie... potrzebne do kombajnu marchewkowego ;-)

Mam strukture:
typedef struct
{
int adres[6];
unsigned char preheat[6];
unsigned char limit[6];
unsigned char character[6];
unsigned char nazwa[16] ;
}eeprom_set;

Struktura owa jest powiazana w pewien sposob z wielopoziomowym menu. W
pewnym miejscu programu tzn. tam gdzie nastepuje wyswietlenie konkretnej
wartosci ze struktury, nastepuje ustawienie wskaznika: int *edit_buffer
na dana za pomoca: edit_pointer=&ustawienia.adres[mep2-2]; W zupelnie
innej czesci programu musze miec mozliwosc edytowania wartosci na ktora
wskazuje edit_buffer. Dokonuje tego za pomoca np. (*edit_pointer)++;
Teraz problem: Jak widac struktura ma 2 typy danych inty i chary. Tak
byc musi, jak zmienie char-y na inty to w EEPROM-ie mi sie nie pomiesci,
adres musi byc intem. Procedura edycji danych musi byc jedna i edytowac
zmienne int i char. Jak to zrobic zeby wskaznik int *edit_buffer mogl
wsazywac obiekty char. Bo wskazywac to potrafi
edit_pointer=(int*)(&ustawienia.limit[mep2-2]); ale zapisuje dana jako
inta (zajmuje 2 bajty i slusznie).


a cast nie dziala ?

*(char*) edit_pointer = jakas_dana;

chyba zapisze char pod ten wskaznik

--
Andrzej




========
Path: news-archive.icm.edu.pl!news2.icm.edu.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: Milosz Skowyra <mewashek_at_nospam_wp.pl>
Subject: Re: AVRGCC i ja raz jeszcze... ;-)
Date: Wed, 12 May 2004 20:18:50 +0200


Andy wrote:

a cast nie dziala ?

Proponujesz reinterpret_cast<char *>&edit_pointer ?? Cos nie chce... ;-(

*(char*) edit_pointer = jakas_dana;
chyba zapisze char pod ten wskaznik

Nie sprawdzalem, ale to nie w ta strone ma dzialac... to znaczy troche.
Musialbym najpierw wiedziec ze wskaznik jest na char a nie na int.


--
Regards. Przy odpowiedzi usun "." przed "net" z adresu!!!
|-----------------------------------------------------|
| Milosz Skowyra GSM Mobile +48 600 95 35 72 |
| miloszek_at_nospam_fido.net.org.pl 2:484/2.47 on fidonet |
|-----------------------------------------------------|

========
Path: news-archive.icm.edu.pl!news2.icm.edu.pl!pwr.wroc.pl!panorama.wcss.wroc.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: "Piotr Wyderski" <wyderskiREMOVE_at_nospam_ii.uni.wroc.pl>
Subject: Re: AVRGCC i ja raz jeszcze... ;-)
Date: Wed, 12 May 2004 21:40:01 +0200



Milosz Skowyra wrote:

Proponujesz reinterpret_cast<char *>&edit_pointer ?? Cos nie chce... ;-(

Bo:

a) to jest konstrukcja z C++, a nie z C, w ktorym, jak sie domyslam,
piszesz. :-)
b) paramer podaje sie w nawiasach: reinterpret_cast<char *>(&edit_pointer).

W C piszesz zwyczajnie: (char*) &edit_pointer.

Pozdrawiam
Piotr Wyderski


========
Path: news-archive.icm.edu.pl!news2.icm.edu.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: Milosz Skowyra <mewashek_at_nospam_wp.pl>
Subject: Re: AVRGCC i ja raz jeszcze... ;-)
Date: Wed, 12 May 2004 23:19:21 +0200


Piotr Wyderski wrote:

Proponujesz reinterpret_cast<char *>&edit_pointer ?? Cos nie chce... ;-(
Bo:
a) to jest konstrukcja z C++, a nie z C, w ktorym, jak sie domyslam,
piszesz. :-)
b) paramer podaje sie w nawiasach: reinterpret_cast<char *>(&edit_pointer).
W C piszesz zwyczajnie: (char*) &edit_pointer.

Jasne. Jak rozumiem przez C generalnie rozumie sie ANSI C z pozniejszymi
zmianami typu C99 ??
A CPP to pochodna C, rozniaca sie... no wlasnie... czym ??


--
Regards. Przy odpowiedzi usun "." przed "net" z adresu!!!
|-----------------------------------------------------|
| Milosz Skowyra GSM Mobile +48 600 95 35 72 |
| miloszek_at_nospam_fido.net.org.pl 2:484/2.47 on fidonet |
|-----------------------------------------------------|

========
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!newsfeed.tpinternet.pl!news.dialog.net.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: "Piotr Wyderski" <piotr.wyderski_at_nospam_wp.pl>
Subject: Re: AVRGCC i ja raz jeszcze... ;-)
Date: Fri, 14 May 2004 01:41:14 +0200



Milosz Skowyra wrote:

Jasne. Jak rozumiem przez C generalnie rozumie sie ANSI C z pozniejszymi
zmianami typu C99 ??

Najrozsadniej przyjac taka interpretacje.

A CPP to pochodna C, rozniaca sie... no wlasnie... czym ??

C++ to zupelnie osobny jezyk, majacy z dzisiejszym C tyle samo
wspolnego, co czlowiek z szympansem: wspolnego przodka. :->

Pozdrawiam
Piotr Wyderski



========
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: J.F. <jfox_nospam_at_nospam_poczta.onet.pl>
Subject: Re: AVRGCC i ja raz jeszcze... ;-)
Date: Wed, 12 May 2004 15:18:59 +0200


On Wed, 12 May 2004 12:43:45 +0200, Milosz Skowyra wrote:
typedef struct
{
int adres[6];
unsigned char preheat[6];
unsigned char limit[6];
unsigned char character[6];
unsigned char nazwa[16] ;
}eeprom_set;

W pewnym miejscu programu tzn. tam gdzie nastepuje wyswietlenie konkretnej
wartosci ze struktury, nastepuje ustawienie wskaznika: int *edit_buffer
na dana za pomoca: edit_pointer=&ustawienia.adres[mep2-2]; W zupelnie
innej czesci programu musze miec mozliwosc edytowania wartosci na ktora
wskazuje edit_buffer. Dokonuje tego za pomoca np. (*edit_pointer)++;
Teraz problem: Jak widac struktura ma 2 typy danych inty i chary. Tak
byc musi, jak zmienie char-y na inty to w EEPROM-ie mi sie nie pomiesci,
adres musi byc intem. Procedura edycji danych musi byc jedna i edytowac
zmienne int i char. Jak to zrobic zeby wskaznik int *edit_buffer mogl
wsazywac obiekty char. Bo wskazywac to potrafi
edit_pointer=(int*)(&ustawienia.limit[mep2-2]); ale zapisuje dana jako
inta (zajmuje 2 bajty i slusznie).

Ty cos Miloszu znowu przekombinowujesz. ja nie bardzo rozumiem co
chcesz osiagnac ...
Jesli jedna procedura ma poprawiac int i char ... to nie moze byc
"jedna" - bo jak ma sie zorientowac jaki typ ma poprawic ?


Poprawnie to bedzie cos takiego:

eeprom_set *edit_p;

edit_p=&ustawienia ; //lub =&ustawienia[0]; czy =ustawienia jesli
tablica

wyswietl(&(edit_p->adres[mep2-2]));

edytuj_inttab(edit_p->adres);
edytuj_chartab(edit_p->preheat);

mozesz oczywiscie zmiescic w jednej, na zasadzie
edytuj(void *p, char typ)
{
....
if (typ==1) //char
*(char*)p=... ;
else
*(int*)p = ....;
}

Jesli ci sie nie podoba .. w zasadzie do tego sluza obiekty,
ale nie polecam :-)

Teoretycznie moglbym
wykorzystac wskaznik typu void i przepisywac go do wskaznika albo typu
char albo typu int.

"zmienic typ" mozesz tak jak wyzej. void nie jest do tego potrzebny
Mogloby byc tak:

edytuj(int *p, char typ)
{
....
if (typ==1) //char
*(char*)p=... ;
else
*p = ....;
}

Tylko wtedy kompilator bedzie cie ostrzegal przy wywolaniu
edytuj(edit_p->preheat+3, 1)

J.


========
Path: news-archive.icm.edu.pl!news2.icm.edu.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: Milosz Skowyra <mewashek_at_nospam_wp.pl>
Subject: Re: AVRGCC i ja raz jeszcze... ;-)
Date: Wed, 12 May 2004 20:34:15 +0200


"J.F." wrote:

[...]
edit_pointer=(int*)(&ustawienia.limit[mep2-2]); ale zapisuje dana jako
inta (zajmuje 2 bajty i slusznie).
Ty cos Miloszu znowu przekombinowujesz. ja nie bardzo rozumiem co
chcesz osiagnac ...

Hint. Kiedys w asmie stworzylem sobie taki uklad menu, ktory dzialal
"sam z siebie" tzn. wystarczylo dopisac pozycje menu w definicji menu i
reakcje na enter. Teraz chce osiagnac cos podobnego. Ale juz widze ze
cos nie bardzo.

Jesli jedna procedura ma poprawiac int i char ... to nie moze byc
"jedna" - bo jak ma sie zorientowac jaki typ ma poprawic ?

No wlasnie, myslalem ze za malo wiem na temat C i dlatego zapytalem.

[...]
Jesli ci sie nie podoba .. w zasadzie do tego sluza obiekty,
ale nie polecam :-)

Odpuszczam... kilkadziesiat bajtow to nie majatek. Za to przejrzystosc
spora.

"zmienic typ" mozesz tak jak wyzej. void nie jest do tego potrzebny
- to tylko dla elegancji i podkreslenia ze ten typ dziwny jest.
Mogloby byc tak:
[...]
Tylko wtedy kompilator bedzie cie ostrzegal przy wywolaniu
edytuj(edit_p->preheat+3, 1)

Spoko, poradzilem sobie dwoma funkcjami, osobnymi dla typow. Jak mi
pamieci zacznie brakowac to moze wtedy zaczne kombinowac. A propo's
kompilatora i warninga... to mam jeszcze male 2 pytanka.

Dlaczego zapis:
eeprom_set temp;
memcpy(&temp,&ustawienia,sizeof(eeprom_set));

wywoluje warninga:
menu.c:189: warning: implicit declaration of function `memcpy'

ustawienia tez sa typu eeprom_set. Identyczna definicja kilkanascie
linijek nizej w innej funkcji nie wywoluje tego warninga. Nie rozumiem
dlaczego kompilator uwaza ze ta deklaracja jest "ukryta" czy
"bezgraniczna".


I kolejny problem warninga podczas zapisywania do eepromu.

eeprom_write_block(&ustawienia,&eeust[setting_number],sizeof(ustawienia));
menu.c:215: warning: passing arg 2 of `eeprom_write_block' discards
qualifiers from pointer target type

gdzie: eeprom_set ustawienia;
static const eeprom_set eeust[3] _attribute_((section(".eeprom"))) ={
{{1,2,3,4,5,6},{0,0,0,0,0,0},{255,255,255,255,255,255},{0,1,2,3,1,2},"1
zestaw nastaw "},
{{2,3,4,5,6,7},{0,0,0,0,0,0},{255,255,255,255,255,255},{0,0,0,0,0,0},"2
zestaw nastaw "},
{{3,4,5,6,7,8},{0,0,0,0,0,0},{255,255,255,255,255,255},{0,0,0,0,0,0},"3
zestaw nastaw "}};

Rozumiem ze nie podoba mu sie to ze adres dostarczam w malostrawnej dla
niego postaci. Czy tak ??


--
Regards. Przy odpowiedzi usun "." przed "net" z adresu!!!
|-----------------------------------------------------|
| Milosz Skowyra GSM Mobile +48 600 95 35 72 |
| miloszek_at_nospam_fido.net.org.pl 2:484/2.47 on fidonet |
|-----------------------------------------------------|

========
Path: news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: J.F. <jfox_nospam_at_nospam_poczta.onet.pl>
Subject: Re: AVRGCC i ja raz jeszcze... ;-)
Date: Thu, 13 May 2004 02:01:15 +0200


On Wed, 12 May 2004 20:34:15 +0200, Milosz Skowyra wrote:
Dlaczego zapis:
eeprom_set temp;
memcpy(&temp,&ustawienia,sizeof(eeprom_set));

wywoluje warninga:
menu.c:189: warning: implicit declaration of function `memcpy'

zapomniales string.h zaincludowac.

Kompilator sam sobie wtedy deklaruje funkcje memcpy - tzn
domysla sie parametrow.

Identyczna definicja kilkanascie
linijek nizej w innej funkcji nie wywoluje tego warninga.

Bo teraz memcpy juz jest zdefiniowana :-)

eeprom_write_block(&ustawienia,&eeust[setting_number],sizeof(ustawienia));
menu.c:215: warning: passing arg 2 of `eeprom_write_block' discards
qualifiers from pointer target type

gdzie: eeprom_set ustawienia;
static const eeprom_set eeust[3] _attribute_((section(".eeprom"))) ={
{{1,2,3,4,5,6},{0,0,0,0,0,0},{255,255,255,255,255,255},{0,1,2,3,1,2},"1
zestaw nastaw "},

Rozumiem ze nie podoba mu sie to ze adres dostarczam w malostrawnej dla
niego postaci. Czy tak ??

Nie, odrzuca jakis niuans w typie .. moze mu sie nie podoba ze adres
tablicy typu const przekazujesz w miejsce parametru ktory const nie ma
.. czyli potencjalny problem uzmienniania stalej ?

J.




========
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!fu-berlin.de!newsfeed01.sul.t-online.de!t-online.de!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: Milosz Skowyra <mewashek_at_nospam_wp.pl>
Subject: Re: AVRGCC i ja raz jeszcze... ;-)
Date: Thu, 13 May 2004 11:57:29 +0200


"J.F." wrote:

menu.c:189: warning: implicit declaration of function `memcpy'
zapomniales string.h zaincludowac.

Jasne... ;-( A propos gdzie mozna znalezc jakis opis gdzie siedzi jaka
funkcja ?? Pomijajac te dostepne w plikach *.h ktore ewentualnie mozna
znalezc recznie.

Kompilator sam sobie wtedy deklaruje funkcje memcpy - tzn
domysla sie parametrow.

W sumie madre i glupie toto... wolalbym dostac error niz warninga ;-(

menu.c:215: warning: passing arg 2 of `eeprom_write_block' discards
qualifiers from pointer target type
Nie, odrzuca jakis niuans w typie .. moze mu sie nie podoba ze adres
tablicy typu const przekazujesz w miejsce parametru ktory const nie ma
.. czyli potencjalny problem uzmienniania stalej ?

Jasne. Poszukam, popatrze... ;-)

--
Regards. Przy odpowiedzi usun "." przed "net" z adresu!!!
|-----------------------------------------------------|
| Milosz Skowyra GSM Mobile +48 600 95 35 72 |
| miloszek_at_nospam_fido.net.org.pl 2:484/2.47 on fidonet |
|-----------------------------------------------------|

========
Path: news-archive.icm.edu.pl!news2.icm.edu.pl!news.onet.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: J.F. <jfox_nospam_at_nospam_poczta.onet.pl>
Subject: Re: AVRGCC i ja raz jeszcze... ;-)
Date: Thu, 13 May 2004 13:15:18 +0200


On Thu, 13 May 2004 11:57:29 +0200, Milosz Skowyra wrote:
"J.F." wrote:
zapomniales string.h zaincludowac.
Jasne... ;-( A propos gdzie mozna znalezc jakis opis gdzie siedzi jaka
funkcja ?? Pomijajac te dostepne w plikach *.h ktore ewentualnie mozna
znalezc recznie.

Siedziec to one siedza w bibliotece. Powinienes gdzies zrodla nawet
znalezc.

Kompilator sam sobie wtedy deklaruje funkcje memcpy - tzn
domysla sie parametrow.

W sumie madre i glupie toto... wolalbym dostac error niz warninga ;-(

Zaszlosc historyczna - kiedys C tego w ogole nie sprawdzal, tylko
wywolywal jak kazales.


J.


========
Path: news-archive.icm.edu.pl!news2.icm.edu.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: Milosz Skowyra <mewashek_at_nospam_wp.pl>
Subject: Re: AVRGCC i ja raz jeszcze... ;-)
Date: Thu, 13 May 2004 13:21:46 +0200


"J.F." wrote:

Jasne... ;-( A propos gdzie mozna znalezc jakis opis gdzie siedzi jaka
funkcja ?? Pomijajac te dostepne w plikach *.h ktore ewentualnie mozna
znalezc recznie.
Siedziec to one siedza w bibliotece. Powinienes gdzies zrodla nawet
znalezc.

Jasne.

Kompilator sam sobie wtedy deklaruje funkcje memcpy - tzn
domysla sie parametrow.
W sumie madre i glupie toto... wolalbym dostac error niz warninga ;-(
Zaszlosc historyczna - kiedys C tego w ogole nie sprawdzal, tylko
wywolywal jak kazales.

To moze niech juz ten warning zostanie ;-)))

--
Regards. Przy odpowiedzi usun "." przed "net" z adresu!!!
|-----------------------------------------------------|
| Milosz Skowyra GSM Mobile +48 600 95 35 72 |
| miloszek_at_nospam_fido.net.org.pl 2:484/2.47 on fidonet |
|-----------------------------------------------------|

========
Path: news-archive.icm.edu.pl!news2.icm.edu.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: Jurek Szczesiul <jerzy.szczesiul_at_nospam_wycin.ep.com.pl>
Subject: Re: AVRGCC i ja raz jeszcze... ;-)
Date: Thu, 13 May 2004 15:35:05 +0200


Thu, 13 May 2004 13:21:46 +0200, na pl.misc.elektronika, Milosz Skowyra
napisał(a):

Siedziec to one siedza w bibliotece. Powinienes gdzies zrodla nawet
znalezc.

Jasne.


Jest jeszcze narzedzie avr-ar, ktorym mozna obejrzec zawartosc
biblioteki*.a
Inna sprawa, ze w avr-libc nie ma wielkiego asortymentu - wiekszosc siedzi
w podstawowej libc.a, matematyka w libm.a - i jeszcze jest pare mniejszych
na rozne wersje vprintf.

W sumie madre i glupie toto... wolalbym dostac error niz warninga ;-(
To moze niech juz ten warning zostanie ;-)))
Jeszcze mozna sprobowac z opcja -Werror / powoduje potraktowanie warninga
jako error ( kompilacja zostaje zatrzymana, ale komunikat chyba niestety
sie nie zmienia ).

--
Pozdrowienia
Jurek Szczesiul

========
Path: news-archive.icm.edu.pl!news2.icm.edu.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: Milosz Skowyra <mewashek_at_nospam_wp.pl>
Subject: Re: AVRGCC i ja raz jeszcze... ;-)
Date: Thu, 13 May 2004 18:06:19 +0200


Jurek Szczesiul wrote:

Siedziec to one siedza w bibliotece. Powinienes gdzies zrodla nawet
znalezc.
Jest jeszcze narzedzie avr-ar, ktorym mozna obejrzec zawartosc
biblioteki*.a

Fakt. Dzieki.

Inna sprawa, ze w avr-libc nie ma wielkiego asortymentu - wiekszosc siedzi
w podstawowej libc.a, matematyka w libm.a - i jeszcze jest pare mniejszych
na rozne wersje vprintf.

Ale zawsze mozna je sobie popodgladac ;-)

W sumie madre i glupie toto... wolalbym dostac error niz warninga ;-(
To moze niech juz ten warning zostanie ;-)))
Jeszcze mozna sprobowac z opcja -Werror / powoduje potraktowanie warninga
jako error ( kompilacja zostaje zatrzymana, ale komunikat chyba niestety
sie nie zmienia ).

O dzieki. Poprobuje.

--
Regards. Przy odpowiedzi usun "." przed "net" z adresu!!!
|-----------------------------------------------------|
| Milosz Skowyra GSM Mobile +48 600 95 35 72 |
| miloszek_at_nospam_fido.net.org.pl 2:484/2.47 on fidonet |
|-----------------------------------------------------|

========
Path: news-archive.icm.edu.pl!news2.icm.edu.pl!wsisiz.edu.pl!news.atman.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: Krzysztof Rudnik <rudnik_at_nospam_kki.net.pl>
Subject: Re: AVRGCC i ja raz jeszcze... ;-)
Date: Thu, 13 May 2004 16:46:19 +0200


Milosz Skowyra wrote:

"J.F." wrote:

menu.c:189: warning: implicit declaration of function `memcpy'
zapomniales string.h zaincludowac.

Jasne... ;-( A propos gdzie mozna znalezc jakis opis gdzie siedzi jaka
funkcja ?? Pomijajac te dostepne w plikach *.h ktore ewentualnie mozna
znalezc recznie.

Kompilator sam sobie wtedy deklaruje funkcje memcpy - tzn
domysla sie parametrow.

W sumie madre i glupie toto... wolalbym dostac error niz warninga ;-(

Zmienic rozszerzenie pliku na .cpp

Krzysiek Rudnik


========
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.nask.pl!news-stoc.telia.net!217.209.241.210.MISMATCH!news-stod.telia.net!telia.net!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: Milosz Skowyra <mewashek_at_nospam_wp.pl>
Subject: Re: AVRGCC i ja raz jeszcze... ;-)
Date: Thu, 13 May 2004 18:07:06 +0200


Krzysztof Rudnik wrote:


W sumie madre i glupie toto... wolalbym dostac error niz warninga ;-(
Zmienic rozszerzenie pliku na .cpp

No i jeszcze zmienic makefile, ale to kiepski pomysl byl... program z
samych bledow sie sklada ;-)))

--
Regards. Przy odpowiedzi usun "." przed "net" z adresu!!!
|-----------------------------------------------------|
| Milosz Skowyra GSM Mobile +48 600 95 35 72 |
| miloszek_at_nospam_fido.net.org.pl 2:484/2.47 on fidonet |
|-----------------------------------------------------|

========
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!newsfeed.tpinternet.pl!news.dialog.net.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: "Piotr Wyderski" <piotr.wyderski_at_nospam_wp.pl>
Subject: Re: AVRGCC i ja raz jeszcze... ;-)
Date: Fri, 14 May 2004 01:50:15 +0200



Milosz Skowyra wrote:

wywoluje warninga:
menu.c:189: warning: implicit declaration of function `memcpy'

Kazales mu uzyc nieznanej funkcji. :-) #include
opowieniego pliku zalatwi sprawe.

eeprom_write_block(&ustawienia,&eeust[setting_number],sizeof(ustawienia));
menu.c:215: warning: passing arg 2 of `eeprom_write_block' discards
qualifiers from pointer target type

Pewnie drugim argumentem tej funkcji jest cos*, a nie const cos*,
a parametr jest typu const cos*.

gdzie: eeprom_set ustawienia;
static const eeprom_set eeust[3] _attribute_((section(".eeprom"))) ={
{{1,2,3,4,5,6},{0,0,0,0,0,0},{255,255,255,255,255,255},{0,1,2,3,1,2},"1
zestaw nastaw "},
{{2,3,4,5,6,7},{0,0,0,0,0,0},{255,255,255,255,255,255},{0,0,0,0,0,0},"2
zestaw nastaw "},
{{3,4,5,6,7,8},{0,0,0,0,0,0},{255,255,255,255,255,255},{0,0,0,0,0,0},"3
zestaw nastaw "}};

Rozumiem ze nie podoba mu sie to ze adres dostarczam w malostrawnej dla
niego postaci. Czy tak ??

Nie, zwroc uwage na const w drugiej linijce.
Dajesz procedurze obiekt tylko odczytywalny
jako taki, ktory mozna rowniez zapisac, wiec
kompilator popadl w zadume i urodzil warninga. :-)

Pozdrawiam
Piotr Wyderski



========
Path: news-archive.icm.edu.pl!news2.icm.edu.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: Milosz Skowyra <mewashek_at_nospam_wp.pl>
Subject: Re: AVRGCC i ja raz jeszcze... ;-)
Date: Fri, 14 May 2004 11:53:22 +0200


Piotr Wyderski wrote:

Nie, zwroc uwage na const w drugiej linijce.
Dajesz procedurze obiekt tylko odczytywalny
jako taki, ktory mozna rowniez zapisac, wiec
kompilator popadl w zadume i urodzil warninga. :-)

Nie ma to jak solidne wyjasnienie ;-) Dzieki. Probowalem wczoraj troche
upic kompilator, ale sie nie dal ;-(

--
Regards. Przy odpowiedzi usun "." przed "net" z adresu!!!
|-----------------------------------------------------|
| Milosz Skowyra GSM Mobile +48 600 95 35 72 |
| miloszek_at_nospam_fido.net.org.pl 2:484/2.47 on fidonet |
|-----------------------------------------------------|

========
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!newsfeed.tpinternet.pl!news.dialog.net.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: "Piotr Wyderski" <piotr.wyderski_at_nospam_wp.pl>
Subject: Re: AVRGCC i ja raz jeszcze... ;-)
Date: Fri, 14 May 2004 13:11:44 +0200



Milosz Skowyra wrote:

Probowalem wczoraj troche
upic kompilator, ale sie nie dal ;-(

To bardzo dobrze o nim swiadczy. :-) Milosz, nie probuj
zlapac dwu srok za ogon. Zdecyduj sie albo na C++ (co
bym Ci delikatnie sugerowal), albo na C (ktory juz powoli
umiera z powodu uwiadu starczego) i nie mieszaj tych
dwu swiatow.

Pozdrawiam
Piotr Wyderski



========
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.internetia.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: Milosz Skowyra <mewashek_at_nospam_wp.pl>
Subject: Re: AVRGCC i ja raz jeszcze... ;-)
Date: Fri, 14 May 2004 14:53:13 +0200


Piotr Wyderski wrote:

Probowalem wczoraj troche
upic kompilator, ale sie nie dal ;-(
To bardzo dobrze o nim swiadczy. :-)

Niekoniecznie... zrobil mi spora plame... ;-)

Milosz, nie probuj
zlapac dwu srok za ogon. Zdecyduj sie albo na C++ (co
bym Ci delikatnie sugerowal), albo na C (ktory juz powoli
umiera z powodu uwiadu starczego) i nie mieszaj tych
dwu swiatow.

Jasne. Czyli po prostu troche zle zaczalem od C ;-) Postaram sie
poprawic ;-)

--
Regards. Przy odpowiedzi usun "." przed "net" z adresu!!!
|-----------------------------------------------------|
| Milosz Skowyra GSM Mobile +48 600 95 35 72 |
| miloszek_at_nospam_fido.net.org.pl 2:484/2.47 on fidonet |
|-----------------------------------------------------|

========
Path: news-archive.icm.edu.pl!news2.icm.edu.pl!news.atman.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: Krzysztof Rudnik <rudnik_at_nospam_kki.net.pl>
Subject: Re: AVRGCC i ja raz jeszcze... ;-)
Date: Wed, 12 May 2004 16:54:02 +0200


Milosz Skowyra wrote:

Ehlo.

Na wstepie... potrzebne do kombajnu marchewkowego ;-)

Mam strukture:
typedef struct
{
int adres[6];
unsigned char preheat[6];
unsigned char limit[6];
unsigned char character[6];
unsigned char nazwa[16] ;
}eeprom_set;

Struktura owa jest powiazana w pewien sposob z wielopoziomowym menu. W
pewnym miejscu programu tzn. tam gdzie nastepuje wyswietlenie konkretnej
wartosci ze struktury, nastepuje ustawienie wskaznika: int *edit_buffer
na dana za pomoca: edit_pointer=&ustawienia.adres[mep2-2]; W zupelnie
innej czesci programu musze miec mozliwosc edytowania wartosci na ktora
wskazuje edit_buffer. Dokonuje tego za pomoca np. (*edit_pointer)++;
Teraz problem: Jak widac struktura ma 2 typy danych inty i chary. Tak
byc musi, jak zmienie char-y na inty to w EEPROM-ie mi sie nie pomiesci,
adres musi byc intem. Procedura edycji danych musi byc jedna i edytowac
zmienne int i char. Jak to zrobic zeby wskaznik int *edit_buffer mogl
wsazywac obiekty char. Bo wskazywac to potrafi
edit_pointer=(int*)(&ustawienia.limit[mep2-2]); ale zapisuje dana jako
inta (zajmuje 2 bajty i slusznie).
Co powinienem sie dowiedziec ?? I czy w tym przypadku nie mam znow
problemu ze wskaznikami ?? Poczytalem K&R ale nie ma tam zasadniczo
informacji jak postapic w tym przypadku. Teoretycznie moglbym
wykorzystac wskaznik typu void i przepisywac go do wskaznika albo typu
char albo typu int. Ale moze da sie bardziej elegancko. Moglbym tez niby
przeciazyc funkcje, ale wolalbym miec dwa w jednym... da sie tak ??

Jakos prosto, automagicznie sie nie da.
Moze jakos tak (zeby nie kopiowac procedury edytujacej):

edit_int(int * xint)
{
(*xint)++;
}

edit_char(char * xchar)
{
int tmp = xchar[0];
edit_int(&tmp);
xchar[0] = tmp;
}

Komplikuje sie jesli chodzi Ci o cala tablice (wszedzie widze [6]),
trzeba by miec tymczasowa tablice.
Druga wada to ze traci sie sprawdzenie wartosci.


Krzysiek Rudnik


========
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.internetia.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: Milosz Skowyra <mewashek_at_nospam_wp.pl>
Subject: Re: AVRGCC i ja raz jeszcze... ;-)
Date: Wed, 12 May 2004 20:35:13 +0200


Krzysztof Rudnik wrote:

Komplikuje sie jesli chodzi Ci o cala tablice (wszedzie widze [6]),
trzeba by miec tymczasowa tablice.
Druga wada to ze traci sie sprawdzenie wartosci.

Dzieki.

--
Regards. Przy odpowiedzi usun "." przed "net" z adresu!!!
|-----------------------------------------------------|
| Milosz Skowyra GSM Mobile +48 600 95 35 72 |
| miloszek_at_nospam_fido.net.org.pl 2:484/2.47 on fidonet |
|-----------------------------------------------------|

========
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.internetia.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai