RTV forum PL | NewsGroups PL

Jak zadeklarować zmienną w określonej komórce pamięci na AVR w C?

C na AVR jeszcze raz

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Jak zadeklarować zmienną w określonej komórce pamięci na AVR w C?

Goto page 1, 2  Next

Chomik
Guest

Wed Sep 22, 2010 5:22 pm   



Najgorsze w przechodzeniu na C mam juz za soba. Sterowanie portami dziala,
procedury dla LCD dzialaja, teraz jeszcze obsluga przerwan i lecimi. Jednak
nie moge sie doszukac informacjijak zdeklarowac zmienna tak zeby znalazla
sie w okreslonej komorce pamieci. Z tego co do tej pory wyczytalem w C
zmienne funkcjonuja zupelnie inaczej niz do tej pory sie przyzwyczailem. W
podreczniku o C tego nie ma bo jest on ogolnie o jezyku a nie w
zastosowaniach na AVR. Jest wogole w taka mozliwosc?

Sebastian Biały
Guest

Wed Sep 22, 2010 5:28 pm   



On 2010-09-22 19:22, Chomik wrote:
Quote:
lecimi. Jednak nie moge sie doszukac informacjijak zdeklarowac zmienna
tak zeby znalazla sie w okreslonej komorce pamieci.

Po co?

Quote:
Jest wogole w taka mozliwosc?

Po co?

PS. Jest, ale prawie na pewno tego nie chcesz.

Chomik
Guest

Wed Sep 22, 2010 6:14 pm   



Quote:
lecimi. Jednak nie moge sie doszukac informacjijak zdeklarowac zmienna
tak zeby znalazla sie w okreslonej komorce pamieci.

Po co?

Mam 96 bitowy rejestr zapelniany szeregowo bit po bicie. Po zapelnieniu

kazde 8 bitow to wartosc poczatkowa dla 12 zmiennych ktore pozniej do innych
celow sa wykorzystane.
Tak mam teraz, odczyt kolejnego bitu i przesuniencie rejestru to kilka
linijek w ASM. Chodzi szybko poprawnie i nie trzeba zadnych dodatkowych
linijek i czasu zeby to przerabiac odczytywac itd.
No chyba ze sa szybsze i lepsze sposoby ale nie widze w tym moim jakichs
wad. Odczytywanie po 8 bitow i zapisywanie ich wartosci nie bedzie szybsze
ani lepsze.

Zreszta po kompilacji jest informacja gdzie siedzi jaka zmienna wiec
wielkiego problemu nie mam ale moze mi sie przydac info jak od poczatku
umiescic zmienna w okreslonym miejscu.

Sebastian Biały
Guest

Wed Sep 22, 2010 7:32 pm   



On 2010-09-22 20:14, Chomik wrote:
Quote:
Mam 96 bitowy rejestr zapelniany szeregowo bit po bicie. Po zapelnieniu
kazde 8 bitow to wartosc poczatkowa dla 12 zmiennych ktore pozniej do
innych celow sa wykorzystane.

Potrzebujesz więc tablice:

unsigned char tablica[ 96 / 8 ];

Czy aby na pewno jednak to nie może być zapełniane w locie po 8 bitów?
Musisz mieć *KONIECZNIE* te 96 bitów i męczyć się z nimi wszystkimi?

Quote:
Tak mam teraz, odczyt kolejnego bitu i przesuniencie rejestru to kilka
linijek w ASM. Chodzi szybko poprawnie i nie trzeba zadnych dodatkowych
linijek i czasu zeby to przerabiac odczytywac itd.

"tablica" może być interpretowana jako adres pamięci tych 12 bajtów.

Quote:
No chyba ze sa szybsze i lepsze sposoby ale nie widze w tym moim jakichs
wad. Odczytywanie po 8 bitow i zapisywanie ich wartosci nie bedzie
szybsze ani lepsze.

Opisz po co Ci ten rejestr.

Quote:
Zreszta po kompilacji jest informacja gdzie siedzi jaka zmienna wiec
wielkiego problemu nie mam ale moze mi sie przydac info jak od poczatku
umiescic zmienna w okreslonym miejscu.

Nie mów kompilatorowi gdzie ma wsadzić zmienną. Zamiast tego zapytaj
kompilator gdzie ją umieścił. Nazwa tablicy jest odpowiedzią na to
pytanie. Jednak zanim zaczniesz stukac w asm zadam ponownie to pytanie:
do czego to jest potrzebne?

Chomik
Guest

Wed Sep 22, 2010 7:57 pm   



Quote:

Opisz po co Ci ten rejestr.

Zreszta po kompilacji jest informacja gdzie siedzi jaka zmienna wiec
wielkiego problemu nie mam ale moze mi sie przydac info jak od poczatku
umiescic zmienna w okreslonym miejscu.

Nie mów kompilatorowi gdzie ma wsadzić zmienną. Zamiast tego zapytaj
kompilator gdzie ją umieścił. Nazwa tablicy jest odpowiedzią na to
pytanie. Jednak zanim zaczniesz stukac w asm zadam ponownie to pytanie: do
czego to jest potrzebne?

No juz pisalem. Bit po bicie zapelnia sie odbierana informacja, po kazdym
bicie trzeba sprawdzic zawartosc a czasem wykorzystac te wartosci do innych
wyliczen.
W ASM cala ta procedura byla krociutka i bardzo szybka a szybkosc tez ma
znaczenie dlatego nie chce jej komplikowac i mimo pisania reszt w C (pozniej
sa inne rzeczy ktore znowuz sa upierdliwe do pisania w ASM)ta czesc zostawie
w ASM.

Sebastian Biały
Guest

Wed Sep 22, 2010 8:13 pm   



On 2010-09-22 21:57, Chomik wrote:
Quote:
No juz pisalem. Bit po bicie zapelnia sie odbierana informacja, po
kazdym bicie trzeba sprawdzic zawartosc a czasem wykorzystac te wartosci
do innych wyliczen.

Chodziło mi o to czy na pewno musisz te bity wsuwać za kazdym razem
przez wszystkie 12 bajtów. Czy nie lepiej jest ustawiać od razu tam
gdzie trzeba.

Quote:
W ASM cala ta procedura byla krociutka i bardzo szybka a szybkosc tez ma
znaczenie dlatego nie chce jej komplikowac i mimo pisania reszt w C
(pozniej sa inne rzeczy ktore znowuz sa upierdliwe do pisania w ASM)ta
czesc zostawie w ASM.

Przedwczesna optymalizacja Wink Po prostu napisz to w C i zobaczysz na ile
bedzie wolne.

Adam Wysocki
Guest

Thu Sep 23, 2010 1:41 am   



Chomik <chomik99@hot.pl> wrote:

Quote:
sie w okreslonej komorce pamieci. Z tego co do tej pory wyczytalem w C
zmienne funkcjonuja zupelnie inaczej niz do tej pory sie przyzwyczailem. W
podreczniku o C tego nie ma bo jest on ogolnie o jezyku a nie w
zastosowaniach na AVR. Jest wogole w taka mozliwosc?

Zainteresuj się wskaźnikami.

--
gof

Chomik
Guest

Thu Sep 23, 2010 3:38 pm   



Quote:

Chodziło mi o to czy na pewno musisz te bity wsuwać za kazdym razem przez
wszystkie 12 bajtów. Czy nie lepiej jest ustawiać od razu tam gdzie
trzeba.

Ano musze miec wszystkie na raz.

Quote:

W ASM cala ta procedura byla krociutka i bardzo szybka a szybkosc tez ma

Przedwczesna optymalizacja Wink Po prostu napisz to w C i zobaczysz na ile
bedzie wolne.

Ta czesc jednak zostawie w ASM Smile

identifikator: 20040501
Guest

Sun Sep 26, 2010 2:16 pm   



do niczego Cię nie zmuszam, ale może zechciałbyś napisac kolegom z grupy jak
łączysz C z assemblerem bo chyba nie przez inline (czy jakoś tak)? no i jak
korzystasz ze zmiennych C w kodzie asma?

Chomik
Guest

Sun Sep 26, 2010 6:22 pm   



Użytkownik "identifikator: 20040501" <NOSPAMtestowanije@go2.pl> napisał w
wiadomości grup dyskusyjnych:i7nkr7$42i$1@mx1.internetia.pl...
Quote:
do niczego Cię nie zmuszam, ale może zechciałbyś napisac kolegom z grupy
jak łączysz C z assemblerem bo chyba nie przez inline (czy jakoś tak)? no
i jak korzystasz ze zmiennych C w kodzie asma?
Nie sadze, ze tym co pisza w C trzeba tlumaczyc jak wstawiac wstawki ASM.

Poza tym opisane jest to w wielu ksiazkach jak i w internecie chociazby na
stronie GCC. Akurat wstawki w ASM nie sa problemem biorac pod uwage calosc
jezyka C.

identifikator: 20040501
Guest

Mon Sep 27, 2010 2:23 pm   



dziękuję za pomoc, liczę, że podobnie będzie z odpowiedziami na Twój post...

Chomik
Guest

Mon Sep 27, 2010 2:54 pm   



Użytkownik "identifikator: 20040501" <NOSPAMtestowanije@go2.pl> napisał w
wiadomości grup dyskusyjnych:i7q9l4$3bj$1@mx1.internetia.pl...
Quote:
dziękuję za pomoc, liczę, że podobnie będzie z odpowiedziami na Twój
post...


W jednym ze swoich postow wyraziles sie o autorze pewnej ksiazki cyt. "chyba
nie tego debila, którego
nazwiska nie pomne, taka zielona z tytulem C dla AVR... co za kretyn ja
napisal - nie ma w niej nic o programowaniu w C...
" kon. cyt. Informacje z tej ksiazki sa akurat wystarczajace do tworzenia
podstawowych wstawek w ASM i parafrazujac tzreba byc kretynem albo debilem
zeby tego nie zrozumiec co biorac pod uwage poziom postow autora o nazwie
"identifikator: 20040501" jest chyba prawdziwe. Co w tym wszystkim
pozytywnego to to, ze czytajac ze znajomymi te posty mamy niezly ubaw.

identifikator: 20040501
Guest

Mon Sep 27, 2010 3:21 pm   



Quote:
" kon. cyt. Informacje z tej ksiazki sa akurat wystarczajace do tworzenia
podstawowych wstawek w ASM i parafrazujac tzreba byc kretynem albo debilem
zeby tego nie zrozumiec co biorac pod uwage poziom postow autora o nazwie
"identifikator: 20040501" jest chyba prawdziwe. Co w tym wszystkim
pozytywnego to to, ze czytajac ze znajomymi te posty mamy niezly ubaw.

w tej książce 200 stron to rozważania o inline... o tym mówisz?
przyznaję, muszę ją przeczytać raz jeszcze, bo może pomyliłem z tą książką o
USB i programowaniu w C++... no to dopiero rodzynek...

to jak rozumiem nie napiszesz mi jednego czy dwóch zdań wyjaśniających
problem?

newxmega
Guest

Tue Sep 28, 2010 2:53 am   



"identifikator: 20040501" <NOSPAMtestowanije@go2.pl> wrote in message
news:i7qd1c$n0s$1@mx1.internetia.pl...

Quote:
to jak rozumiem nie napiszesz mi jednego czy dwóch zdań wyjaśniających
problem?

Też się dołączam do pytania. Chomik powiedz nam.

identifikator: 20040501
Guest

Tue Sep 28, 2010 2:56 pm   



Quote:
Też się dołączam do pytania. Chomik powiedz nam.

to może ja zacznę... najprostszym rozwiązaniem dla lajków jest AVR Studio ze
zintegrowanym WinAVR... wtedy pliki assemblerowe dodajemy do projektu jako
pliki z rozszerzeniem .s... jakoś tak to było, niestety nie wiem co dalej...

Goto page 1, 2  Next

elektroda NewsGroups Forum Index - Elektronika Polska - Jak zadeklarować zmienną w określonej komórce pamięci na AVR w C?

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map