Skocz do zawartości

[Programowanie] Szybki start z WinAVR


abxyz

Pomocna odpowiedź

na koniec jeszcze raz się powtórzę - zamiast wywarzać otwarte drzwi zajrzyj w końcu do jakiś tutoriali bo tutaj opisujemy takie podstawy, że wiedział byś to wszystko po przeczytaniu dwóch rozdziałów.

Moje pytania zrodziły się bo po raz czwarty dotarłem do trzeciej części naszego diodowego kursu avr-gcc i nadal nic z tego nie rozumiem.

pętla for działa tak: for (poczatkowa operacja; warunek wyjścia z pętli; instrukcja do wykonania po każdym przejściu pętli)

czyli w tym wypadku wykonuj funkcję inc_adss() 110 razy. bo i na początku będzie wynosić 0 a kiedy wyniesie 110 to spełni się warunek wyjścia.

Właśnie dlatego nic nie rozumiem. Czemu ma powtórzyć pętlę 110 razy zwiększając za każdym razem wartość zmiennej inc_adss skoro wartość 0 wpisywana jest do zmiennej i a nie do zmiennej inc_adss ? I do tego jeszcze te nawiasy przy zmiennej inc_adss(); . Szok.

Link do komentarza
Share on other sites

Właśnie dlatego nic nie rozumiem. Czemu ma powtórzyć piętlę 110 razy zwiększając za każdym razem wartość zmiennej inc_adss skoro wartość 0 wpisywana jest do zmiennej i a nie do zmiennej inc_adss ? I do tego jeszcze te nawiasy przy zmiennej inc_adss(); . Szok.

3 osoby pod rząd powiedziały Ci że inc_adss to funkcja a nie zmienna i że swiadczą o tym nawiasy.

Link do komentarza
Share on other sites

3 osoby pod rząd powiedziały Ci że inc_adss to funkcja a nie zmienna i że swiadczą o tym nawiasy.

Przepraszam, ale nic z tego nie rozumiem. Chyba już na to za stary jestem.

Link do komentarza
Share on other sites

zobacz kurs samego C a nie tego na avry bo w diodowym kursie pierwsze rozdziały są o programatorze, winavr itp a np na wiki masz od razu typy zmiennych operatory petle warunki funkcje itp.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Nie jest to kwestia stary czy nie. Poprostu ksiązkę z ćwiczeniami do C i jedziesz po kolei z zadaniami. Osobiście polecam Prata Stephen - Język C. Szkoła programowania. Teraz jednak czytam Język ANSI C - Krenighan. Myślę jednak, że każda bedzie dobra która idzie od podstaw i jest grubsza niz 30 stron.

Komputerowe C dla tego, że nie musisz bawić sie z urządzeniami wejścia i wyjścia tylko piszesz i masz wynik w konsoli. Do nauki idealne. Łapniesz idee i jazda na AVR'ki.

Powodzenia

Link do komentarza
Share on other sites

Teraz jednak czytam Język ANSI C - Krenighan

Gorąco polecam, chyba najlepsza pozycja poświęcona C, napisana bardzo przystępnym językiem. W końcu stworzyli ją współtwórcy C 😉 Na studiach AiR, u mnie, traktowana jako pozycja obowiązkowa.

Link do komentarza
Share on other sites

W sumie jedyna odpowiedź jaka mi się nasuwa to:

http://pl.wikibooks.org/wiki/C

Panowie (i panie?) nie śmiejcie się, ale chyba naprawdę jestem wyjątkowo tępy. Doszedłem do 7 rozdziału tego co kolega zaproponował wyżej i czytam coś takiego:

volatile znaczy ulotny. Oznacza to, że kompilator wyłączy dla takiej zmiennej optymalizacje typu zastąpienia przez stałą lub zawartość rejestru, za to wygeneruje kod, który będzie

odwoływał się zawsze do komórek pamięci danego obiektu

I ni w ząb tego nie czaję.

To jest jakieś masło maślane:

“Statyczność” polega na zachowaniu warto-

ści pomiędzy kolejnymi definicjami tej samej zmiennej. Jest to przede wszystkim przydatne

w funkcjach. Gdy zdefiniujemy zmienną w ciele funkcji, to zmienna ta będzie od nowa defi-

niowana wraz z domyślną wartością (jeżeli taką podano)

Link do komentarza
Share on other sites

Chodzi o to, że kompilując program otrzymujesz coś, co powinno robić to samo co napisałeś, ale niekoniecznie w ten sam sposób jak to zapisałeś - tylko np. szybciej albo zajmując mniej miejsca. Problem się pojawia wszędzie tam gdzie pewne zmienne itd. mogą być modyfikowane lub odczytywane w sposób niezadeklarowany jawnie w programie, np. w przerwaniu.

Link do komentarza
Share on other sites

volatile już zostało Ci opisane. Dodam tylko, że osobiscie miałem taki problem przy robienie programowego PWM. Miała być jedna zmienia w przerwaniu od przetwornika analogowo cyfrowego jednak nie dzialalo. Dopiero jak dodalem w deklaracji volatile to ruszylo 😋

Jak deklarujesz jakies zmienne w ciele funkcji to one są powoływane do życia wraz z wywołaniem tej funkcji i są niszczone w momencie opuszczenia. Idzie za tym, że wszystkie dane które w nich były przetrzymywane są tracone. Jest to naturalne i porządane bo potrzebne dane już sobie w jakiś sposób wyprowadziłeś. Jednak jesli chcesz jakis parametr zachowywać miedzy kolejnymi wywołaniami funkcji to wtedy nadajesz jej atrybut static. Mam nadzieję, że niczego nie pokręciłem.

Link do komentarza
Share on other sites

Witam!

Mam problem. Po pobraniu najnowszej wersji Win avr i zainstalowaniu jej nie mam czegoś takiego jak programy -> Win AVR -> Mfile.

Mam windows 7 64bit a win avr zainstalowałem w C:WinAvr

Da się w tym katalogu dokopać i ręcznie uruchomić programmer's notepad ale nigdzie nie ma MFile !

Co prawda jest taki folder ale nie ma tam żadnej aplikacji.

Link do komentarza
Share on other sites

Witam, dopiero zaczynam i mam taki problem przy kompilacji, piszę na laptopie i nie mam podłączonego programatora, początkowo chcę poćwiczyć teoretycznie bez programatora. Wszystko robię dokładnie tak samo jak w tym kursie, co jest przyczyną tych błędów??, proszę o pomoc.

> "make.exe" all

MAKE Version 5.2 Copyright © 1987, 2000 Borland

Error makefile 463: Command syntax error

Error makefile 464: Command syntax error

Error makefile 465: Command syntax error

Error makefile 466: Command syntax error

Error makefile 469: Command syntax error

Error makefile 470: Command syntax error

Error makefile 472: Command syntax error

Error makefile 473: Command syntax error

Error makefile 475: Command syntax error

Error makefile 477: Command syntax error

Error makefile 478: Command syntax error

Error makefile 533: Colon expected

Error makefile 542: Colon expected

Error makefile 564: Too many rules for target './%.o'

Error makefile 574: Too many rules for target '%.s'

Error makefile 581: Too many rules for target './%.o'

Error makefile 612: Command syntax error

*** 17 errors during make ***

> Process Exit Code: 1

> Time Taken: 00:00

Juz sobie poradziłem, zainstalowałem nowszą wersję.

Serdecznie pozdrawiam

Link do komentarza
Share on other sites

Witam.

Mam problem z kompilacja programu.

Plik makefile ustawiłem wedle przykładu w pierwszym poście, z tym że dla ATmegi32.

Wyświetla się taki błąd

ake.exe: *** No rule to make target `led.elf', needed by `elf'.  Stop.

> Process Exit Code: 2
> Time Taken: 00:00

Widzę, że brakuje pliku led.elf, ale jak go utworzyć?

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.