Skocz do zawartości

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?

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

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.

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?

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

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.

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 😋

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.

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.

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

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.

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