Skocz do zawartości

Wybór języka po raz kolejny


amon

Pomocna odpowiedź

konfiguracja środowiska do C

Przecież w najprostszym przypadku jest to kwestia zainstalowania WinAVR i AVRStudio, kliknięcia new project i zaznaczenia, że chcemy pisać projekt w C - ot cała filozofia.

Link do komentarza
Share on other sites

A ja jestem zdania, że kto nie popróbował pracować w obu językach, ten nie powinien ich porównywać. Przyznaję, że gdybym nie miał styczności z C na studiach + sporadyczne programowanie w php (jak ktoś już wspomniał - składnia podobna) to przesiadka z Bascoma byłaby dużo bardziej bolesna (to apropos złych "nawyków" 😉). Dzisiaj Bascoma używam do prostych projektów "na szybko", natomiast kiedy muszę dokładniej wiedzieć co się w uC dzieje - sięgam po C. Moim skromnym zdaniem warto uczyć się obu języków bo oba się przydają, a nie tylko poświęcać całą energię na jeden wybrany. Unikniemy takich sytuacji, że ugrzęźniemy w AVRach i jednocześnie nie będziemy tracić czasu przy prostych programach.

Link do komentarza
Share on other sites

Moim zdaniem należy zacząć od... Pascala na kompa. I koniecznie Pascala a nie Delphi. Może być ew. inny język ze środowiskiem konsolowym, ale taki, który idzie "czytać", czyli komendy są słowami w j.angielskim. Jeśli juz się przyswoi w takim języku pętle, iteracje, instrukcje warunkowe i zmienne, można się przerzucić na inny język. Będzie dużo prościej, poza tym będziemy już umieli czytać kod źródłowy napisany w dowolnym tego typu języku.

@Sabre: jaka konfiguracja? Poza tym napisałem artykuł o tym. Pomyślmy:

-instalujesz Winavr, ciągle klikasz "dalej"

-to samo AVRstudio

-włączasz avrstudio, wpisujesz nazwę projektu, wybierasz język, ew. wybierasz mikrokontroler.

Koniec, już można pisać. A jeśli ktoś nie umie kliknąć "dalej" to niech lepiej w ogóle nie zabiera się ani za programowanie ani tym bardziej za robotykę. Jeśli chodzi o samo programowanie, to też to dokładnie opisałem.

C ma te ogromne zalety, że kod można przenosić, nawet na PC. Poza tym w C pisze się programy bardziej zaawansowane, symulacje, obsługa wizji (OpenCv) i grafiki na komputerze, posiada ogromną bazę wiedzy - odpowiedzi na chyba wszystkie problemy można znaleźć w necie. Poza tym w C są pisane biblioteki obsługi różnych urządzeń. I wreszcie: koniec końców i tak trzeba się przerzucić na C, albo pozostać przy AVRach i nie programować nic na PC. Już assembler jest bardziej przydatny, chociaż również jest z tego co wiem trudno przenośny. Nauka innego języka wysokiego poziomu do jakiegoś sensownego poziomu jest moim zdaniem stratą czasu.

Link do komentarza
Share on other sites

A to ja pytanko zadam:

Co jeśli ktoś na chwilę obecną nie potrzebuje używać procesorów ARM? Przecież jest masa AVR'ów z duuuużą ilością pamięci, a do tego mamy którąś atmegę z usb.

Nie upieram się na siłę przy bascom'ie, ale jak napisał KD93, jest prosty, trudno popełnić typowy błąd.

Link do komentarza
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

"na chwilę obecną" to można używać czego dusza zabraknie, ale C jest bardziej przyszłościowy. Może ujmę to tak: przed liceum możecie używać Bascoma aby poznać co i jak. Ale liceum i studia: szkoda czasu, za chwile i tak będziecie musieli się nauczyć C i będziecie żałować straconego czasu. A kod w C potrafi być bardzo czytelny, od tego jest #define. Zapraszam przejrzeć kod mojego minisumo - można go niemal czytać, a przeniesienie na dowolny inny mikrokontroler AVR to chwila moment, a na nie-AVR kapkę dłuższa chwila, tyle aby włączyć jakiś PWM.

Poza wymienionymi juz C-podobnymi podam jeszcze: Matlab/Scilab itd. - poza kilkoma wnerwiajacymi różnicami, są niemal identyczne.

Link do komentarza
Share on other sites

Dobra, to powiedzcie mi jeszcze ile kodu musiałbym pisać żeby obsłużyć w C 12 serw na AVR? W Bascomie zajęło mi to minutę. Nie widzę nic złego w nauce Bascoma jako pierwszy język.

Tak, jasne, straciłem czas, przecież mogłem dopiero teraz męczyć się z pierwszymi programami dla line followerów w C. Nie mówię że się nigdy nie nauczę C, tak, chciałbym się nauczyć, ale jak pewnie wszystkim - brakuje mi czasu, a ten co mam wole poświęcić na pracę nad robotem a nie naukę nowego języka, którego możliwości i tak aktualnie nie wykorzystam, bo to samo potrafię napisać w tym języku który znam.

Link do komentarza
Share on other sites

Moim zdaniem należy zacząć od... Pascala na kompa. I koniecznie Pascala a nie Delphi.
Co prawda całkowicie odchodzimy od głównego tematu, ale zdecydowanie się z Tobą nie zgodzę. Pascal jest językiem bardzo topornym, uczy złych nawyków i wręcz wpaja błędną wiedzę (wspomniany klasyczny przykład funkcji chr i ord, których jedynym celem jest zrobienie z programisty debila).
Link do komentarza
Share on other sites

@KD: zapytaj lepiej ile czasu być potrzebował na napisanie kodu do obsługi 18 serw albo i większej ilości. Poza tym ja kteraz nie masz czasu to poczekaj aż zaczniesz studiować.

edit:

@Marooned: chodzi mi o podstawy podstaw. Jeśli ktoś na tak czytelnym języku jak Pascal sobie nei poradziu, to sobie nie poradzi w ogóle. Te chr i ord to odpowiedni itoa i atoi? Moim zdaniem używanie printf w C też jest głupie, jedyne zastosowanie to czasem przy obsłudze plików tekstowych - zapisie i odczycie.

Link do komentarza
Share on other sites

jamtex, znajdź mi człowieka, który bez jakiegokolwiek doświadczenia w programowaniu, oprogramuje w C linefollowera powiedzmy w tydzień. W Bascomie AVR zrobi to w kilka dni.

Rozumiem, że tydzień to znacznie dłużej niż kilka dni 🙂

Sabre - opanowałeś BASCOM'a - świetnie, moje gratulacje, ale nie reklamuj go jako "Oczywiście BASCOM" - to straszne uproszczenie i zawężenie.

W C zrobi to w tyle samo czasu co w BASCOM'ie. Oczywiście mówmy o napisaniu własnego kawałka programu, a nie Google: Ctrl+C -> Ctrl+V

Natomiast działanie na zmiennych ich przypisywanie i "zabawa" w przypisywanie zmiennych - nie jest nauką programowania. Jest właśnie powielaniem złych nawyków.

Ja zaczynałem od pisania programików jeszcze na Atari 65 i o różnego typu BASIC'ach mam jakieś 🙂 pojęcie. Kiedyś dla czystej "zabawy" napisałem prezentację w VBA pod Excela - łącznie z animacjami - jeśli ktoś ma ochotę mogę udostępnić 🙂.

Jednak nie polecam VBA do produkcji poważnych czy też nie poważnych reklam . Należy się rozwijać - choćby poprzez naukę standardów.

Gdyby jedyną determinantą nauki języka obcego miał być czas - proponuję naukę języka czeskiego, już w kilka dni można się dogadać, a w języku angielskim trzeba minimum 2 tygodnie by coś zrozumieć.

Link do komentarza
Share on other sites

Zapraszam przejrzeć kod mojego minisumo - można go niemal czytać,

Wierz mi że przejrzałem ten kod i szczerze? Nie kumam ni w ząb, no może coś tam wiem co jest napisane, ale za Boga nie wiem co do czego.

(...)a ile (...) zajmie napisanie kodu na 18 serw?

Nie było do mnie ale może ja odpowiem. W praktyce bascom ogranicza możliwość obsługi do 16 serwomechanizmów, ale...

No właśnie od czego mamy multiplexowanie? Skoro można multiplexować diody to czemu nie można serw? Multiplexował już ktoś serwa? Chyba mogło by się udać? Szczerze? Jeszcze nie próbowałem, ale chyba czas spróbować.

Link do komentarza
Share on other sites

Wierz mi że przejrzałem ten kod i szczerze? Nie kumam ni w ząb, no może coś tam wiem co jest napisane, ale za Boga nie wiem co do czego.

Kod OldSkulla to istna masakra. Zero komentarzy i wszechobecny chaos. To był akurat zły przykład. Ja ostatnio poświęciłem kilka minut, żeby pomóc koledze w napisaniu programu do jego zegarka binarnego (bez multipleksacji). Tak wygląda ten kod (w zasadzie 1sza wersja kodu):

#include <avr/io.h>			// Biblioteka we/wy
#include <avr/interrupt.h>		// Biblioteka związana z obsługą przerwań
#include <util/delay.h>		// Biblioteka zawierajaca funkcją opóźniające

#define PORT_Sekundy		PORTC
#define PORT_Minuty			PORTD
#define PORT_Godziny		PORTB

volatile uint8_t Sekundy = 0;		// Zmienna przechowująca sekundy
volatile uint8_t Minuty = 0;			// Zmienna przechowująca minuty
volatile uint8_t Godziny = 0;		// Zmienna przechowująca godziny

// Przerwanie przy przepełnieniu timer'a 2
// Przerwanie generowane jest co sekunde
ISR(TIMER2_OVF_vect){

Sekundy++;
if(Sekundy == 60){
	Minuty++;
	Sekundy = 0;
}
if(Minuty == 60){
	Godziny++;
	Minuty = 0;
}
if(Godziny == 24) Godziny = 0;
}

int main(){

//Ustawienie timer'a 1
ASSR |= (1<<AS2);				// Jako źródło wybrany oscylator
TCCR2= (1<<CS20)| (1<<CS22);	// Ustawienie prescalera
TIMSK = (1<<TOIE2);			// Włączenie przerwania dla timer'a

//Ustawienie portów
DDRB=0x1F;
DDRC=0x3F;
DDRD=0xBF;

sei();							// Globalne włączenie przerwań

while(1){
	PORT_Sekundy = Sekundy;		// Wyświetlanie sekund
	PORT_Minuty = Minuty + 128;		// Wyświetlanie minut
	PORT_Godziny = Godziny;			// Wyświetlanie godzin
}
}

Niestety "taby", gdy się je wkleja na forum dziwnie się wyświetlają i komentarze się rozjechały.

Niestety wiele osób na forum programuje na hardkora. Działa to lecimy dalej... zero ładu, a później kod jest zrozumiały tylko dla autora.

Link do komentarza
Share on other sites

Nie jarzę tego za chol...ę. Domyślam się tylko że ++ to zwiększ, a == to równa się. Choć pewnie w przypadku == to nie zgadłem. Nie wiem gdzie pętla główna, gdzie jakieś etykiety?

Wiem, zaraz mnie ktoś odeśle do kursu który mamy na stronie, ale mówię co kojarzę w tej chwili, czyli prawie nic. W bascom tego nie ma, wszystko jest jasne, a w dodatku w bascomie nie trzeba kończyć linii nie wiadomo jakimi klamrami czy jeszcze innymi nawiasami.

Jak napisał KD93, nie ma czasu na naukę innego języka, lepiej ten czas poświęcić na szlifowanie tego co już się zna.

Link do komentarza
Share on other sites

Ale po co tam komentarze? Wszystkie wpisane nazwy z definicji robią to co mają w nazwie.

Przykłąd:

"if (tsopL && (tsopP == 0) && !LINIA)

{

Lprzod;

Pprzod;

pwm75L

pwm15P

}"

Jeżeli widzi po lewej z TSOPa, ale nie po prawej i nie widzi linii, to jedzie do przodu, ale lewa strona na 75%, a prawa na 15%. kod TIMONka jest napisany w podobnym guście - ale siłą rzeczy jako krótszy jest łatwiejszy do ogarnięcia. Oczywiście jeśli ktoś nie wie do czego służy #define, nawiasy {}, czy operatory | || & && ! ^ itd, ++ i np. sei(), to tego kodu też nie zrozumie.

edit:

wykrakałem, do tego dochodzi nieznajomość angielskiego nawet w podstawowym stopniu. W Bascomie właśnie nie jest jasne. Brak kończenia linii to wada - przy kilku wcięciach czasami zaczyna brakować miejsca i trzeba "wiersze" ciąć na kilka wierszy, znak kończący linie jest wtedy bardzo ważny. A używanie słów do określania pętli jest problematyczne przy wielokrotnym zagnieżdżaniu. W C całość ograniczają nawiasy klamrowe, które bez czytania kodu, na pierwszy rzut oka widać, bo nie są literami.

Link do komentarza
Share on other sites

Nie rozumiem jednego, po co ta kłótnia? Nikt nikogo do niczego nie zmusza, ja mam Bascoma, inni mają C, w czym problem? Niech każdy programuje w tym czym chce, mamy wolny kraj. Ten temat to rozprawka o wyższości świąt wielkanocnych nad bożym narodzeniem, albo odwrotnie. Nie chodzi o to kto w czym pisze program, ważne jakie są tego efekty.

Link do komentarza
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!

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.