| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| PIC16 vs PIC18 ? http://mcu-bg.com/mcu_site/viewtopic.php?f=2&t=2221 |
Страница 1 от 4 |
| Автор: | WDW [ Пон Апр 17, 2006 3:39 pm ] |
| Заглавие: | PIC16 vs PIC18 ? |
До сега съм работил само с 16-ки и нямам опит с тия чудовища ! Та реших та поекспериментирам с едно такова ! Някой работил ли е с тях и какви са им предимствата? Освен големият недостатък,че имат още около 40 нови инструкции за научаване!? По същия начин ли се програмират ? И IC-prog ще се справи ли ? Някакви специфични особености? |
|
| Автор: | backson [ Пон Апр 17, 2006 4:42 pm ] |
| Заглавие: | |
PIC18 е осъвършенствания вариант на PIC16. Премахнато е банкирането на специалните регистри, стека е увеличен, редица хардуерни подобрения. Научи се да пишеш на Си, ще ти е полезно също и ако минеш на друга платформа в даден момент. ИЦ ПРОГ се справя обаче ако искаш да пишеш сложни неща си вземи нещо с дебъгер - ICD2 например, може да си го закупиш от Комет в оригинал или да ползваш самоделките на www.olimex.com, които някои казват били по-добри. Задавай конкретни въпроси все пак да не ме караш да пиша роман |
|
| Автор: | Цецо [ Пон Апр 17, 2006 4:47 pm ] |
| Заглавие: | |
Чудовища са PIC16 и PIC12. PIC18 вече заприличва на нормален контролер. |
|
| Автор: | Predator_MF [ Пон Апр 17, 2006 4:53 pm ] |
| Заглавие: | |
Почвам отзад напред, можеш да ги програмираш с IC-prog. Разликите са доста, първата е, инструкциите и архитектурата на PIC18 са направени да са максимално удобни за програмиране на C, това можеш да го забележиш като видиш колко и какви регистри има за непряко адресиране . Втората особеност - имаш контрол върху стека, освен това той ти е 32 нива, както и нещо ресет при препълване на стека. Третата голяма особеност е 16-битовия флаш, разликата я усетих веднага щом портнах код от 16F877 в 18F452, стринговете ми заемаха доста по-малко място в 18-ката отколкото в 16-ка. Други особени разлики са - вграден 8х8 хардуерен умножител, добавени са няколко инструкции удобни за математики (въртене без пренос, negate и пр.), копиране на регистри само с една инструкция (MOVFF - малко тъпо че пак се изпълнява за два цикъла |
|
| Автор: | evc [ Вто Апр 18, 2006 8:15 am ] |
| Заглавие: | |
Добавени са и т.н. Lat регистри за всеки порт. Помагат да се избегне "рийд перформинг райт" операцията, като по този начин управлението на портовете става по-сигурно. За мен това беше доста важно. Като прибавим достатъчно повечето памет и съизмеримата цена, си се получава съвсем приличен контролер. Няма нужда да ги учиш тези допълнителни инструкции! Минавай на по-високо ниво. Бих препоръчал HI-TECH PICC-18. Майкрочипското С също не е лошо, но генерира малко повече и по-бавен при изпълнение код (това последното не го казвам от личен опит!). |
|
| Автор: | WDW [ Вто Апр 18, 2006 3:32 pm ] |
| Заглавие: | |
Това "рийд перформинг райт" прословутата операция четене-запис-модификация ли е? Всички ли на там са се ориентирали - да пишат на С ?? Значи ли това,че трябва да забравям за Асемблера? Нещо ми е много трудно да вникна в логиката на езика !? Сега си работя с регистрите и нещата са ми почти на хардуерно ниво ! Тази висока степен на абстракция при Цъ-то ми е доста шантава ! Но пък щом 18-те са ориентирани към С програмиране,сигурно има някакъв умисъл! Но някъде четох,че това не е съвсем точно! Този Майкрочипския Цъ фрий ли е ? И мога ли да си го дръпна с достатъчно примери и хелпове?? И още по-добре с еднакви кодове на двата езика! Апропо някой може ли да постне пример за 18-ка на Цъ и Асемблер да се видят разликите ?? Колко повече набъбва обема нужна памет при Цъ-то ?? |
|
| Автор: | TheWizard [ Вто Апр 18, 2006 3:55 pm ] |
| Заглавие: | |
WDW: Никой не те кара да не пишеш на Асемблер... където ти се стори необходимо - пиши... МСС18 не е фри има демо на сайта(има и хапче) За МСС18 ексампъли колкото щеш |
|
| Автор: | relsys [ Вто Апр 18, 2006 3:58 pm ] |
| Заглавие: | |
ами сега процесорите са с по 32-64 КБ памет, колко време ще ти е необходимо да напишеш толкова код на Хасемблер? и най-важното - кой после ще оправи бъговете? а пък ако не ти трябва толкова памет си гилай на 12-ка |
|
| Автор: | Bezmozachen [ Вто Апр 18, 2006 4:00 pm ] |
| Заглавие: | |
Доста набъбва обема на кода, писан на C особено с микрочипския. Фрии е Student Edition версията, която след месец работа и се деактивират оптимизациите, но и другата се хаква лесно (писано е по темата), ако това не те притеснява. Що се отнася до асемблера, аз за 18-ките пиша само на асемблер и според мен е много по-лесно от колкот при 16-ките, особено като опре до сметки. Просто няма място за сравнение между двете фамилии в това отношение, особено като се има в предвид и хардуения множител (освен за умножение много помага и за смятане на корени). Да не притеснява по-големия набор от инструкции, като им свикнеш ще се чудиш как си се мъчил до сега с 16-ките. |
|
| Автор: | Nikola Kirov [ Вто Апр 18, 2006 4:39 pm ] |
| Заглавие: | |
WDW да не би да ти предстои пенсиониране. Нещо много сложно гледам ти се вижда да минеш от 16ка на 18ка Старост нерадост ли,какво ли Я си седни на задника,имаш да прочетеш 2 pdf-a. |
|
| Автор: | evc [ Вто Апр 18, 2006 5:03 pm ] |
| Заглавие: | |
@WDW, да за тази операция става въпрос, в дейташийта е описано много добре. Проблем (както, сигурен съм, знаеш!) се получава при 16-та и 12-та серия, когато се опитваш да изменяш състоянието на порта като оперираш директно логически с него като с обикновен регистър. Не всички и определено не винаги, са се ориентирали към език от по-високо ниво. Аз останах с впечатлението, че ти ИСКАШ да преминеш на С. Това на 18-та серия е напълно възможно (писах ти за повечето ресурси). Но не е казано, че може само на С! Имам доста (особено критичните откъм време за изпълнение) модули, които си ги пиша на асемблер. Има си и неща, които на С не могат въобще да се напишат. Така че е въпрос на вкус (и не само), но за по-сложни задачи по-бързо става на език от високо ниво. Както са казали колегите по-горе, Майкрочипския компилатор не е свободен, но пусни едно търсене за MCC18 във форума и ще разбереш, че това не е проблем. Все пак бих препоръчал ХайТекския компилатор (повтарям се) като генериращ по-малко код. Също не е фрии, също не е проблем. В нета има купища от примери, драйвери и всякакви сорсове на С и за двата компилатора, а и на практика и двата са ANSI C компилатори, така че кода (с изключение на някои малки настройки) е абсолютно съвместим. Аз упорствам да пиша на ХайТекската развойна среда ХайТайд (защото така ми харесва! Освен тези три компилатора, напоследък се налага и MikroC на MikroElektronica. Много добър хелп, АNSI C компилатор, драйвери и готови библиотеки за почти всичко за което можеш да се сетиш. Но генерира доста код (все още, в новата версия ще видим). Пък и аз лично избягвам да използвам готови драйвери за каквото и да било. Но за запознаване с езика е добър. Накрая за сравнението, което искаш да направиш между асемблерски и С код. Не може да се сравни! Едно защото генерирания асемблерски код от всеки С компилатор е различен, и второ - логиката на машинно генерирания асемблерски код е съвсем различна от това ако го пишеш директно на асемблер. Никой компилатор не може да го напише така, както ако си го пишеш директно на Асемблер. Така че, по-добре не прави такива сравнения - ще получиш погрешно впечатление. Но компилаторите много добре се справят например с масиви, стекове и въобще с управлението на по-големи обеми данни. Така че решението си е твое: Езика от високо ниво пести време, асемблера ти дава възможност да "си го пипнеш" както ти харесва. |
|
| Автор: | backson [ Сря Апр 19, 2006 11:28 am ] |
| Заглавие: | |
Ха- ха-ха баче Кольо казал си го много точно, таман щех да напиша и аз същото. Който си е мазохист да си продължава да си пише САМО на Асемблер и да ползва САМО PIC16 при условие че с 18ките са на една цена. Според мен темата не заслужава такова внимание. Всичко е написано. Съжалявам за сърказма ама WDW седни и си прочети нещата. Между другото дайте да разискваме по-сериознички теми, а не като в случая да си мерят пишките няколко човека кой по-вече знае за пиковете, стига с това празнословие. |
|
| Автор: | evc [ Сря Апр 19, 2006 11:36 am ] |
| Заглавие: | |
@backson, би ли дефинирал "по-сериознички теми"? Мога да ти предложа една по-сериозничка : "Правопис на българския език" . Между другото в твоя пост с шест дълги изречения си казал точно "Съгласен съм с Баче Кольо". Лампичките ли ще палим, а? |
|
| Автор: | relsys [ Сря Апр 19, 2006 11:39 am ] |
| Заглавие: | |
Точно така, backson, само малка грешка си допуснал.......... PIC24... |
|
| Автор: | 3aek [ Сря Апр 19, 2006 11:58 am ] | |||||||||
| Заглавие: | ||||||||||
всички сме минали през Асемблера но вече пораснахме спомням си един проект далеч назад във времето когато и аз ни виждах предимствата да се пише на С - програмата взе да расте заедно с новите приумици на клиента и по едно време той реши че един брояч не трябва да брои до 255 ами до 300, познай на колко места в кода трябваше да променя за да стане това, в гадното С става като смениш една дума в кода напиши ми на асемблер a = b * 3.1459; и да видим кой ще извади по-добър код - ти или компилатора спорът С или Асемблер е абсолютно безмислен и двата езика си имат предимства и недостатъци всеки си е решил за себе си със времето какво да ползва, лично аз съм доста разсеян и ми отнема повече време да дебъгвам код на Асемблер отколкото на С а и в С винаге може да си напишеш някои части от кода които са критични към времето на Асемблер лично за мен най-добрия вариант е човек да е започнал с Асемблер и да е завършил на С - така ще има достатъчно знания на ниско ниво, но ще има много по-голяма производителност като пише на високо ниво а не дебъгва грешки от забравени банки, адресации и прочее глупави грешки от които човек не е застрахован когато пише на ниско ниво |
||||||||||
| Страница 1 от 4 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|