Jump to content
Sign in to follow this  
dan_e

PRO si CONTRA Arduino ?

Recommended Posts

Posted (edited)

Ma intreba cineva acum vreo 2 saptamani in urma daca ar fi bine sa invete programare MCU-uri Atmel AVR folosind platforma Arduino sau este mai bine direct ? Eu nu folosesc Arduino, am incercat pe vremuri ceva dar nu pot sa-i dau un raspuns concret in ambele privinte si din cauza asta cer tuturor ajutor aici.

Deci, Arduino e ceva cum au sarbii de la Mikroelectronica (mikroe.com) sau e cu totul altceva ? Si care sunt avantajele si dezavantajele unei programarii obisnuite cu Atmel Studio si una cu Arduino. Stiu ca Arduino are si un bootloader dar cat de important si util este un bootloader? Asadar, cum priviti voi aceste medii de dezvoltare aplicatii cu AVR-uri ? Si ce ii recomandati unui incepator, cu ce sa inceapa ?

Edited by dan_e

Share this post


Link to post
Share on other sites
Posted (edited)

Totul depinde de ce ti-ai propus pe termen lung.

Daca nu ti-ai propus pe termen lung sa devii programator (adica sa faci cariera) atunci Arduino e bun - simplifica (adica ascunde) o gramada de detalii, ai multe exemple la indemana (superficiale si ele ce-i drept) si poti obtine repede rezultate (sub optimale sau mediocre). Arduino a fost creat pentru a preda mai usor studentilor ceva programare in timpul redus avut la dispozitie de profesori in universitati.

Din pacate ascunzand multe detalii (cu rolul de a simplifica) au ascuns si detalii importante fara de care nu poti devenii programator adevarat. IDE-ul l-au simplificat atat de mult ca devenit un fel de editor de text prost, iar partea de adaugare a unei biblioteci si vizibilitatea bibliotecilor a fost praf ani la rand (acum e mai buna)

Printre lucrurile bune a fost bootloder-ul care a eliminat necesitatea unui cablu de programare si a simplificat enorm procesul de scriere in flash. (booloader-ul l-a scris atmel si era folosit de cel putin 5 ani inainte de Arduino pe cam toate placile de dezvoltare de la atmel STK500 fiind cea mai cunoscuta) - din pacate nu ai nici o facilitate de debug tocmai din cauza lipsei cablului de programare, un compromis din nou, pentru ca nu exista programare fara debug.

In concluzie Arduino iti va oferii un drum foarte scurt de la nimic la primul program care face un led sa se stinga/aprinda si iti va da iluzia ca esti foarte destept dar in realitate nu ai invatat mare lucru.

Daca un candidat la un job serios de embedded software scrie pe CV ca stie sa programeze Arduino s-a descalificat singur.

 

Atmel studio - ani la rand a fost o varza, acum e ceva mai bun da e genul de IDE care e prea incarcat cu tot felul de chestii specifice (la fel ca Mikroe si IDE-ul pentru PIC) care inseamna timp irosit ca le inveti. Avantajul fata de Arduino e ca ai facilitati de debug puternice si poti refolosii o parte din cunostiintele dobandite la alte IDE-uri pentru alte microcontrollere sau chiar la programare pentru PC.

Un sfat personal pentru cei ce vor sa invete programare cu adevarat este sa decupleze partea de programare de cea de MCU. Sa invete programare pe un PC tastand exemple dintr-o carte buna de programare folosind un editor de text simplu si un make file. (un make file este un script care e un fel de reteta de compilare) dupa ce a inteles mecanismul compilator/asamblor/linker numai atunci sa se apuce de invatat despre microcontrollere si IDE, altfel va fi pierdut in mesaje de eroare care vor fi criptice si nu va stii de la ce i se trage de la compilator de la IDE sau de la MCU.

Daca nu scrii de mana (tastand) programe nu vei invata programare. Tastand vei face greseli si te vei corecta pe parcurs si incet incet o sa faci toate greselile posibile si vei intelege ce se petrece. Daca copiezi exemple bune cu copy & paste ele se vor complila din prima si nu vei invata nimic.

RR

Edited by roadrunner
  • Like 1
  • Thanks 1

Share this post


Link to post
Share on other sites

Inainte de a aparea platforma Arduino, tineri dornici sa invete programarea microcontrolelor (Atmel AVR) se loveau de un zid aproape greu de depasit si anume invatarea comoda a unui limbaj de programare fara a stii prea multe. La inceput a fost limbajul ASM predat si pe vremea cand eram la facultate in anul 4 sau 5 la cursul de Microcontrolere. Mie si nu numai mie mi s-a parut destul de anevoios limbajul de asamblare, fata de C/C++ facut in 3 semestre care era "mult mai user friendly". O data cu trecerea anilor s-a constatat ca exista o scara lipsa care sa faca legatura mult mai comoda cu programarea MCU-urilor si intelegerea informatiilor din datasheet.

Pentru a starni acest interes pentru programare care trebuia sa fie intr-un limbaj mult mai comod si usor de inteles (ex. C/C++), s-a simtit nevoia inventarii platformei Arduino dedicata in special mediului educational. Era nevoie de asa ceva in educatie tocmai pentru a arata unui tanar student sau scolar ca se poate programa aprinderea sau stingerea unui LED mult mai simplu. Era de la sine inteles ca tinta era una mult mai mare si anume aceea de a obtine un prim succes in programare mult mai usor pentru ca astfel scolarul isi va dori din ce in ce mai mult sa invete sa studieze arhitectura microcontrolerului si programare in C/C++. Aceeasi scara a inceput sa fie ocupata si de alte platforme, cum ar fi cea dezvoltata de sarbii de la Mikroelektronika (mikroe.com). Mie cel putin mi s-a parut ca cei de la mikroe.com ofera ceva mult mai aproape de analiza si dezvoltarea unui software in mediul profesional. De fapt, ei ating oarecum ambele laturi si cea educationala si cea profesionala, pe cand platforma arduino a fost gandita numai pentru mediul educational unde mai putin conteaza aprinderea unui LED folosind 32kB flash cand lucru asta se poate face numai cu 1...2kB flash (e doar un exemplu).

Apoi un alt aspect important este biblioteca de librarii. Accesul la o biblioteca ne poate scurta timpul elaborarii unui program si cand actualmente timpul este foarte pretios si pretul unui MCU cu mult flash/EEPROM mai mult decat accesibil, poate mai putin ne intereseaza cat de optimizat facem programul. Dar ce facem cand - e doar un exemplu - avem o biblioteca PWM (cum este la MikroC for AVR) care este invatata sa foloseasca doar un pin din MCU cu proprietate de iesire PWM si noi avem un MCU care are doi asemenea pini. O solutie ar fi sa rescriem biblioteca. Simplu de spus dar nu este la indemana oricarui programator plus ca anumite platforme de dezvoltare software (cum este MikroC for AVR) nu ne lasa sa facem asta ci sa gandim noi o biblioteca speciala pentru asa ceva. Ajungem intr-un punct destul de nevralgic cand cu Atmel Sudio spre exemplu si fara prea mari cunostiinte de creeat biblioteci, putem programa simplu ambele canale PWM. O situatie asemenatoare am intalnit-o si la niste biblioteci de scriere EEPROM. Deci, programele educationale au propriile lor limitari. Asta e si motivul pentru care in ultimii ani m-am axat pe Atmel Studio.

Un atu Arduino ar fi bootloader-ul dar eu personal nu ma omor dupa asa ceva.

In ceea ce priveste unealta de programare Atmel AVR, cei de la mikroe.com au dezvoltat o unealta pe cinste = AVR Flash (foarte simplu de folosit) pentru ca macar in acest domeniu sa nu pierdem prea mult timp cu setarea fuse bittilor.

Ca o concluzie personala, Arduino este o platforma necesara tanarului scolar sau student si reprezinta un pas care poate sa-l faca sa mearga mai departe in acest domeniul de programare MCU dar nu reprezinta un tool de mentionat intr-un CV. Adica, daca ai ramas la Arduino, se subintelege ca ai invatat totul ca un hobby, dar daca doresti sa treci mai departe si chiar sa castigi bani frumosi din asa ceva, atunci este obligatoriu de invatat niste compilatoare mai performante. 

  • Like 1

Share this post


Link to post
Share on other sites
Posted (edited)

Se putea programa in C de la inceputurile AVR-urilor. (adica cu 10 ani inainte de Arduino)

Eu am trecut de la 8051 la AVR in 1998 (adica imediat ce au aparut) - tin minte ca le cumparam de la ATMEL Romania care avea reprezentanta la Bucuresti. - si existau doua compilatoare comerciale de C (costau intre 1000$ si 2000$) - IAR si KEIL.  si prin 1999 a aparut un compilator pe care mi-l puteam permite uVision (uVision a fost cumparat mai tarziu de Keil)

Pe partea de compilatoare de C free era GNU compiler si proiectul open source AVR Freaks pe care s-a construit Arduino. - probabil ca multi utilizatori de pe forum au porinit-o la drum cu MCU de la Arduino (din cauza ca-s tineri) si au impresia ca Arduino a inventat ceva nou. - a simplificat ceva existent pana la limita prostiei.

RR

"Apoi un alt aspect important este biblioteca de librarii" - cred ca e suficient sa le spui biblioteci sau daca preferi in engleza - libraries (care e exact acelasi lucru) - bibliotecile agnostice (care nu tin cont de CPU) de exemplu cele matematice ale limbajului C au fost scrise in anii '70 cand noi Romanii eram ocupati cu "Cantarea Romaniei" si cantam prin scoli "Noi in anul 2000 cand nu vom mai fii copii..." cu cravata de pionieri la gat.

Edited by roadrunner

Share this post


Link to post
Share on other sites

Multumesc tuturor pentru raspunsuri.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

Important Information

We use cookies and related technologies to improve your experience on this website to give you personalized content and ads, and to analyze the traffic and audience of your website. Before continuing to browse www.tehnium-azi.ro, please agree to: Terms of Use.