Skocz do zawartości

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


Treker

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?

Link do komentarza
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

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

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.

Link do komentarza
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?

Link do komentarza
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

Link do komentarza
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.

Link do komentarza
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 😋

Link do komentarza
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.

Link do komentarza
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).

Link do komentarza
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.

Link do komentarza
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...

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.