Skocz do zawartości
Treker

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

Udostępnij ten post


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

Udostępnij ten post


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

Udostępnij ten post


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.

Udostępnij ten post


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

Udostępnij ten post


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

Udostępnij ten post


Link to post
Share on other sites

Wielkie dzięki, niewiele na razie rozumiem, trudno lektura nie zając nie ucieknie - trochę się jeszcze pomęczę😋 dziękuję za pomoc PIWKA dla kolegów 🙂

Udostępnij ten post


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

Udostępnij ten post


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.

Udostępnij ten post


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.

Udostępnij ten post


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

Udostępnij ten post


Link to post
Share on other sites

Marooned, nie trzeba. Wystarczy help.

Udostępnij ten post


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

Udostępnij ten post


Link to post
Share on other sites

Chciałem zapytać czy będą kolejne części kursu. Ponieważ czuję niedosyt (brak opisu działania i obsługi PWM'a)

Udostępnij ten post


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 😉

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!

Gość
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...