C na AVR jeszcze raz

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?

Reply to
Chomik
Loading thread data ...

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

Po co?

Po co?

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

Reply to
Sebastian Biały

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.

Reply to
Chomik

On 2010-09-22 20:14, Chomik wrote: > 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?

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

Opisz po co Ci ten rejestr.

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?

Reply to
Sebastian Biały

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.

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

Reply to
Sebastian Biały

Zainteresuj się wskaźnikami.

Reply to
Adam Wysocki
Reply to
identifikator: 20040501
Reply to
identifikator: 20040501
Reply to
identifikator: 20040501
Reply to
identifikator: 20040501
Reply to
identifikator: 20040501

W dniu 29.09.2010 20:27, identifikator: 20040501 pisze:

Tak, widziałem. Tbbtyr grż jvqmvnłl.

Reply to
Michoo
Reply to
identifikator: 20040501

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.