C na AVR jeszcze raz

Sep 22, 2010 26 Replies

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?


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.

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.

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?

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.

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.

Zainteresuj się wskaźnikami.

Ano musze miec wszystkie na raz.

Ta czesc jednak zostawie w ASM :)

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?

U¿ytkownik "identifikator: 20040501" snipped-for-privacy@go2.pl napisa³ w wiadomo¶ci grup dyskusyjnych:i7nkr7$42i$ snipped-for-privacy@mx1.internetia.pl...

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.

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

U¿ytkownik "identifikator: 20040501" snipped-for-privacy@go2.pl napisa³ w wiadomo¶ci grup dyskusyjnych:i7q9l4$3bj$ snipped-for-privacy@mx1.internetia.pl...

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.

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?

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...

swego czasu by³ kurs C "Programowanie procesorów w jêzyku C", moze byc pomocne. poszukaj w sieci pod t± nazw± to znajdziesz komplet w pliku pdf

U¿ytkownik "identifikator: 20040501" snipped-for-privacy@go2.pl napisa³ w wiadomo¶ci news:i7q9l4$3bj$ snipped-for-privacy@mx1.internetia.pl...

__________ Informacja programu ESET NOD32 Antivirus, wersja bazy sygnatur wirusow 5487 (20100928) __________

Wiadomosc zostala sprawdzona przez program ESET NOD32 Antivirus.

formatting link
lub
formatting link

mam ten kurs, nie mia³em czasu jeszcze go przeczytaæ, warto?

mo¿na siê by³o spodziewaæ takiego obrotu sprawy - ach to PO

a zmieniaj±c temat, czy Kto¶ tu widzia³ gdzie¶ jaki¶ kurs pisania makefiles?

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

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

wstawki-dupawki ;)

formatting link

"mam ten kurs, nie mia³em czasu jeszcze go przeczytaæ, warto?"

warto, nawet z ciekawo¶ci, tylko nie nawijaj ¿e nie masz czasu czytaæ !!, ale idzie zima i d³uuugie wieczory.

pozdrowionka

__________ Informacja programu ESET NOD32 Antivirus, wersja bazy sygnatur wirusow 5490 (20100929) __________

Wiadomosc zostala sprawdzona przez program ESET NOD32 Antivirus.

formatting link
lub
formatting link

no i nie ma mo¿liwo¶ci nieu¿ywania inline? wszyscy rozpisuj± sie nad inline, a nikt normalny chyba tego nie stosuje...

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required