Skocz do zawartości
Treker

Kurs programowania uC AVR w C (WinAVR, Kurs AVR-GCC)

Pomocna odpowiedź

Słuchajcie, jeszcze nie doczytałem pewnej rzeczy a bardzo chciałbym to wiedzieć. Jeśli do danego pinu portu przypiszę jakąś nazwę, dajmy na to:

#define  	RST	PORTB.4

to czemu nie mogę napisać:

RST=1;

Kompilator wywala mi do tego błąd. Czemu?

Udostępnij ten post


Link to post
Share on other sites

A RST nie jest przypadkiem nazwą zastrzeżoną ? Spróbuj napisać RESET zamiast RST.

Udostępnij ten post


Link to post
Share on other sites
A RST nie jest przypadkiem nazwą zastrzeżoną ? Spróbuj napisać RESET zamiast RST.

Nie, kompilator wywala taki błąd:

error: expected ';' before numeric constant

Udostępnij ten post


Link to post
Share on other sites
Słuchajcie, jeszcze nie doczytałem pewnej rzeczy a bardzo chciałbym to wiedzieć. Jeśli do danego pinu portu przypiszę jakąś nazwę, dajmy na to:
#define  	RST	PORTB.4

to czemu nie mogę napisać:

RST=1;

Kompilator wywala mi do tego błąd. Czemu?

Osobiscie uwazam ze nie tak sie tego poprostu używa

Sam zapis PORTB.4 nic mi nie mówi i widze go pierwszy raz. Widziałem natomiast PORTB4

w sumie nadal niewiele to zmienia bo raczej uzywa sie to w ten sposób że jesli chcesz ustawić stan logiczny wysoki to pisze się tak:

PORTC = PORTC|(1<

Jesli chcesz to robić inaczej to wtedy pasuje napisać sobie funkcje lub makro.

Badź ostrożny przy używaniu #define. Jest to intrukcja preprocesora (zostanie wykonana jeszcze przed kompilacją) i najprościej w świecie podmienia tekst.

Pozdrawiam

Udostępnij ten post


Link to post
Share on other sites

Po prostu jak do ściany. matrix, zanim ktokolwiek Ci teraz pomoże, wyjaśnij, dlaczego z uporem maniaka używasz "PORTB.4", skoro już minimum 2 razy pisano Ci, że taki zapis jest nieprawidłowy?? Weź człowieku przeczytaj uwagi, które już masz napisane, następnie przeczytaj je drugi raz i dopiero zadawaj następne pytania.

Udostępnij ten post


Link to post
Share on other sites
Po prostu jak do ściany. matrix, zanim ktokolwiek Ci teraz pomoże, wyjaśnij, dlaczego z uporem maniaka używasz "PORTB.4", skoro już minimum 2 razy pisano Ci, że taki zapis jest nieprawidłowy??

Bo jest tak w programie który znalazłem gdzieś w necie i chcę wiedzieć czemu kompilator wywala błąd?

Weź człowieku przeczytaj uwagi, które już masz napisane, następnie przeczytaj je drugi raz i dopiero zadawaj następne pytania.

Ale w uwagach nie podano czemu tak jest źle?

Udostępnij ten post


Link to post
Share on other sites

Może to wynikać z faktu, że ktos miał inne środowisko. Nie czyste C tylko jakies Ardunio. Nie znam platfromy tylko strzelam. W WinAvr taki zapis nie ma sensu ponieważ kropka symbolizuje "wejscie glebiej" w STRUKTURE. Natomiast porty są "zwykłymi" rejestrami. W związku z tym nie wchodzisz w nie głębiej. W C nie można w ten sposób się odwałać do n-tego bitu rejestru. Ja robie to tak jak już ci napisałem lub w zapisie skróconym PORTC|=1<

Pozdrawiam

Udostępnij ten post


Link to post
Share on other sites
le w uwagach nie podano czemu tak jest źle?

https://www.forbot.pl/forum/topics20/szybki-start-z-winavr-vt513,75.htm#44647

A pytania dlaczego nie działa kod znaleziony gdzieś w necie powinieneś zadawać autorowi kodu. Ten kod nie ma prawa działać w standardowych bibliotekach. Arduino to też nie jest. Lepiej przejrzyj kody robotów itp., które były wrzucane na forum.

Udostępnij ten post


Link to post
Share on other sites

matrix, na prawdę czytając te posty polecam zaryzykować zakup książki, którą linkowałem wcześniej 😉 Po 2h czytania będziesz wiedział co robiłeś źle, a po 2 dniach będziesz się śmiał z tego tematu 😋

Udostępnij ten post


Link to post
Share on other sites

Spokojnie, juz czytam Symfonię C++. Sporo już mi się wyjaśniło i mam nadzieję że będę wiedziała więcej. Szczerze to nie wyobrażam sobie bujnięcia timera w C. W bascom było to niemalże dziecinnie łatwe. Ale jak na razie do timerów to ja mam jeszcze daleko.

Udostępnij ten post


Link to post
Share on other sites

Polecam "Mikriokontrolery AVR Język C" Mirosława Kardaśa.

Też myślałem że C jest trudne i ta książka zmieniła moje zdanie.

Pozdrawiam i miłej lektury.

Udostępnij ten post


Link to post
Share on other sites

matrix - ja z kolei nie wyobrażam sobie timera w bascom kwestia przyzwyczajenia do języka. Dobrze że w końcu zabrałeś się za C/C++ i dobrze że właśnie z Symfonią (nie przerazi Cię ten język i na pewno go polubisz dzięki tej książce).

Udostępnij ten post


Link to post
Share on other sites

Słuchajcie, kto mi wyjasni poniższy cytat? :

Pytanie brzmi:

Co znaczy że funkcja zwraca jakąś wartość?

I odpowiedź z książki:

Znaczy to że wyrażenie będące wywołaniem tej funkcji ma samo w sobie jakąś wartość.

Proszę o jakiś prosty przykład, bo ja na przykładach najlepiej łapię ocb.

Udostępnij ten post


Link to post
Share on other sites

chodzi o to, że można tak zrobić:

a = funkcja(b, c);

po czymś takim a ma wartość taką jaką zwróciła funkcja()

Udostępnij ten post


Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.


×
×
  • Utwórz nowe...