Goto page 1, 2 Next
M M
Guest
Mon Nov 12, 2007 7:19 am
witam.
Jest program pod atmega64 kompilowany wersją 2006 04 21
i program wydaje sie działac poprawnie, tzn nie udalo mi sie wypatrzyc oznak
jakichs blędow, program ma kilkanascie stron.
Jezeli przekompiluje go biezaca wesja avr tj. 2007 05 25 to program jak
gdyby sie zacinal, dziala i przestaje odpowiadac na chwile po czym działanie
dalsze przebiega normalnie, (nie widac zadnych innych objawow
nieprawidlowego działania)
Moje pytanie jest czy ktos spotkał sie z takimi objawami, moze ma sugestie
co jest przyczyna, (pewnie bledy w programie- tylko jakie).
poniewaz jest to juz moj drugi przypadek kiedy kod kompilowany jedna wersja
nie działa kompilowany inna pytanie jest co moze byc przyczyna.?
Michał M
Pawel K
Guest
Mon Nov 12, 2007 2:06 pm
M M pisze:
Quote:
witam.
Jest program pod atmega64 kompilowany wersją 2006 04 21
i program wydaje sie działac poprawnie, tzn nie udalo mi sie wypatrzyc oznak
jakichs blędow, program ma kilkanascie stron.
Jezeli przekompiluje go biezaca wesja avr tj. 2007 05 25 to program jak
gdyby sie zacinal, dziala i przestaje odpowiadac na chwile po czym działanie
dalsze przebiega normalnie, (nie widac zadnych innych objawow
nieprawidlowego działania)
Moje pytanie jest czy ktos spotkał sie z takimi objawami, moze ma sugestie
co jest przyczyna, (pewnie bledy w programie- tylko jakie).
poniewaz jest to juz moj drugi przypadek kiedy kod kompilowany jedna wersja
nie działa kompilowany inna pytanie jest co moze byc przyczyna.?
Michał M
Mam dokladnie ten sam problem ... tylko ze u mnie wogole program nie
dziala
Nie mam czasu ani checi zeby analizowac roznice i gdzie tkwi blad :(
--
--
Pozrdawiam
Pawel K from 3miasto
groups(at)kpw.qs.pl
GG: 1263183
---------------- end ----------------
Grzegorz Kurczyk
Guest
Mon Nov 12, 2007 5:47 pm
Użytkownik Pawel K napisał:
Quote:
Mam dokladnie ten sam problem ... tylko ze u mnie wogole program nie
dziala
Nie mam czasu ani checi zeby analizowac roznice i gdzie tkwi blad :(
A nie macie gdzieś w programie deklaracji obsługi przerwania typu
INTERRUPT(...) ?
Na tym właśnie się naciąłem przy przejściu na 20070525. Ta wersja
kompiluje procedurę INTERRUPT tak samo jak SIGNAL tzn. nie wstawia
rozkazu "sei" na początku.
Pozdrawiam
Grzegorz
kpiecuch
Guest
Mon Nov 12, 2007 6:28 pm
Grzegorz Kurczyk pisze:
Quote:
A nie macie gdzieś w programie deklaracji obsługi przerwania typu
INTERRUPT(...) ?
Na tym właśnie się naciąłem przy przejściu na 20070525. Ta wersja
kompiluje procedurę INTERRUPT tak samo jak SIGNAL tzn. nie wstawia
rozkazu "sei" na początku.
Macro SIGNAL zostało wycofane z nowszych wersji kompilatora, teraz jak
się chce odblokować przerwania to trzeba to zrobić jawnie.
http://forum.ep.com.pl/viewtopic.php?t=15904&sid=9c86a13381421ca3404bdb98a181a5be
Grzegorz Kurczyk
Guest
Mon Nov 12, 2007 11:27 pm
Użytkownik kpiecuch napisał:
Quote:
Grzegorz Kurczyk pisze:
Macro SIGNAL zostało wycofane z nowszych wersji kompilatora, teraz jak
się chce odblokować przerwania to trzeba to zrobić jawnie.
Ja o tym miałem okazję się już dowiedzieć jakiś czas temu, ale chodzi mi
o to czy Autor wątku też o tym wie ?
A z tym makro INTERRUPT (chyba o to Koledze chodziło, bo SIGNAL działa
tak jak w starszej wersji) to jest tak, że nie zostało ono wycofane w
pełnym tego słowa znaczeniu. Program z INTERRUPT nadal się kompiluje bez
błędów, tylko w kodzie wynikowym jest nie do końca to czego byśmy
oczekiwali.
Pozdrawiam
Grzegorz
M M
Guest
Tue Nov 13, 2007 1:07 pm
Użytkownik "Grzegorz Kurczyk" <grzegorz.usun.to@control.slupsk.pl> napisał w
wiadomości news:fhak88$8pp$1@nemesis.news.tpi.pl...
Quote:
Użytkownik kpiecuch napisał:
Grzegorz Kurczyk pisze:
Macro SIGNAL zostało wycofane z nowszych wersji kompilatora, teraz jak
się chce odblokować przerwania to trzeba to zrobić jawnie.
Ja o tym miałem okazję się już dowiedzieć jakiś czas temu, ale chodzi mi
o to czy Autor wątku też o tym wie ?
A z tym makro INTERRUPT (chyba o to Koledze chodziło, bo SIGNAL działa
tak jak w starszej wersji) to jest tak, że nie zostało ono wycofane w
pełnym tego słowa znaczeniu. Program z INTERRUPT nadal się kompiluje bez
błędów, tylko w kodzie wynikowym jest nie do końca to czego byśmy
oczekiwali.
Pozdrawiam
Grzegorz
Witam.
Tak wiem o tym. W moim podejzeniu problem lezy po stronie mojej,
chociaz to tak na 75%; tylko ze po prostu nie mam pomyslu co moze byc
przyczyna i jak wykryc takie jakis blad ktory ujawnia sie w jednej wersji
a w drugiej nie. Pocieszenie ze nie jestem sam jest tylko czesciowe

.
dzieki za odpowiedzi.
pozdrawiam.
Michal M.
Maciek
Guest
Tue Nov 13, 2007 2:02 pm
Użytkownik "M M" <no_spa_machowsk@interia.pl.uk> napisał w wiadomości
news:fhc47q$d9c$1@atlantis.news.tpi.pl...
Quote:
Tak wiem o tym. W moim podejzeniu problem lezy po stronie mojej,
chociaz to tak na 75%; tylko ze po prostu nie mam pomyslu co moze byc
przyczyna i jak wykryc takie jakis blad ktory ujawnia sie w jednej wersji
a w drugiej nie. Pocieszenie ze nie jestem sam jest tylko czesciowe

.
Swego czasu (przy identycznej przesiadce jaka opisales) pozmienialem typy
zmiennych uzywanych jako indeksy tablic (z 'unsigned char' na 'char'). I
niespodzianka - w przypadku indeksow wiekszych od 0x7f z tablic pobierane
byly wartosci 'pokazywane' ujemnym indeksem (czyli w rzeczywstosci nie
lezace w zadeklarowanym obszarze tablicy).
Pzdr,
Maciek
MoonWolf
Guest
Tue Nov 13, 2007 4:10 pm
Maciek denied rebel lies:
Quote:
Swego czasu (przy identycznej przesiadce jaka opisales) pozmienialem
typy zmiennych uzywanych jako indeksy tablic (z 'unsigned char' na
'char'). I niespodzianka - w przypadku indeksow wiekszych od 0x7f z
tablic pobierane byly wartosci 'pokazywane' ujemnym indeksem (czyli w
rzeczywstosci nie lezace w zadeklarowanym obszarze tablicy).
A gdzie tu niespodzianka?
--
<:> Roger, MoonWolf Out <:>|Throughout his life the same
(:

(:

|
(

JID:moonwolf@jabberpl.org(

|
http://karakkhaz.prv.pl
JS
Guest
Tue Nov 13, 2007 9:42 pm
W artykule <fhc7kh$474$1@nemesis.news.tpi.pl> Maciek napisal(a):
Quote:
Swego czasu (przy identycznej przesiadce jaka opisales) pozmienialem typy
zmiennych uzywanych jako indeksy tablic (z 'unsigned char' na 'char'). I
niespodzianka - w przypadku indeksow wiekszych od 0x7f z tablic pobierane
byly wartosci 'pokazywane' ujemnym indeksem (czyli w rzeczywstosci nie
lezace w zadeklarowanym obszarze tablicy).
Typ char może być tożsamy z signed char albo z unsigned char.
To zależy od implementacji (w WINAVR wybiera się opcją -funsigned-char).
Jeśli (dla 8-bitowego typu char)
signed char i = 0xFF;
char a[2];
to
a[i]
oznacza to samo co
a[-1]
i odwołuje się (niepoprawnie) poza tablicę a.
BTW na AVR użycie indeksów unsigned char może dać lepszy kod
(nie ma potrzeby znakowego rozszerzania bajtu do słowa).
--
Pozdrawiam!
Jarosław Szynal
Adam Dybkowski
Guest
Tue Nov 13, 2007 11:18 pm
M M pisze:
Quote:
W moim podejzeniu problem lezy po stronie mojej,
chociaz to tak na 75%; tylko ze po prostu nie mam pomyslu co moze byc
przyczyna i jak wykryc takie jakis blad ktory ujawnia sie w jednej wersji
a w drugiej nie. Pocieszenie ze nie jestem sam jest tylko czesciowe

.
Według mnie przy takich problemach najprościej jest porównać pliki
listingu (deasemblacji) i .map, wygenerowane przez obie wersje
kompilatora. Optymalizer gcc dla AVRów od dłuższego czasu się nie
zmienił, w pliku mapy zobaczysz właściwie tylko inną kolejność
linkowania funkcji z bibliotek standardowych, nową sekcję do
międzyskoków (wykorzystywaną praktycznie tylko w największych AVRach z
Flashem 256KB), zmieniło się też położenie sekcji stałych umieszczanych
w pamięci programu (np. makrem PSTR("ABC")). Oczywiście jeżeli
korzystasz z własnego pliku sterującego mapą linkowania, wiele z tych
zmian Cię nie dotyczy.
--
Adam Dybkowski
http://www.amwaw.edu.pl/~adybkows/
Uwaga: przed wysłaniem do mnie maila usuń cyfry z adresu.
MoonWolf
Guest
Wed Nov 14, 2007 8:06 am
JS denied rebel lies:
Quote:
Swego czasu (przy identycznej przesiadce jaka opisales) pozmienialem
typy zmiennych uzywanych jako indeksy tablic (z 'unsigned char' na
'char'). I niespodzianka - w przypadku indeksow wiekszych od 0x7f z
tablic pobierane byly wartosci 'pokazywane' ujemnym indeksem (czyli
w rzeczywstosci nie lezace w zadeklarowanym obszarze tablicy).
Typ char może być tożsamy z signed char albo z unsigned char.
To zależy od implementacji (w WINAVR wybiera się opcją
-funsigned-char).
No tak. Zapomniałem, choć używam gcc (:)
--
<:> Roger, MoonWolf Out <:>|I never get to have any fun!
(:

(:

|
(

JID:moonwolf@jabberpl.org(

|
http://karakkhaz.prv.pl
Maciek
Guest
Wed Nov 14, 2007 8:19 am
Uzytkownik "MoonWolf" <moonwolf@polbox.com> napisal w wiadomosci
news:fhcepk$6ol$1@news.onet.pl...
Quote:
Maciek denied rebel lies:
Swego czasu (przy identycznej przesiadce jaka opisales) pozmienialem
typy zmiennych uzywanych jako indeksy tablic (z 'unsigned char' na
'char'). I niespodzianka - w przypadku indeksow wiekszych od 0x7f z
tablic pobierane byly wartosci 'pokazywane' ujemnym indeksem (czyli w
rzeczywstosci nie lezace w zadeklarowanym obszarze tablicy).
A gdzie tu niespodzianka?
Masz racje - nigdzie. Ale ja akurat zwrocilem na to uwage dopiero przy
przesiadce na nowsza wersje WinAvr.
A typy zmiennych pozmienialem, bo nowszy kompilator "krzyczal" o
niezgodnosci 'signed char' z 'unsigned char' (np. przy wywolaniach funkcji).
Pzdr,
Maciek
M M
Guest
Wed Nov 14, 2007 2:35 pm
Uzytkownik "Maciek" <fornes@interia.pl> napisal w wiadomosci
news:fhe7km$fdj$1@atlantis.news.tpi.pl...
Quote:
Uzytkownik "MoonWolf" <moonwolf@polbox.com> napisal w wiadomosci
news:fhcepk$6ol$1@news.onet.pl...
Maciek denied rebel lies:
Swego czasu (przy identycznej przesiadce jaka opisales) pozmienialem
typy zmiennych uzywanych jako indeksy tablic (z 'unsigned char' na
'char'). I niespodzianka - w przypadku indeksow wiekszych od 0x7f z
tablic pobierane byly wartosci 'pokazywane' ujemnym indeksem (czyli w
rzeczywstosci nie lezace w zadeklarowanym obszarze tablicy).
A gdzie tu niespodzianka?
Masz racje - nigdzie. Ale ja akurat zwrocilem na to uwage dopiero przy
przesiadce na nowsza wersje WinAvr.
A typy zmiennych pozmienialem, bo nowszy kompilator "krzyczal" o
niezgodnosci 'signed char' z 'unsigned char' (np. przy wywolaniach
funkcji).
Pzdr,
Maciek
witam.
tak.
i to chyba bedzie powod, ja tez bez zastanowienia zmienilem typy by uspokoic
kompilator,

, i prawdopodobie moglo to powodowac nawet takie objawy jak
mialem ja by sie troszke zastanowic, wrocilem jednak do starego kompilatora
i nie mam czasu by sprawdzic na 100%.
dzieki.
pozdrawiam.
Michal M.
Maciek
Guest
Wed Nov 14, 2007 2:45 pm
Użytkownik "M M" <no_spa_machowsk@interia.pl.uk> napisał w wiadomości
news:fhetp3$2ej$1@atlantis.news.tpi.pl...
Quote:
i to chyba bedzie powod, ja tez bez zastanowienia zmienilem typy by
uspokoic
kompilator,

, i prawdopodobie moglo to powodowac nawet takie objawy jak
mialem ja by sie troszke zastanowic, wrocilem jednak do starego
kompilatora
i nie mam czasu by sprawdzic na 100%.
Moze jednak warto - w nowszym troszke mniej kodu wychodzi.
Pzdr,
Maciek
Luk@sz
Guest
Wed Nov 14, 2007 5:05 pm
JS pisze:
Quote:
Typ char może być tożsamy z signed char albo z unsigned char.
To zależy od implementacji (w WINAVR wybiera się opcją -funsigned-char).
Jeśli (dla 8-bitowego typu char)
signed char i = 0xFF;
char a[2];
to
a[i]
oznacza to samo co
a[-1]
i odwołuje się (niepoprawnie) poza tablicę a.
Przecież przy definicji unsigned char też odwołanie będzie poza tablicę
a[]. Więc gdzie tu problem?
Pzdr
Goto page 1, 2 Next