Skocz do zawartości

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


Pomocna odpowiedź

0XAA binarnie to 10101010, czyli co drugi bit w rejestrze PORTD będzie włączony - co to oznacza? Zerknij do dokumentacji 🙂 Albo ok, jeśli wcześniej port został ustawiony jako wyjście, to co drugi pin portdu d będzie zwarty do 5V, a reszta do gnd. Jeśli jednak wcześniej piny zostały ustawione jako wejścia (rejestr DDRx - 0 wejście, 1 wyjście), to ten rejestr włącza pull-upa na co drugim pinie (pull up to rezystor podciągający do +, reszta pinów będzie w stanie wysokiej impedancji, będą "wisieć w powietrzu").

Link to post
Share on other sites

Jeżeli dobrze rozumuję w C 0 - oznacza Włączony pin, a 1 - Wyłączony pin (jeżeli co 2 pin jest włączony a co drugi to 0) - AA oznacza (przypuszczam) co 2, czyli funkcja 0Xa - to każdy będzie jako 0?

P.S. Czy mógłbym prosić o jakąś dokumentacje jak to konfigurować? - bo nie mogę coś znaleść :/

Podejrzewam również, że trzeba piny czytać z tej tablicy: LINK - Dioda - dobrze myślę?

Link to post
Share on other sites

Przy C trzeba czytać dokumentację. W bascomie można sobie poradzić bez.

Z grubsza w C musimy operować na rejestrach, które sterują pracą całego uC i jego poszczególnych elementów. Szczegóły są w nocie, ew zobacz diodowy kurs C.

0xAA to jest zapis szesnastkowy.

  • Lubię! 1
Link to post
Share on other sites
Pewnie po tym zdaniu ludzie z tego forum mnie zlinczują, ale trudno Bascom przypomina składanie programu z "klocków" i jak to mawia mój wykładowca jest to język dla Bardzo leniwych i muszę przyznać ze wyjątkowo zgadam się z tymi słowami

Nie mam pretensji o to że piszesz że bascom jest dla leniwych. Może i jest, ale jest za to łatwy, natomiast mam pretensje o to że jako że może chciałbym zacząć przygodę z avr i językiem C, więc zapytałem o podstawy, ale kolega nie ułatwia a wręcz zniechęca.

Klamry używam do grupowania kodu, zamykamy w nich blok instrukcji. Możesz używać ich wszędzie praktycznie. Dla przykładu: (...)

(... )Kwestia dowolności co jest ci wygodniej używać.

O taką odpowiedź mi chodziło. Dzięki takim ludziom języki coraz to nowi ludzie poznają między innymi C. Dziękuję.

@matrix: aż dziwne, że się nie zapytałeś, co robi "="

Czyżbym wyczuwał ironię? O to nie zapytałem ale mam na przykład pytanie czemu pisze się tak ==?

Wiele nie jest dla mnie zrozumiałe. Przede wszystkim te dziwne składnie operacji logicznych jak kolega raczył mi tu już wyjaśnić:

wszelakiego rodzaju zapisu typu += *= |= są to skrócone zapisy.

dla przykładu:

Kod:

a = a + b

a += b

te zapisy są równoważne

Takie to dla mnie mocno dziwne.

Link to post
Share on other sites

Oj kolego, wygląda na to, że nie wiesz, że istnieje system szesnastkowy 🙂 heksadecymalny (hex). Przeczytaj jeszcze raz drugą część kursu, wszystko jest tam wyjaśnione. A dokumentacja? "/nazwa mikrokontrolera/ datasheet" - wklep to w google 🙂

  • Lubię! 1
Link to post
Share on other sites

= - operacja przypisania == - operacja porównania, zwraca wartość logiczną.

Wszystko, wydaje mi się, że jest w kursie. Niektóre rzezy można też bardzo łatwo wygooglować. Trochę samozaparcia i da radę. I zapomnieć zupełnie o BASCOMie podczas pisania programów, bo sobie krzywdę tylko można zrobić.

Link to post
Share on other sites
@matrix: aż dziwne, że się nie zapytałeś, co robi "="

Czyżbym wyczuwał ironię? O to nie zapytałem ale mam na przykład pytanie czemu pisze się tak ==?

Wiele nie jest dla mnie zrozumiałe. Przede wszystkim te dziwne składnie operacji logicznych jak kolega raczył mi tu już wyjaśnić:

wszelakiego rodzaju zapisu typu += *= |= są to skrócone zapisy.

dla przykładu:

Kod:

a = a + b

a += b

te zapisy są równoważne

Takie to dla mnie mocno dziwne.

Po kolei:

"==" to sprawdzenie, czy są równe, "=" to przypisanie, logicznie jest 1 jeśli się udało. Może się wydawać dziwne sprawdzanie czy udało się wykonać działanie, ale niekoniecznie - może się zdarzyć, że nie było to możliwe, np. jeśli w długim działaniu pojawiało się dzielenie przez zero. W takim wypadku zachowanie może być różne, np. wystąpi wyjątek, ale może też pokazać, że warunek nie jest spełniony.

Wydaje sie udziwnieniem dopóki człowiek nei dochodzi do momentu, kiedy dochodzi do takiej sytuacji:

jedna_zmienna = jedna_zmienna + 5;

inna_zmienna = inna_zmienna - jedna_zmienna;

kolejna_zmienna = 5*kolejna_zmienna;

stała_zmienna = stała_zmienna%kolejna_zmienna;

i = i+1;

jeszcze_inna_zmienna = jeszcze_inna_zmienna - 1;

a można to napisać:

jedna_zmienna += 5;

inna_zmienna -= jedna_zmienna;

kolejna_zmienna *= 5;

stała_zmienna %= kolejna_zmienna;

i++;

jeszcze_inna_zmienna--;

Czytelność kodu.

  • Lubię! 1
Link to post
Share on other sites
edna_zmienna = jedna_zmienna + 5;

inna_zmienna = inna_zmienna - jedna_zmienna;

kolejna_zmienna = 5*kolejna_zmienna;

stała_zmienna = stała_zmienna%kolejna_zmienna;

i = i+1;

jeszcze_inna_zmienna = jeszcze_inna_zmienna - 1;

a można to napisać:

jedna_zmienna += 5;

inna_zmienna -= jedna_zmienna;

kolejna_zmienna *= 5;

stała_zmienna %= kolejna_zmienna;

i++;

jeszcze_inna_zmienna--;

To mi mocno rozjaśniło sytuację operacji matematycznych w języku C. Mam ostatnie pytanie odnośnie operacji logicznych, ale tylko chyba po to by się upewnić.

Jeśli:

inna_zmienna = inna_zmienna-jedna_zmienna to to samo co

inna_zmienna-=jedna_zmienna

to w takim żeby to:

inna_zmienna-=jedna_zmienna

rozszerzyć do normalnego wyglądu trzeba rozumować tak?

zmienna po lewej wstawić znak = jeszcze raz zmienna po lewej - zmienna po prawej ?

Jakie ma znaczeni kolejność znaków -= ? Można odwrotnie?

Nie dziwcie się o te pytania. W bascom jest inaczej.

Link to post
Share on other sites

http://www.hobby.abxyz.bplaced.net/index.php?pid=4&aid=4

Bardzo IMO jest tam przystępnie objaśnione, a czasami warto napisać sobie prosty programik na kompa żeby zobaczyć działanie określonych funkcji w realu.

Niestety(na szczęście) musi być -=.

Odnośnie Twojego rozumowania, to chyba go nie poczułem, ale wygląda ok. Po prostu od zmiennej po lewej odejmowana jest wartość (zmienna) po prawej (analogicznie z dodawaniem, mnożeniem i dzieleniem).

Skrócony zapis wbrew pozorom bardzo dużo daje, szczególnie przy długich zmiennych, albo odwołaniach do np. pól struktur.

Link to post
Share on other sites

Widzę, że gorąca dyskusja.

Ja "kurs dla totalnie zielonych" rozumiem w ten sposób, że ktoś jest zielony w programowaniu AVRów - a nie w samym języku C. Kurs oczekuje znajomości języka i pokazuje różnice oraz rzeczy niespotykane w klasycznym C (np. popularne makra, wykorzystanie portów etc).

Kursów języka C jest na sieci tak wiele, że pisanie własnego absolutnie mija się z celem.

To tak jak książki typu "podstawy pisania gier". Jest w nich wiedza o algorytmach wyszukiwania ścieżek, wykrywania kolizji, ale nikt nie będzie tam tłumaczył rekurencji i iteracji.

Do programowania w Bascomie też potrzeba mieć wiedzę o języku Basic, na którym Bascom się opiera.

Jakie ma znaczeni kolejność znaków -= ? Można odwrotnie?
Można, ale to będzie oznaczało co innego.

a -= b; //przypisz do `a` wynik `a-b`

a =- b; //przypisz do `a` wynik `-b`

  • Lubię! 1
Link to post
Share on other sites
Ja "kurs dla totalnie zielonych" rozumiem w ten sposób, że ktoś jest zielony w programowaniu AVRów - a nie w samym języku C.

A ja kurs programowania dla zupełnie zielonych rozumiem jako kurs dla tych co zupełnie nie jarzą programowania, co poza tym zaznaczył kolega Treker pisząc:

Kurs będzie prowadzony od totalnego zera, wymaganie jest tylko jedno 😉

Znajomość podstaw elektroniki.

Do programowania w Bascomie też potrzeba mieć wiedzę o języku Basic, na którym Bascom się opiera.

Ja z bascomem zacząłem bez podstaw basica i poszło mi (według mnie) ok

Link to post
Share on other sites

Nider, spróbuj sam, czytając datasheet.

Może wydawać się to trochę skomplikowane, ale da dużo więcej niż gotowce. Poza tym wykształci nawyk efektywnego przeszukiwania not 😉

Link to post
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

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.