HomeMade
Programowanie w języku C w środowisku AVR Studio4 - Wersja do druku

+- HomeMade (http://sp-hm.pl)
+-- Dział: Oprogramowanie (/forum-84.html)
+--- Dział: Technika programowania mikroprocesorów (/forum-85.html)
+--- Wątek: Programowanie w języku C w środowisku AVR Studio4 (/thread-1161.html)

Strony: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19


RE: Programowanie w języku C w środowisku AVR Studio4 - SQ9JXB - 23-01-2012 12:03

"Proszę napisać, czy po usunięciu z kodu zbędnych opóźnień, działa u was wszystko OK, "

Na wyświetlaczu nie ma nic.

Dopiero wprowadzenie poprawki Kolegi Bogdana SP3IQ jest wyświetlenie ABCD_


Jak uruchomić podświetlenie wyświetlacza?


RE: Programowanie w języku C w środowisku AVR Studio4 - SP9LAP - 24-01-2012 16:00

Pin BL do masy.


RE: Programowanie w języku C w środowisku AVR Studio4 - SQ2EER - 24-01-2012 22:19

Witam - mam prośbę do Marcia prowadzącego kurs - czy możesz podać jak powinny być poustawiane fusebity dla atmegi32 z kwarcem 16MHz - u mnie coś złe działa wszystkie programy działają ale jakby były spowolnione kilka razy - 1 sekunda trwa jak pisałem wcześniej nie 4 sekundy a 12 sekund to jest sprawdzone na pierwszym i drugim programie gdzie diody powinny teoretycznie zapalać się co 1 sekundę - dopisanie w pierwszej linii programu #define F_CPU 16000000 nic nie dało - pozdrawiam Jacek.


RE: Programowanie w języku C w środowisku AVR Studio4 - SP4EJT - 25-01-2012 0:42

Proszę Jacku, zaznaczyłem odpowiedzialną za to część czerwoną elipsą:
[attachment=4583]
To będzie lekcja 8 :
Nasz programik potrafi wyswietlać na LCD tylko pojedyńcze znaki - korzystamy w tym celu oczywiście z funkcji bajt_lcd()
Przydałaby się funkcja wyświetlająca całe wyrazy ... żeby to zrobić musicie poznać Tablice ... Przykłady zapisu deklaracji tablicy:
Kod:
char tablica[10];
int liczby[];
Pierwsze to tablica o nazwie "tablica" składająca sie z 10 elementów char (czyli 8 bitowych),
Drugie to tablica, o któej nic nie wiadomo z ilu elementów sie składa, wiadomo natomiast że składa się z wartości int (czyli 16 bitowych).
Przy zapisie wyrazów(a nawet zdań) będziemy korzystać z tablic, które składają się ze znaków czyli char.
Kod:
char tab[]="jakis_wyraz"
tworzy tablicę o nazwie tab 12 elementową, bo jest 11 znaków + ostatni dodawany automatycznie - znacznik końca tablicy "\0" - specjalnie napisałem \0 to nie pomyłka. 0 (samo zero) potraktowane zostanie jako kolejny element tablicy - czyli znak ASCII o kodzie 48 (jeśli nie wiecie co to tablica znaków ASCII to poszukajcie w necie - przyda sie wam).
Wracamy do naszego ostatniego przykładu tablicy ... Jesli w kodzie swojego programu umieścicie definicje tej tablicy a po niej
Kod:
bajt_lcd(tab[3]);
to wyświetli wam czwarty znak tablicy (bo numeracja zaczyna sie od "0" ) - czyli literę i.
Jeśli umieścicie w kodzie
Kod:
bajt_lcd(tab[0]);
bajt_lcd(tab[7]);
to Atmega prześle do wyświetlacza pierwszy znak tablicy (czyli "j"), a następnie ósmy znak z tablicy (czyli "y").
Czyli już wiecie że liczba w nawiasie kwadratowym określa nam który znak z tablicy będzie brany pod uwagę.
Co zrobic by wyświetlały się całe tablice znaków (czyli całe napisy). Wklejcie na samym końcu kodu progrramu (przed ostatnim nawiasem klamrowym) to :
Kod:
char tab[]="to jest napis";
    int i=0;
    while(tab[i]!=0)
    {
        bajt_lcd(tab[i]);
        i=i+1;
    }
skompilujcie i uruchomcie, a zobaczycie efekt. Tłumaczę linijka po linijce co to znaczy:
1. definiujemy tablice znaków o nazwie tab i treści to jest napis (+ znacznik końca tablicy czyli zero, którego tu nie widzimy - ale zawsze na końcu każdej tablicy jest)
2. deklarujemy, że będziemy używac zmiennej i która początkowa wartość będzie równa 0
3. pętla while będzie wykonnywać polecenia pomiędzy nawiasami klamrowymi do momentu kiedy i-ty element tablicy będzie zerem - czyli znacznikiem końca tablicy. Dokładnie zappis ten oznacza "wykonaj jesli i-ty element tab jest różny od zera. != oznacza "różny" (nierówny)
5. wyślij do lcd i-ty element tablicy (pamiętamy że przy deklaracji ustawiliśmy wartość i na 0, więc zacznie wyświetlać od pierwszego (zerowego dla Atmegi) elementu tablicy
6. zwiększ wartość i o 1.
Potem pętla wraca do ponownego sprawdzenia warunku czy i-ty (następny) element tablicy nie jest już zerem czyli znacznikiem końca tablicy. Mam nadzieję że to zrozumiecie ... Spróbujcie to uruchomic u siebie a ja jutro wstawie nowa wersję obsługi wyświetlacza. Jesli wstawicie zamiast i=i+1; to: i=i+2; to wyświetli Wam oczywiście co drugi znak tablicy ... jednak może przeoczyć znacznik końca tablicy !


RE: Programowanie w języku C w środowisku AVR Studio4 - SQ2EER - 25-01-2012 0:45

Witam - dzięki Marcin - rozumiem ze pozostałe fusebity mam poustawiać tak jak na twoim obrazku?


RE: Programowanie w języku C w środowisku AVR Studio4 - SP4EJT - 25-01-2012 11:18

(25-01-2012 0:45)SQ2EER napisał(a):  Witam - dzięki Marcin - rozumiem ze pozostałe fusebity mam poustawiać tak jak na twoim obrazku?
Chyba nie, wydaje mi sie że tylko ten zaznaczony przeze mnie jest w twoim przypadku istotny.

Ludzie, nie róbcie sobie jaj ! Nie wierze w to że wszyscy "kursanci" wszystko rozumieją. PYTAJCIE, Pytajcie i pytajcie - postaram się nie pozostawić Was bez pomocy. Szkoda byłoby żeby ktoś zrezygnował z okazji "ujeżdżenia" Atmegi i C. bo czegoś nie rozumie i myśli że potem będzie jeszcze trudniej. Z każdym dniem nauki jest coraz bardziej z górki. Chyba że nadal chcecie zazdrościć innym ... :/


RE: Programowanie w języku C w środowisku AVR Studio4 - SQ6ADE - 25-01-2012 13:10

Spójrz na stronę nr. 25 dokumentacji. Tabelka 2
Bity CKSEL3-0
Może masz włączony oscylator RC ?


RE: Programowanie w języku C w środowisku AVR Studio4 - SQ9JXB - 25-01-2012 19:46

(25-01-2012 13:10)SQ6ADE napisał(a):  Spójrz na stronę nr. 25 dokumentacji. Tabelka 2

A nie można jaśniej dla laików?



Cytat:Nie wierze w to że wszyscy "kursanci" wszystko rozumieją.

Ano nie rozumieją co niektórzy, bo zapewne zapomniałeś o jednym.
Piszesz o Tablicy i jej deklaracjach tak?

A to może na początek wyjaśnienie co to jest Tablica, jej budowa itd.

NO chyba że pozostali wszystko wiedzą, programowanie mają w jednym palcu, to wiedzą co się z czym je. To dla takich przedszkolaków jak JA nie warto tego pisać tylko ciągnąć lekcje dalej.
A JA sobie w wolnej chwili będę kombinował co i jak.

Pozdrawiam


RE: Programowanie w języku C w środowisku AVR Studio4 - SP4EJT - 25-01-2012 21:09

Janek, nie ma problemu, spróbujemy podciągnąć twoje wiadomości na ten temat.
Żeby było mi łatwiej napisze kilka pytań a ty szczerze odpowiedz których zagadnień nie znasz:
1. bramka logiczna
2. stan logiczny
3. bit
4. bajt
5. binarny zapisz liczb
6. szesnastkowy zapis liczb
7. ciąg liczb - ze szkoły (matematyka)
8. ciąg znaków
9. zmienna typu char
10. zmienna typu int
11. czy umiesz sprawdzić do którego portu Atmegi masz podłączony wyświetlacz ?
12. czy wiesz jak numeruje się poszczególne wyprowadzenia portów i ile jest portów w Atmedze 32 (bo taką chyba masz )

Tyle pytań. Najlepiej sformułuj odpowiedź 1. wiem 2. nie wiem 3. wiem .... itd ...


RE: Programowanie w języku C w środowisku AVR Studio4 - SQ9JXB - 25-01-2012 21:47

Tu nie chodzi o podciągnięcie MOICH wiadomości tylko o informacje pomocnicze prawda?
Bo jeżeli mam szukać informacji samemu to nie ma sensu sie uczyc w Moim przypadku
Ale z materiałów wnioskuję że trzeba być informatykiem aby to przerabiać.

Pytania 3; 4; 5; 6 - nie stanowią problemu.

Pozostałe niestety tak. Ale mną sie nie przejmuj.