Odpowiedz 
 
Ocena wątku:
  • 3 Głosów - 3.33 Średnio
  • 1
  • 2
  • 3
  • 4
  • 5
Programowanie w języku C w środowisku AVR Studio4
SP4EJT Offline
Marcin
****

Liczba postów: 340
Dołączył: 06-05-2011
Post: #51
RE: Programowanie w języku C w środowisku AVR Studio4
Zakładam że wiesz co to jest napięcie ...
Zaczne od wyjasnienia co to jest "stan logiczny":
Maszyny cyfrowe takie jak komputer, kalkulator, zegarek elektroniczny, odtwarzacz mp3, GPS.... są to urządzenia kóre dokonują obliczeń, ciągle coś liczą i liczą gdy są uruchomione. Wynikiem ich przeliczeń może być dźwięk z "empetrójki", obraz na teoim telefonie komórkowym, obraz w telewizorze, plik z rysunkiem płytki drukowanej ....
Urządzenia te zbudowane są z układów które komunikują się między sobą za pomocą 0 i 1 (zer i jedynek) - czyli "rozmawiają w języku binarnym". Ale jak syłają między sobą "słowa" zbudowane z zer i jedynek ?? Ktoś to mądrze wymyslił - za pomocą napięcia elektrycznego, które zmienia sie w czasie. Wystąpienie napięcia ( 5Volt ) oznacza 1 - inaczej "stan wysoki" , zaś brak napięcia ( 0Volt ) oznacza 0 - inaczej stan niski.
Więc jeżeli na jakimś wyprowadzeniu układu cyfrowego pojawi się taki przebieg napięcia w czasie : İmage
(patrz tylko na czerwony wykres - dane) to będzie to oznaczało że :
w pierwszej milisekundzie na wyprowadzeniu układu jest stan wysoki ( 1 )
w 2 ms na wyprowadzeniu jest stan niski ( 0 )
w 3 jest też ( 0 )
w 4 jest ( 1 )
w 5 jest ( 0 )
w 6 jest ( 0 )
w 7 jest ( 1 )
w 8 jest ( 1 ) ... i tak dalej ...
Postać binarna ( bitowa ) będzie zatem taka jak na górze rysunku, czyli 10010011101.
Czerwony przebieg jest przykładem szeregowego sposóbu komunikacji ... bo kolejne bity następują po sobie - nie ma możliwości przesłać więcej niż jednego bitu na raz w jednej jednostce czasu. Jeżeli mieli byśmy np. 8 wyprowadzeń (tyle jest w każdym POrcie Atmegi32 ) i na każdym z tych wyprowadzeń jest co innego w tej samej jednostce czasu (możemy w jednej milisekundzie przesłać 8 bitów na raz czyli jeden bajt ) - taki sposób przesyłu danych nazywa sie równoległym.... tak w uproszczeniu.

Teraz spróbuję wytłumaczyć ci czym jest "ciąg":
Ciąg to pewnien zbiór elemmentów które sa uporządkowane w określonej kolejności - nie chodzi o uporządkowanie od najmniejszej do największej czy na odwrót. Elementy te wystepuja kolejno po sobie - czyli jeden za drugim.
Przykład ciągu liczbowego ( zapis tego przykładowego ciągu ) : ( 4, 23, 19, 36, 1, 7 ) powiedzmy że to ciąg sześciu liczb wylosowanych w dużym lotku w takiej kolejności w jekiej wypadły kule z bębna.
Przykład ciągu znakowego : ( t, o, _, j, e, s, t, _, c, i, ą, g ) .... z ilu elementów składa się ten ciąg ?? no jasne że z 12 . W języku C też używamy ciągów liczbowych i znakowych - nazywaja się tablicami Smile [/color] dla powyższych przykładów ciągów pokażę odpowiedniki tablic w języku C : nasz ciąg liczb z totolotka będzie wyglądał tak ( 4, 23, 19, 36, 1, 7, /0 ) ... znacznik /0 jest znacznikiemm końca tablicy (ciągu) - jeżeli Atmega natrafi na niego to wie że skończył się ciąg i może zakończyć operację jego przetwarzania. Podobnie z ciągiem znakowym : jego elementy to kolejno : ( t, o, _, j, e, s, t, _, c, i, ą, g, /0 ) . Można w języku C określić tablicę podobnie:
Kod:
char tab[] = {'c', 'i', 'ą', 'g', '_', 'z', 'n', 'a', 'k', 'ó', 'w', ' '};
ale my bedziemy robic to łatwiej i czytelniej czyli:
Kod:
char tab[] = "ciąg_znaków";
Czy to jest dla Ciebie zrozumiałe Janku ?

Teraz kwestia zmiennych typu char i int ....
Napisałeś, że wiesz co to jest bit i bajt ... zatem zmienną typu char jest zmienna 8-bitowa ( 1-bajtowa ) przyjmująca wartości ze zbioru liczb calkowitych od -128 do +127. Zaś zmienna typu int to zmienna 16 bajtowa przyjmująca wartości również ze zbioru liczb całkowitych od -32768 do +32767. W języku C deklarujemy (tworzymy) zmienną którą będziemy potem używać. Robi sie to tak :
Kod:
char x;
czyli deklarujemy zmienną typu char o znazwie x .
Po jej deklaracji (utworzeniu) ma ona wartość "0" (zero). Jeśli chcielibyśmy żeby miała wartość 47 to musimy napisać pod deklaracją:
Kod:
x = 47;
lub od razu zadeklarować i przypisać wartość
Kod:
char x=47;
Teraz x jest równoznaczny z licbą 47 ( x ma wartość 47 ). Jesli gdzie kolwiek w kodzie Atmega natknie sie na zmienną x to wie że "iks" musi sobie zamienić na liczbe 47. - Nie potrafię tego jaśniej wytłumaczyć. Napisz jeśli nadal nie wiesz o co chodzi z tymi zmiennymi. Może ktoś kto umie lepiej tłumaczyć załatwi to wtedy.
(Ten post był ostatnio modyfikowany: 25-01-2012 23:43 przez SP4EJT.)
25-01-2012 23:41
Odwiedź stronę użytkownika Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
Odpowiedz 


Wiadomości w tym wątku
RE: Programowanie w języku C w środowisku AVR Studio4 - SP4EJT - 25-01-2012 23:41

Skocz do:


Użytkownicy przeglądający ten wątek: 3 gości