Aktyw Forum

Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.

Sprawdź punkty Zarejestruj się

Jak zacząć z C dla mikrokontrolerów AVR.

Awatar użytkownika
almatea
-
-
Posty: 240
Rejestracja: 12 gru 2003, o 17:02
Lokalizacja: Brzeszcze
Kontaktowanie:

Jak zacząć z C dla mikrokontrolerów AVR.

Postautor: almatea » 16 paź 2007, o 18:15

Witam.

Chciałem zacząć swoją przygodę z językiem C. W EP było już kilka kursów, dostępna jest dosyć dobra literatura.. Ale mam kilka pytań.

1. Czy WinAVR a GCC-GNU to to samo? Jeśli nie, to które wybrać?
2. Czy kompilatory C posiadają również typowego helpa? Np. takiego jaki jest w Bascomie?
3. Jakieś inne wskazówki, które nastawią na dobry tor.

Pozdrawiam.

Awatar użytkownika
pajaczek
Moderator
Moderator
Posty: 2650
Rejestracja: 24 sty 2005, o 00:39
Lokalizacja: Winny gród

Re: Jak zacząć z C dla mikrokontrolerów AVR.

Postautor: pajaczek » 16 paź 2007, o 19:41

Witam.

Chciałem zacząć swoją przygodę z językiem C. W EP było już kilka kursów, dostępna jest dosyć dobra literatura..
Sluszna decyzja ;)

1. Czy WinAVR a GCC-GNU to to samo? Jeśli nie, to które wybrać?
Nie jest to to samo... caly problem z bascomem polega na tym, ze jest to zarowno srodowisko programistyczne, jak i sam kompilator (a wlasciwie jezyk programowania).
Pozniej ktos chcac przejsc na inny jezyk, zaczyna sie gubic w tym co do czego. Wiec po kolei:
AVR-GCC - bo tak to raczej powinnismy nazwyac, jest kompilatorem jezyka C na uC AVR.
WinAVR nazwijmy raczej IDE - czyli srodowiskiem programistycznym, w ktorym jako kompilator mozemy ustawic wlasnie avr-gcc.
Odpowiedz na takie pytanie jest wie: WinAVR z Avr-GCC ;) Mozna zastosowac jeszcze AVRSide jako alternatywne IDE. (albo AVRStudio i takze z AVR-GCC).
2. Czy kompilatory C posiadają również typowego helpa? Np. takiego jaki jest w Bascomie?

Typowy help do C oczywiscie istnieje... czy bede wredny jesli powiem ze nazywa sie "internet" ?? ;)
3. Jakieś inne wskazówki, które nastawią na dobry tor.
Zastanow sie co chcesz zrobic, na jakim konkretnie uC, pozniej sciagnij pdf do niego i przejrzyj funkcje. W sporej czesci zamieszczone sa przyklady kodu zarowno w C, jak i ASM. To naprawde kopalnia wiedzy.
Pozatym polecam jakas ksiazke/kurs z podstawami C, oczywiscie o ile nie znasz juz tych podstaw. Pozatym z ew. pytaniami... wiesz gdzie jest forum ;)

Awatar użytkownika
almatea
-
-
Posty: 240
Rejestracja: 12 gru 2003, o 17:02
Lokalizacja: Brzeszcze
Kontaktowanie:

Postautor: almatea » 17 paź 2007, o 08:53

No coż. Nie zamierzam rozpoczynać kolejnej debaty na temat wyższości języków nad sobą.

Pytanie do kolegi Pajączka - szukam jednego konkretnego powodu aby przeskoczyć lub przynajmniej spróbować C, który byłby w pewnym sensie motorem napędowym.

Wiem i szczerze to przyznam, że na dzień dobry nasuwa się jedno stwierdzenie:
wszelkie aplikacje dotyczące różnej maści scalaków zawierają w sobie przykłady obsługi właśnie spod C i asm. Bascoma pewnie długo, albo i nigdy tam nie uświadczymy.

Drugie pytanie - czy mi się wydaje, czy C jest choler...ie nie przejrzysty? Być może to tylko złudznie.

Trzecie pytanie - zwykły (albo i nie wyświetlacz LCD 16x2). Przykładowy program w C to dobre kilka stron. W Bascomie to dobre kilka linijek. To może błędne patrzenie, ale próbuje się tutaj doszukać jakichś pozytywów na konto C :622:

Czwarte pytanie - oto fragmencik obsługi LCD na bazie książki Jarka Dolińskiego - "Mikrokontrolery AVR w praktyce"

PORTB=(PORTB&0x0f)|0x20 //wyślij 2- do LCD
asm("nop"); //wymagane wydłużenie impulsu
asm("nop");
asm("nop");
cbi(PORTB,lcd_e);

I często natrafiam na komunikaty typu: wymagane wydłużenie impulsu, czekamy na to, czekamy na tamto.. Pytanie. Skąd wiadomo, że akurat w tym przypadku jest wymagane wydłużenie impulsu etc.,

Pozdrawiam

Awatar użytkownika
Lucas286
-
-
Posty: 86
Rejestracja: 13 paź 2004, o 13:12
Lokalizacja: Pomorze

Postautor: Lucas286 » 17 paź 2007, o 11:16

Witam

Pozwolę sobie wtrącić swoją opinię. Jeśli chcesz zacząć programować w C i mieć bibioteki do obsługi popularnych układów peryferyjnych np. LCD 2x16 to polecam kompilator CodeVisionAVR. Co prawda program komercyjny ale bardzo tani (150EUR). Proponuję wybróbować dostępna jest wersja demo do 2kB kodu. Ponadto to tego kompilatora producent dostarcza doskonałą dokumentację gdzie wszystko jest łopatalogicznie wyłożone. Sam próbowałem na początku z GCC ale jak poznałem CodeVisionAVR nigdy nie wrócę do GCC. Link do programu i dokumentacji www.hpinfotech.ro

Pozdrawiam

tomek_j
-
-
Posty: 264
Rejestracja: 14 sty 2004, o 09:06

Postautor: tomek_j » 17 paź 2007, o 11:45

No coż. Nie zamierzam rozpoczynać kolejnej debaty na temat wyższości języków nad sobą.
........
Drugie pytanie - czy mi się wydaje, czy C jest choler...ie nie przejrzysty? Być może to tylko złudznie.

Trzecie pytanie - zwykły (albo i nie wyświetlacz LCD 16x2). Przykładowy program w C to dobre kilka stron. W Bascomie to dobre kilka linijek. To może błędne patrzenie, ale próbuje się tutaj doszukać jakichś pozytywów na konto C :622:
........
popatrz na to inaczej. Nauczyłeś sie Bascoma i nie bardzo ci sie chce czegos innego, ale moze jednak wypada.... . To tak "chciałabym a boje sie". Jezlei chcesz sie nauczyc C to sie naucz i nie szukaj dziury w całym.
C jest standardem i nic na to nie poradzisz. Jezyk jest prosty do nauczenia sie na poziomie podstawowym ( mało słów kluczowych, proste sterownie). Mimo tej prostoty jest zadziwijaco elastyczny o czym wiedza bardziej zaawansowani programisci.

radzio
Moderator
Moderator
Posty: 965
Rejestracja: 13 maja 2003, o 10:33
Lokalizacja: Sosnowiec
Kontaktowanie:

Postautor: radzio » 17 paź 2007, o 12:15

Drugie pytanie - czy mi się wydaje, czy C jest choler...ie nie przejrzysty? Być może to tylko złudznie.
Wg mnie C jest bardzo przejrzysty, ale to pewnie kwestia gustu.
Trzecie pytanie - zwykły (albo i nie wyświetlacz LCD 16x2). Przykładowy program w C to dobre kilka stron. W Bascomie to dobre kilka linijek.
Gwarantuję Ci, że jeśli zechcesz napisać "przykładowy program" dla LCD 2*16 w Bascomie (ale bez wykorzystania dołączonych do niego asemblerowych bibliotek, tylko stworzysz je sam w Bascomie) to też Ci wyjdzie kilka stron (pewnie wiecej niż w C) kodu. Należy rozróznić język od bibliotek. Jedyną 'zaletą' Bascoma są gotowe biblioteki procedur (najczęsciej pisane w asm), które rozleniwiają użytkownika. A potem wystarczy, że do jakiegoś elementu systemu Bascom nie ma bibliotek i już zaczyna się płacz i lament (a czasami dopisanie brakujących funkcji to kwestia kilku kwadransów, tyle że użytkownik przyzwyczajony do dostawania wszytkiego podanego na tacy). Większość kompilatorów C jest dostarczana "goła" bez gotowych bibliotek (bo biorąc pod ilość peryferiów stworzenie kompleksowej biblioteki jest niemożliwe, natomiast ograniczenie się do najpopularniejszych peryferiów tak czy siak będzie wymagało ingerencji użytkownika w przypadku jakiegokolwiek odejścia od standardów).
Są też kompilatory z przygotowanymi bibliotekami (np wspomniany już CodeVisionAVR) ale ich stosowanie jest tak samo mało edukujące jak Bascoma.

To może błędne patrzenie, ale próbuje się tutaj doszukać jakichś pozytywów na konto C :622:
Same pozytywy, a największy z nich to ten, że kompilatory C są dostępne praktycznie dla każdego mikrokontrolera. Wyobraź sobie sytuację, w której znasz tylko Bascoma dla AVR i nagle musisz wykorzystać inny procesor, na którego Bascoma nie ma. I co? Płacz i zgrzytanie zębami. A umiejętnie posługując się C przeniesienie programu czy bibliotek na inny procesor nie sprawi większego problemu. Tym bardziej, że język C jest ustandaryzowany i każdy kompilator praktycznie bazuje na tym samym języku. Natomiast Bascom jest tworem jednej firmy i nawet przesiadając się na inny kompilator Basica będzie poważny problem z przeniesieniem posiadanego problemu, czy przeniesieniem doswiadczeń i posiadanych bibliotek funkcji.

Awatar użytkownika
pajaczek
Moderator
Moderator
Posty: 2650
Rejestracja: 24 sty 2005, o 00:39
Lokalizacja: Winny gród

Postautor: pajaczek » 17 paź 2007, o 13:00

Co moge jeszcze dodac do powyzszych wypowiedzi, to komentarz do tego.
I często natrafiam na komunikaty typu: wymagane wydłużenie impulsu, czekamy na to, czekamy na tamto.. Pytanie. Skąd wiadomo, że akurat w tym przypadku jest wymagane wydłużenie impulsu etc.,
Oczywiscie ze specyfikacji... w tym wypadku wyswietlacza LCD, w innych: danej matistrali/pamieci/czego tam jeszcze. Widocznie procek jest taktowany na tyle szybko, ze utrzymanie stanu wyjscia lcd_e tylko przez 1 takt bylo by niewystarczajace dla wyswietlacza. Konieczne jest przedluzenie o 3 takty (wstawka ASM).

Awatar użytkownika
almatea
-
-
Posty: 240
Rejestracja: 12 gru 2003, o 17:02
Lokalizacja: Brzeszcze
Kontaktowanie:

Postautor: almatea » 17 paź 2007, o 17:46

No cóż, podobno nie często to robię, ale szczerze napiszę - wszyscy mają rację.
Startuję.

Pokserowałem już kurs C z EdW tak, aby mieć go pod ręką w całości i nie wertować czasopism.
Do tego wspomniana książka Pana Jarosława Dolińskiego.
Oczywiście nie mogę zapomnieć o sieci, bo to jak napisał Pajączek - rzeczywiście kopalnia wiedzy.

Czy ktoś może jeszcze coś polecić?
Przeglądne swoją drogą stronę Kamami bo wydaje mi się, że było tam coś jeszcze poświęconego C dla AVR, tyle że nie lubię kupować w ciemno, bo jak wiadomo - książka książce nie równa.
Wobec tego kolejny raz zdaję się na dobrą i fachową radę.

Pozdrawiam

Awatar użytkownika
gogo4
-
-
Posty: 24
Rejestracja: 3 kwie 2003, o 20:33
Kontaktowanie:

Postautor: gogo4 » 9 gru 2007, o 00:23

No coż. Nie zamierzam rozpoczynać kolejnej debaty na temat wyższości języków nad sobą.

Pytanie do kolegi Pajączka - szukam jednego konkretnego powodu aby przeskoczyć lub przynajmniej spróbować C, który byłby w pewnym sensie motorem napędowym.

Wiem i szczerze to przyznam, że na dzień dobry nasuwa się jedno stwierdzenie:
wszelkie aplikacje dotyczące różnej maści scalaków zawierają w sobie przykłady obsługi właśnie spod C i asm. Bascoma pewnie długo, albo i nigdy tam nie uświadczymy.

Drugie pytanie - czy mi się wydaje, czy C jest choler...ie nie przejrzysty? Być może to tylko złudznie.

Trzecie pytanie - zwykły (albo i nie wyświetlacz LCD 16x2). Przykładowy program w C to dobre kilka stron. W Bascomie to dobre kilka linijek. To może błędne patrzenie, ale próbuje się tutaj doszukać jakichś pozytywów na konto C :622:

Czwarte pytanie - oto fragmencik obsługi LCD na bazie książki Jarka Dolińskiego - "Mikrokontrolery AVR w praktyce"

PORTB=(PORTB&0x0f)|0x20 //wyślij 2- do LCD
asm("nop"); //wymagane wydłużenie impulsu
asm("nop");
asm("nop");
cbi(PORTB,lcd_e);

I często natrafiam na komunikaty typu: wymagane wydłużenie impulsu, czekamy na to, czekamy na tamto.. Pytanie. Skąd wiadomo, że akurat w tym przypadku jest wymagane wydłużenie impulsu etc.,

Pozdrawiam
Jeżeli chcesz to trwaj sobie w tym przekonaniu o wyższosci bascoma. Powiem tylko, że baskom to zabawka dla początkujących stworzona po to aby nie męcząc się specjalnie (nie zdobywając wiedzym, poznawając szczegółów budowy i działania mikrokontrolerów itp) można było programowac procki. Jeżeli natomiast myślisz, że znając bascom umiesz programować procesory to jesteś w błędzie bo tak naprawdę gu**no potrafisz a w dodatku cudowny baskom uczy ciebie nawyku nieróbstwa, niewiedzy i nieznajomości.

Pozdr.

Awatar użytkownika
almatea
-
-
Posty: 240
Rejestracja: 12 gru 2003, o 17:02
Lokalizacja: Brzeszcze
Kontaktowanie:

Postautor: almatea » 1 lut 2008, o 16:11

Szanowny kolego.

Gdybyś wszedł na stronę http://www.mikroe.com/, to z góry powiem Ci, że znajdziesz tam m.in. .... MikroBasic i MikroPascal czyli kolejne narzędzia do programowania mikrokontrolerów obok C. Uświadomię Cię, że różnice między nimi bywają zwyczajowo w składni.. We wszystkich trzech językach znajdziesz podstawowe instrukcje Select Case, If Then.. itd.. I na bazie tego mogę Ci napisać, że jeśli myślisz, że potrafisz programować mikrokontrolery to napiszę Ci, że gó...o potrafisz twierdząc, że potrafisz je zaprogramować w C. Nie widzę różnicy w tym, czy If then napiszesz w C, Basicu i Pascalu, skoro i tak wszystko kompilowane jest do poziomu asemblera a tym ostatnim możesz wspomóc się w każdym z języków. Dlatego ja właśnie od jakiegoś czasu zgłębiam tajniki asemblera którym mogę wspomagać się w każdym z opisanych języków wysokiego poziomu wtedy, kiedy będzie to naprawdę potrzebne. Twoim jedynym argumentem, że C jest królem wśród języków przemawia chyba tylko fakt, że ma darmowy kompilator, co dla mnie nie jest najistotniejsze.

Pozdrawiam

Wróć do „AVR/AVR32”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 16 gości