Skocz do zawartości

[Programowanie] Szybki start z WinAVR


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.

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.

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.

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.

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

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.

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)

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.

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.

  • 3 tygodnie później...

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.

  • 2 tygodnie później...

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

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ć?

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