Author Topic: AVR vs PIC  (Read 21228 times)

Trolko

  • Guest
AVR vs PIC
« Opened on 29.01.2013, Tuesday, 01:01:13 »
Па и како на секој форум, мислам дека е потребна една ваква *безвезална* тема и тука :)

Што мислите, кој микроконтролер е подобар и зошто ? Изјаснете се во поглед на следниве полиња :

- Архитектура
- Програмирање
- Tool-chain
- Подршка
- Заедница

Да почнам. Јас сум AVR fanboy. Работам и со PIC микроконтролери и AVR нонстоп, но морам да кажам дека AVR се супериорни поради многу причини, еве детално зошто:

Архитектура
AVR архитектурата е направена многу покасно од PIC архитектурата. Се издвојува од сите други микроконтролери поради нејзината брзина и флексибилност. AVR е Харвард архитектура со одвоени мемории за податоци и податочна меморија, базинара на RISC инструкциски сет. Сѐ на сѐ има 32 регистри за генерална употреба, за разлика од PIC-оовите кои повеќет имаат еден (WTF?!) регистер за генерална употреба и сѐ треба да помине низ него (10F, 12F, 16F и некои од 18F сериите). За разлика од PIC-овите, AVR има една „банка“ на податочна меморија, која што подржува директно и индиректно адресирање.

Понатаму да продолжам, поради level-one pipeling што го поседува AVR архитектурата, се извршуваат 3 операции - execude, fetch и decode во еден clock циклус, што не е истото кај PIC-овите. Интерниот clock _не_ се дели со 4 како што се прави кај PIC-от поради компатибилност и стабилност на самото јадро и една од најдобрите карактеристики според мене лично - поголемиот дел од AVR инструкциите се едно-тактни, што ѝ овозможува на AVR архитектурата да постигне 1 MIPS per 1 MHz.

Програмирање

Нативно како и секој микропроцесор/микроконтролер AVR има сопствен асемблер, кој користи многу интуитивни мнемоници и прилично брзо се учи. Една од најдобрите карактеристики - поради постоење на STACK програмска меморија, програмскиот јазик C е нативно подржан од AVR архитектурата.

Tool-chain

Поради тоа што ја следам филозофијата на GNU и Ричард Сталман, незамисливо е за мене да користам не-слободен софтвер. За жал во PIC-светот скоро сѐ се базира на користење на не-слободен софтвер. За разлика од PIC-от, каде што треба да платам илјадници долари за компајлер + линкер + дебагер + библиотеки + подршка, тоа го добивам слободно во AVR светот. Најпознатиот компајлер на светот - gcc е портнат за AVR архитектурата - avr-gcc. Ова исто важи и за libc т.е. avr-libc што ми овозможува да ги користам истите функции што ги користам при програмирање на персонален компјутер.

Во ова поле би навел дека има тон дебагери кои што се слободни (gnu-dbg е најпознатиот) и се портнати за AVR архитектурата и работат нативно на неа. За софтвер за програмирање на самите микроконтролери постои avrdude кој е _екстремно_ флексибилен и ги подржува сите серии на AVR микроконтролери. Доколку не подржува некој модел, многу лесно се додава самиот модел, затоа што avrdude е софтвер кој што може да се исконгфигурира за потребите на корисникот. За жал ова не постои во PIC светот т.е. мора да се надевам дека софтверот од некоја компанија ќе го направи она што сакам јас, а не она што сака софтверот да го прави.

Подршка

Овде се однесувам на самата документација која што е достапна со самите микроконтролери. Искрено мора да признаам дека datasheet-овите за PIC-овите ми се хаотични и неразбирливи и при работа најчесто се фаќам како неколкупати чистам иста документација за PIC затоа што не сум можел да ја разберам одеднаш или е напишана нечитливо-двомисно, а овој проблем кај AVR не постои. Барем не кај мене.

Заедница

Ух, незнам од каде да почнам :) AVR сѐ најпопуларните микроконтролери во хоби-полето. Зошто ? Поради огромните предности што ги напишав горе. Arduino - најпознатата развојна платформа се базира на AtMega328p микроконтролер. Сите hackerspace проекти што се изникнати во последниве неколку години - 3D принтери достапни за секој, hexacopters, tv-b-gone и многу други се базираат на AVR микроконтролери (ѕирнете на hackaday / ladyada / make / instructables). Самиот пристап што го има Atmel кон заедницата е многу добар. Самите Atmel имаат финансирано развој на слободните алатки како и еден од најпознатиот форум за AVR - AVR Freaks.

Сума сумариум - доколку ми е потребно да завршам некоја *глупава* работа, би искористил PIC, но доколку сакам нешто елегантно да направам и да се чуствувам горд и задоволен од она што сум го изработил, секогаш ќе се одлучам на AVR. Затоа што се најдобри. EVER.


Ме интересира ваше мислење :)

Поздрав.

ПС: Ако некој има спротивставено мислење на било кое мислење, би замолил да ме побие со факти, баш сум расположен за ваква дискусија :)

Offline GigaWatt

  • Администратор
  • Топ Експерт
  • *****
  • Posts: 12894
  • Gender: Male
  • Не фалширам
Одг: AVR vs PIC
« Reply #1 on 29.01.2013, Tuesday, 03:24:52 (Edited 29.01.2013, Tuesday, 03:26:40) »
Интересна тема за дискусија ;). Ќе ја pin-увам ;).

Се согласувам со се што пиша ;). Одлично си ја сработил задачата ;). Но, има еден проблем. Ова се вака изгледа многу убаво на хратија, како што викаат ;D. Не дека не си во право, но има реален проблем кој, барем кај нас во Македонија, тешко се надминува :S. Кај нас не носат Atmel микроконтролери, а ако можеш да начекаш еден од некаде да купиш, најверојатно ќе има некоја баснословна цена (800, 900, 1000 денари). Е сега, некој ќе рече, па можеш и online да си купиш. Ако треаме по сите прописи (without cheating ;D), знаеме дека во Македонија не може да отвориме paypal accounts. И сега, што правиме? Кога повеќето online трансакции се одвиваат преку paypal, ние не можеме да имаме paypal и место да можеме да купиме нешто прилично евтино online, ние мора да се зезаме, да молиме да ни прифатат credit card payment или уплата на трансакциска сметка и да се надеваме дека продавачот ќе излезе фер и ќе ни го прати тоа што сме го барале, под услов да се сложи на директна трансакција или credit card payment.

За разлика од оваа ситуација, PIC-овите ги има насекаде во Македонија и може за прилично мала сума на пари да се купат, често помала и од онаа за која може да се начекаат online ;). На пример, PIC16F84A може да се купи во Loging за 60 денари (или некоја сума блиска на оваа, не ме земајте за збор). Кој знае колку ќе ти наплатат за ATmega328P ::).

Јас не викам дека е ова во ред, но ситуацијата е таа. Немаме некој кој знае колкав избор. А и да не зборувам за самта палета на микроконтролери кои ги имаме на избор. Прилично мала е :S. Но, за толку мал пазар, каков што сме, не можеме да очекуваме подобро. Затоа се снаоѓаме како знаеме и умееме, но не секој знае да го прави тоа. Тука се јавува проблемот. Како јас да презентирам проект со ATmega микроконтролер кој го нема да се купи во Македонија? Убаво јас што сум го направил, ама никој друг во Македонија не може да го направи ;D.

Затоа често и се избираат PIC-овите во Македонија. Секаде може да се купат и не се прескапи ;).

Од секој друг аспект, оправдувам се што пиша ;). На пример, ако правам проект за некого (трета странка, приватен проект), па и за некој мој личен проект, кој не планирам јавно да го презентирам, дефинитивно би се решил за AVR ако проектот е комплициран. Ако е нешто просто, како броење артикли на лента, од што ме мрзи, дури може и Flowcode да го користам (клик ваму, клик онаму, една сликичка со друга сликичка поврзи, compile, bam, имаш готова програма ;D).
"This is really a generic concept about human thinking - when faced with large tasks we're naturally inclined to try to break them down into a bunch of smaller tasks that together make up the whole."

"Newton's third law: The only way humans have ever figured out of getting somewhere is to leave something behind."

Trolko

  • Guest
Одг: AVR vs PIC
« Reply #2 on 29.01.2013, Tuesday, 23:56:21 »
Интересна тема за дискусија ;). Ќе ја pin-увам ;).

Се согласувам со се што пиша ;). Одлично си ја сработил задачата ;). Но, има еден проблем. Ова се вака изгледа многу убаво на хратија, како што викаат ;D. Не дека не си во право, но има реален проблем кој, барем кај нас во Македонија, тешко се надминува :S. Кај нас не носат Atmel микроконтролери, а ако можеш да начекаш еден од некаде да купиш, најверојатно ќе има некоја баснословна цена (800, 900, 1000 денари). Е сега, некој ќе рече, па можеш и online да си купиш. Ако треаме по сите прописи (without cheating ;D), знаеме дека во Македонија не може да отвориме paypal accounts. И сега, што правиме? Кога повеќето online трансакции се одвиваат преку paypal, ние не можеме да имаме paypal и место да можеме да купиме нешто прилично евтино online, ние мора да се зезаме, да молиме да ни прифатат credit card payment или уплата на трансакциска сметка и да се надеваме дека продавачот ќе излезе фер и ќе ни го прати тоа што сме го барале, под услов да се сложи на директна трансакција или credit card payment.

За разлика од оваа ситуација, PIC-овите ги има насекаде во Македонија и може за прилично мала сума на пари да се купат, често помала и од онаа за која може да се начекаат online ;). На пример, PIC16F84A може да се купи во Loging за 60 денари (или некоја сума блиска на оваа, не ме земајте за збор). Кој знае колку ќе ти наплатат за ATmega328P ::).

Јас не викам дека е ова во ред, но ситуацијата е таа. Немаме некој кој знае колкав избор. А и да не зборувам за самта палета на микроконтролери кои ги имаме на избор. Прилично мала е :S. Но, за толку мал пазар, каков што сме, не можеме да очекуваме подобро. Затоа се снаоѓаме како знаеме и умееме, но не секој знае да го прави тоа. Тука се јавува проблемот. Како јас да презентирам проект со ATmega микроконтролер кој го нема да се купи во Македонија? Убаво јас што сум го направил, ама никој друг во Македонија не може да го направи ;D.

Затоа често и се избираат PIC-овите во Македонија. Секаде може да се купат и не се прескапи ;).

Well, да, ова е реалната ситуација, но сѐ си има свои pros-and-cons. Јас лично сите мои микроконтролери ги набавувам од странство - без разлика дали се пик-ови или авр-а, така да тој фактор со македонскиот пазар го имам исфрлено.


Од секој друг аспект, оправдувам се што пиша ;). На пример, ако правам проект за некого (трета странка, приватен проект), па и за некој мој личен проект, кој не планирам јавно да го презентирам, дефинитивно би се решил за AVR ако проектот е комплициран.

Па, мора да кажам дека не се согласувам со горе-напишаното (она што е во задебелени букви). Мислам дека самото јавно презентирање на проекти направени со AVR би ја зголемило побарувачката на овие микроконтролери кај корисницита - а со тоа би довело и нашиве *продавници* да ги увезуваат сѐ повеќе и повеќе истите.

Поздрав

Offline Devil

  • Администратор
  • Топ Експерт
  • *****
  • Posts: 5329
  • Gender: Male
    • Македонски форум за електроника
Одг: AVR vs PIC
« Reply #3 on 30.01.2013, Wednesday, 00:48:47 »
Еве и јас да си пишам, ама мислам дека имаше и претходно некоја ваква тема?!, без разлика

Јас не се имам цврсто врзано за тип на микроконтролери, Trolko во првиот пост убаво ги објасна позитивните и негативните страни, со тоа што некако повеќе ги наведе на PIC негативните, ама па од тоа и нема бегање тоа е вистината.

Околу даташитот, незнам јас убаво се снајдувам со нив не сум имал проблем до сега, ама тоа па повеќе зависи од човек до чеовек кој какво искуство има, како е навикнат да работи и слично.

Јас скоро сите проекти кој се со микроконтролер ги работам со PIC, зошто, едноставно пред 10-15 години кога се појавија првите пикови во македонија, во школите по дигитална се воведе PIC16F84, значи уште од почеток започнуваш со нив да учиш, во една дискусија со еден професор, кога го прашав оти го учат него, тој е ептем застарен, вика, одвај се убедивме воопшто да воведат во настават микроконтролери, сега ако бараме да ги замениме треба да се испотепаме.
Значи на децата му се зема можноста да ги проучат и другите микроконтролери.

Микрочип во новите серии на микроконтролери си го поправи тоа со траењето на инструкциите, па повеќето од микроконтролерите изработуваат 1 инструкција за еден такт, тоа што беа потребни 4 такта е кај постарите микроконтролери.
Околу применат, во индустријата позастапен е PIC-от, затоа што го има од поодамна и повеќе луѓе/дизајнери се научени да работаат со него, не сакаат да го заменат, да истражат што има ново на пазарот. Имав можност да видам дигитален лифт кој користи 2 PIC-а, еден за контрола на „ниво“ (спрат) на лифтот, и уште еден за се останато.

Јас имам дома неколку 328-ки ама па незнам за што да ги искористам, никогаш до сега не сум работел со нив, GigaWatt напомена убаво, на нашиот пазар се одвај застапени AVR микроконтролерите.
Поради таа причина јас не можам да изработам ништо со нив, ако сакам да го презентирам негде сите ќе ме мачат каде го најдов делот, за да го набават иди по порачка и на крај ќе ги кошта 5Х поскапо од неговата оригинална цена.

За сложен уред би можел и пик и авр да искористам, сеедно се додека го добијам она што сакам не глеам на која платформа ќе работам.

Околу компајлерите, AVR е застапен повеќе кај отворен софтвер/хардвер  фановите, ова мислам дека се должи најмногу поради ардуиното, кое според мене е добро за да би се започнело да се учи таа фамилија на микроконтролери, но со тек на време мислам дека е подобро да се префрли на некоја подобра развојна околина, не зависно дали е пик или авр базирана, затоа што компајлерот на ардуиното, е малку не убаво оптимизиран, од моја гледна точка, некако можностите на корисникот ако нема познавање од софтверско програмирање (во смисла на компјутерско програмирање) се многу ограничени, нема конгтрола околу тоа како би се компајлирал кодот, и на крај нај прост код би зафаќал многу повеќе меморија одошто би требало.

Ова истото се случува и со компајлерите на микроелектроника, кои прво кодот го префрлуваат во некој зададени асемблерски инструкции и од асемблер се компајлира, вака се добива малку не убаво искомпајлиран код, без разлика како е напишана програмата, таа се преведува во асемблер по инструкции на некој друг човек, што не е и најдобро.

Затоа микрочип си ги има MPLAB каде што ти си контролираш што и како.
Компајлерите за авр се најчесто бесплатни од горе наведената причина што се повеќе луѓе од светот на слободен софтвер и хардвер се интересираат за нив, си ги подесуваа онака како што имаат потреба.

Ама па од друга страна микрочип со неговото долгогодишно постоење на пазарот, доведе да повеќе фирми за компајлери кој ги поддржуваат нивните микроконтролери, со долгогодишното искуство си ги оптимизираат нивните компајлери, ама пак иди проблемот со ценат...

Е за ова се од TI Многу подобри, компајлерите се на принцип, ограничено ако немаш хардвер и неограничен и бесплатен со хардвер :D
Jас не сум себичен, помагам. Помагај и ти !

Секоја куќа си има свои куќни правила.Почитувај ги куќните правила!

Offline GigaWatt

  • Администратор
  • Топ Експерт
  • *****
  • Posts: 12894
  • Gender: Male
  • Не фалширам
Одг: AVR vs PIC
« Reply #4 on 30.01.2013, Wednesday, 05:17:52 »
Па, мора да кажам дека не се согласувам со горе-напишаното (она што е во задебелени букви). Мислам дека самото јавно презентирање на проекти направени со AVR би ја зголемило побарувачката на овие микроконтролери кај корисницита - а со тоа би довело и нашиве *продавници* да ги увезуваат сѐ повеќе и повеќе истите.

Мислам дека малку погрешно ме имаш разбрано ;). Кога пишав „проект за трето лице“, мислев на приватен проект кој не смеам јавно да го презентирам. Можеби, по некоклку години, да, ама во моменот кога јас треба да го продадам тоа што сум го направил, сигурно нема да го презентирам јавно ;D. А што се однесува до она што го имам пишано „па и за некој мој личен проект“, мислев пред се на некој проект кој има конкретна намена ;), на пример, еве, проект за 3D принтер како што имаш ти израбоетно. Зошто? Па нема поетна ;D. Можно е јас да сум го правел со делови кои ги имам по дома, а не купечки (некои кои може да се набават во продавница), така да, можно е да го презентирам чисто како идеја, ако некој замоли за такво нешто, да пишам „еве јас што имам направено, бујрум, разгледајте, користете што сакате од тоа“, но освен ова, најверојатно нема никој да го направи буквално истиот проект бидејќи ги нема буквално истите делови по дома ;). Така да, не гледам поента јавно да го презентирам. Повеќе мислев од овој аспект ;).

Јас имам дома неколку 328-ки ама па незнам за што да ги искористам, никогаш до сега не сум работел со нив, GigaWatt напомена убаво, на нашиот пазар се одвај застапени AVR микроконтролерите.

А, ова е башка муабет ;D. Ако изработиш некој уред со ATmega, потоа ќе треба да објаснуваш од кај си го нашол, па „ај и на мене еден земи ми“ ::). Позната работа ми е ова ;D.

Е за ова се од TI Многу подобри, компајлерите се на принцип, ограничено ако немаш хардвер и неограничен и бесплатен со хардвер :D

Да, ама не се open source колку што знам, така да, пак не знаеш што се случува under the hood ;).

На Micropchip им беше open source PICkit2 debugger-от, што барем според мене е одлична идеја ;). Може да се направи да биде се, од програматор до debugger, но многу комерцијално пристапија кон самиот проект и затоа мислам дека (до некаде барем) им пропадна :S. Како и да е, source-от за PICkit2 го има да се симне (барем го имаше, не знам дали сеуште го има ;D) на software-от, но и на firmware-от, а шемата скоро секаде може се најде ;). Може да се направи тој debugger да биде одличен, со мала промена на firmware-от и целосно нов software. Имав една ваква идеја, да се преправи софтверот да поддржува цела плеада на микроконтролер, и не само микроконтролери на Microchip, туку и многу други ;). Единствен проблем е што голем дел од софтверот е пишуван во .NET, а јас врска неам од .NET ;D. Инаку, мене лично ако ме прашате, ова и бил одличен проект за DIY debugger/programmer ;). Шемата лесно се прави, микроконтролерот е лесно достапен и не е прескап, може лесно да се направи да се интегрира со други IDE-иња, директно се врзува на USB без додатна електроника ;).

Да, сега се потсетив ;D. Ова би го навел како единствена мана на микроконтролерите на Atmel. Колку што знам, ниеден од нив нема сам по себе (native) USB поддршка (корегирајте ако грешам, искрено, не сум „копал“ премногу длабоко). Треба да се купи додатен чип (driver), што значи додатно потрошени пари, па треба и за него да се прави место на плочката... едноставно, не е практично :S.
"This is really a generic concept about human thinking - when faced with large tasks we're naturally inclined to try to break them down into a bunch of smaller tasks that together make up the whole."

"Newton's third law: The only way humans have ever figured out of getting somewhere is to leave something behind."

Trolko

  • Guest
Одг: AVR vs PIC
« Reply #5 on 30.01.2013, Wednesday, 14:56:51 »
Да, сега се потсетив ;D. Ова би го навел како единствена мана на микроконтролерите на Atmel. Колку што знам, ниеден од нив нема сам по себе (native) USB поддршка (корегирајте ако грешам, искрено, не сум „копал“ премногу длабоко). Треба да се купи додатен чип (driver), што значи додатно потрошени пари, па треба и за него да се прави место на плочката... едноставно, не е практично :S.

Грешка :) Атмел има цела линија на микроконтролери со УСБ host/device/otp подршка. Во хоби-светот најпознати се AtMega*8U{2,4} кои што најчесто се користат како usb-to-serial затоа што се поефтини од нативен чип за таа работа (FTDI FT232R пример).

Може да видиш во нивниот Product finder :

Code: [Select]
http://goo.gl/8wFpl

Offline GigaWatt

  • Администратор
  • Топ Експерт
  • *****
  • Posts: 12894
  • Gender: Male
  • Не фалширам
Одг: AVR vs PIC
« Reply #6 on 30.01.2013, Wednesday, 16:36:06 »
А, добро, моја грешка, не сум знаел ;). Како што пиша, изгледа најмногу ги имам гледано ATmega*8 чиповите во проекти, па затоа помислив дека немаат микроконтролери кои директно нудат USB поддршка ;). Добро е да се знае ;). Ги имав отфрлено Atmel како избор на микроконтролер за еден иден проект (кога ќе бидне, не се знае, ама идејата ја имам ;D) баш поради таа причина, но еве, излезе дека сум згрешил ;). Јас сигурно ќе проверев пред да падне конечниот избор, но еве, на време дознав ;).
"This is really a generic concept about human thinking - when faced with large tasks we're naturally inclined to try to break them down into a bunch of smaller tasks that together make up the whole."

"Newton's third law: The only way humans have ever figured out of getting somewhere is to leave something behind."