|
Виж темите без отговор | Виж активните теми
Дата и час: Пон Юли 27, 2026 2:36 pm
Въпрос на съвсем начинаещ
| Автор |
Съобщение |
|
dimitrov2000
Ранг: Минаващ
Регистриран на: Пон Окт 26, 2015 10:14 pm Мнения: 46
|
 Въпрос на съвсем начинаещ
Здравейте, нов съм във форума и още по нов в тематиката, така че моля да бъда извинен, ако задам и някой глупав въпрос, но следвам принципа, че не е лошо да питаш, лошо е, ако питаш два пъти за едно и също...
Предварително искам да уточня, че имам практически ориентирана насоченост към автомобилна електроника - автоматизация, информационни дисплеи и по-точно: -изписване на някаква информация на дисплей при аналогов сигнал от датчик /обикновено + или маса/ и/или -команда към друго изпълнитено устройство след получаване на такъв сигнал на вход.
Засега толкова, повече - по-нататък. Наясно съм с аналоговата схемотехника, но тук нещата очевидно са различни.
Сега на въпроса: Успях да подкарам приложения примерен код с PIC16F887 и LCD дисплей с програматор PicKit3(реплика), MPLAB X IDE и MPLAB IPE, с което няма как да не се гордея.
Тъй като появата на тези редове на дисплея в момента не ми върши никаква работа, ще се намери ли някой добър човек, който да промени в така приложения код:
1. Конфигуриране напр. на RB0 като аналогов вход; 2. При получаване на сигнал /-/ на RB0 , на екрана да се изпише текст "GROUND" и да стои там, докато стои сигнала.
Иска ми се да развия проекта стъпка по стъпка, по пътя на логиката, а не да търся някой да ми напише 20 реда програма наготово, защото знам, че всеки си цени времето и труда.
И като стана въпрос за време и труд, след като дълго се блъсках из нета като грешен дявол, в главата ми изникна и друг прост въпрос: Как да се ориентира начинаещия кандидат за ПИК програмист в морето от езици за програмиране, към кой език точно да се насочи и да задълбае в него, докато стане що-годе наясно с писането на проста програма? Защото колкото пъти попадам на примери, които ме интересуват, всеки път използвания език сякаш е различен. Т.е. ползвани са различни програми за писане, уж всички на С, С++ или С#, а синтаксиса видимо се различава /MikroC, MPLAB XC8, CSS C, Hi Tech C и т.н/. Къде да се насочи човек за да не хаби напразно време и ресурс? Предварително благодаря на тези, които се отзоват, защото без конкретна помощ сме заникъде.
|
| Пон Окт 26, 2015 10:18 pm |
|
 |
|
stoyanoff
Ранг: Форумен бог
Регистриран на: Чет Юни 25, 2009 1:01 pm Мнения: 2251
|
 Re: Въпрос на съвсем начинаещ
Относно това с какво да започнеш - аз лично бих ти препоръчал CCS. Подходящ е за начинаещи. Ето книжка Цък . За по-обикновени проекти аз го предпочитам понеже има т. нар. header file, който съдържа предварително дефинирани константи, както и много готови функции! Употребата му е доста лесна! Не е нужно да бъркаш постоянно в регистри и да зареждаш стойности. Доста е бъгав, но на първо време мисля, че няма да имаш забележки! Има го в раздел софтуер. За по-сложни неща аз предпочитам тези на майкрочип - XC и C сериите! Реално всички продукти са добри! Въпрос на предпочитания! Като гледам този код прилича, на XC или C!Това, което искаш да постигнеш не е сложно! Просто разгледай какво пише за съответния къмпайлър! Повече информация има в AN на майкрочип! Но аз мисля ако започнеш с книжката, където доста подробно обясняват доста неща, за ден 2 ще можеш да си напишеш собствена програма! Не съм сигурен дали в случая трябва да напиша направо решението, защото предполагам искаш да се научиш! Поздрави!
_________________www.elkran.com
|
| Пон Окт 26, 2015 11:40 pm |
|
 |
|
ike
Ранг: Форумен бог
Регистриран на: Пет Фев 04, 2005 9:59 pm Мнения: 6019 Местоположение: София
|
 Re: Въпрос на съвсем начинаещ
Напротив сложно е. Трябва първо да си избере език и компилатор за него. Да научи синтаксиса на езика и командите на компилатора. След това да размига светодиод. После да прочете бутон. Пропускам следващите 50 стъпки. После да инциализира дисплей и да пише по него. След това да прочете ADC пин. И най-накрая да свърже всичкото това в работеща програма. В момента е сложил тавата във фурната и казва: Фурната е нагрята до 200 градуса и тавата е вътре, сега какво? Яйца ще ми трябват ли?
_________________ Warriors of the Night, ASSEMBLER!!!
|
| Пон Окт 26, 2015 11:52 pm |
|
 |
|
dimitrov2000
Ранг: Минаващ
Регистриран на: Пон Окт 26, 2015 10:14 pm Мнения: 46
|
 Re: Въпрос на съвсем начинаещ
Благодаря за отговорите досега, особено за посочената литература. Ще се запозная подробно и дано е обяснено добре, че досега съм попаднал измежду десетки, само на един автор, който знае как да обяснява. Берт, който, ако правилно съм разбрал е участвал в разработката на отделен език, подобен на Паскал, JAL. За съжаление, тъкмо го бях захванал и осъзнах, че не е много разпространен и нямаше да ми е от практическа полза, що се отнася до популярност. Сега конкретно по въпроса: Според примера, кода е написан на MPLAB XC8, каквото и да значи това. Наистина бих бил благодарен на два реда примерен код в същата програма, ако не е прекалено, защото, както вече споменах, най добре се уча от практиката, когато експериментирам, как стават нещата в реалния свят. Ако видя, как става с един бутон на входа, лесно ще го направя с десет такива. Ако видя, как става с диод на изхода, лесно ще го заменя с реле и т.н. Иначе ми малко ми е късно да ставам програмист на тези години и предпочитам да усвоявам материята поетапно, по реда по който необходимостта се появява.
Сега си мисля, че са ми нужни да науча около 20-тина израза, за да си върша работата. Със сигурност греша, но щом времето ме опровергае, ще караме нататък. Аз имам един голям недостатък, че не съм учил никакво програмиране на времето, когато трябваше и макар, да звучи нескромно - едно преимущество - много силно развита логика. В петък си купих един празен чип и един китайски програматор, разпоих един дисплей от волтметър, който имах подръка и днес го накарах да светне и да изпише, каквото му написах...Тогава осъзнах, какво необятно море от възможности се отварят в практиката. Както казах, занимавам се в точно определена сфера. Искам да усвоя принципните неща и да се науча да програмирам онова, което ми трябва, а не просто да програмирам неща заради самото можене. Дано не бъда разбран погрешно, но мигащи диоди и бягащи светлини никак не са ми в сферата на интереса, а за съжаление или аз незнам, къде да търся или интернета е пълен само с такива. Затова се обръщам за помощ към хората, които знаят. Ако трябва да ползвам и аз метафора, да се науча да ползвам топла вода, а не да я откривам.
Р.S. Колкото до фурната, колегата е абсолютно прав, но има хора и хора, както е и важно да знаеш, какво точно искаш. С дължимото уважение ще трябва да коментирам отговора му, но аз и сега знам, че трябва за избера и точно за този избор питам...
|
| Вто Окт 27, 2015 2:03 am |
|
 |
|
stefan63
Ранг: Форумен бог
Регистриран на: Вто Фев 07, 2012 11:22 pm Мнения: 3084
|
 Re: Въпрос на съвсем начинаещ
Възможно е да си попаднал не където трябва  . XC8 e компилатор на фирмата Микрочип за езика С. Хубавото е ,че е безплатен, и във форумите на фирмата има кой да ти помогне, а и тука. Лошата новина е , че ученето на език започва от лампички и бутони. По-лошата е ,че обработката на един бутон не е като обработката на много бутони. Най-лошата е ,че се изисква много четене - за всеки чип си има особености. Втората добра новина е, че след първия чип нещата стават по-лесни. За да ти напиша редовете, които искаш , трябва: - да прочета кои регистри трябва да заредя с нещо, та пинът да стане вход. - специално на малките пикове има специфични инструкции от сорта TRIS и трябва да намеря как се пишат за конкретната фамилия в този компилатор. По примера ,който си ползвал - изглежда да е TRISB = 0x01 - трябва да намеря как в този компилатор се пише if (RB0==0) { Lcd_Set_Cursor(2,1); Lcd_Write_String("Grounded PB0"); __delay_ms(2000);} else { Lcd_Set_Cursor(2,1); Lcd_Write_String("NoGround PB0"); __delay_ms(2000);} ; - Ако искам за тоя пин да е включен подпиращ резистор към +5В - трябва да установя някой друг регистър. - Ако искам да е аналогов вход - трябва да запиша още няколко регистъра , свързани с аналоговите функции на крачетата. - Ако ще е аналогов вход- трябва да разуча АЦП .... Има и други подходи - ардуино, готови модули , среди за "графично" програмиране, PLC ,ладер диаграми.
|
| Вто Окт 27, 2015 8:20 am |
|
 |
|
dimitrov2000
Ранг: Минаващ
Регистриран на: Пон Окт 26, 2015 10:14 pm Мнения: 46
|
 Re: Въпрос на съвсем начинаещ
Много благодаря за отговора. Точно такъв тип рамо ми е необходимо, аз оттам нататък ще го разцъкам до основи, разбира се докато не излезе следващото въпросче. Например, как програмно се решава въпроса, ако на входове В0 и В1 едновремено се появят сигнали, кой има приоритет и как ще стане изписването на дисплея. Въпроса ми е принципен за синтаксис, точно както е отговорено, а не за конкретния чип.
Наясно съм, че едва ли ще попадна на някой, който ляга и става с моите проблеми...Затова уж избрах този чип PIC16F887, защото повечето книги на които попаднах бяха базирани на предшественика му 16F877. Очевидно е универсален т.е. много програмируеми входове и изходи, ADC, вграден осцилатор, таймери, компаратори и т.н. и се надявах да попадна на някой, който е запознат с него. Със сигурност има и по опростени варианти, да не скача човек в дълбокото, ама ако ще е да е... Благодаря още веднъж.
|
| Вто Окт 27, 2015 1:07 pm |
|
 |
|
stefan63
Ранг: Форумен бог
Регистриран на: Вто Фев 07, 2012 11:22 pm Мнения: 3084
|
 Re: Въпрос на съвсем начинаещ
За следващия си въпрос - отвори нова тема в раздела Академия, ако може в заглавието да си напишеш номера на процесора, ако е толкова важно. Сега погледнах ,че имам на масата 16ф882 . Ще го ползвам за нещо си. Само че няма да запомня нищо съществено за архитектурата му . Това е така, защото - имам си план в главата, избрал съм процесора според задачите пред мене. Ще чета , пиша, пробвам и забравям. При тебе е 1-ви , та ще го помниш. По въпроса за приоритетите - всичко става в главата ти, процесорът е само инструмент. Има няколко важни неща, които начинаещият обикновено игнорира, ще си позволя да ги напиша: - процесорът/контролерът може да прави четене на данни, запис на данни и да прекъсва. (Почти всички (но не е задължително) могат да манипулират данните - ротация, аритметични операции и тем подобни) . - обработката на прекъсване трябва да е възможно най-кратка, в нея се прави само необходимото и нищо друго. - прекъсване по таймер , обработка на прекъсването и сигнализиране към главната програма трябва да е част от "натискане на бутон и светване на лампичка" - за всеки начинаещ.
|
| Вто Окт 27, 2015 1:48 pm |
|
 |
|
ike
Ранг: Форумен бог
Регистриран на: Пет Фев 04, 2005 9:59 pm Мнения: 6019 Местоположение: София
|
 Re: Въпрос на съвсем начинаещ
dimitrov2000 трябваше първо да попиташ тук и после да си купуваш контролери. Правиш си ебей акаунт и си купуваш едно ардуино и каквото ти хване окото от това https://www.google.com/search?q=arduino ... 20&bih=979след което почваш да търсиш с гугъл това https://www.google.com/search?es_sm=93& ... 8mmdlWLU8Aи почваш да експериментираш. P.S. Никога не е късно да научиш нов език, не зависимо дали е чужд език или език за програмиране.
_________________ Warriors of the Night, ASSEMBLER!!!
|
| Вто Окт 27, 2015 3:26 pm |
|
 |
|
Desert Leo
Ранг: Форумен бог
Регистриран на: Чет Фев 10, 2005 3:25 pm Мнения: 5677 Местоположение: София
|
 Re: Въпрос на съвсем начинаещ
dimitrov2000, не слушай ike.  Хващай CCS C-то.
|
| Вто Окт 27, 2015 4:31 pm |
|
 |
|
dimitrov2000
Ранг: Минаващ
Регистриран на: Пон Окт 26, 2015 10:14 pm Мнения: 46
|
 Re: Въпрос на съвсем начинаещ
Това ардуино май много те е впечатлило, че гледам го препоръчваш под път и над път, ама нейсе... Мисля че преди на пишем, трябва да четем...т.е. имам предвид да си четем постовете, иначе става анархия: Първо питам, какъв език да избера, че да ми е от максимална полза, ти ми отговаряш, че трябва първо да избера език... После прилагам работещ код и моля някой знаещ да добави два реда за да хвана логиката на нещата, като изрично съм казал, че интереса ми е строго ориентиран, ти ме пращаш да творя багерчета и роботчета... Както и да е...ако можеш и имаш желание да помогнеш, помагай, ако не - за смисъла на съществуването и живота, като начин на употреба можем да си говорим надълго и широко, но в други форуми.
|
| Вто Окт 27, 2015 11:00 pm |
|
 |
|
s7ama7
Ранг: Почетен член
Регистриран на: Съб Ное 29, 2014 10:11 am Мнения: 774
|
 Re: Въпрос на съвсем начинаещ
Според мен хвани първо езика C , изтегли си някакъв компилатор . Например Codebloks като проиграваш готови програми или отделни задачи . След като схванеш основните неща тогава чак почвай микроконтролерите . Просто аз си мисля че се опитваш да почнеш нещата отзад напред . ПС: Радвай се че не те хвърлиха да учиш асемблер . И аз съм за XC8 , не затова че е по лесно с него, а затова че не те ограничава в нищо и няма да хванеш вредните навици на ардуино програмиста. 
|
| Вто Окт 27, 2015 11:50 pm |
|
 |
|
ilkor
Ранг: Форумен бог
Регистриран на: Вто Мар 31, 2009 10:25 am Мнения: 1391
|
 Re: Въпрос на съвсем начинаещ
|
| Сря Окт 28, 2015 10:49 am |
|
 |
|
dimitrov2000
Ранг: Минаващ
Регистриран на: Пон Окт 26, 2015 10:14 pm Мнения: 46
|
 Re: Въпрос на съвсем начинаещ
Благодаря колега, но като гледам топиците, май още съм далеч от тези нива...
|
| Сря Окт 28, 2015 11:56 am |
|
 |
|
ike
Ранг: Форумен бог
Регистриран на: Пет Фев 04, 2005 9:59 pm Мнения: 6019 Местоположение: София
|
 Re: Въпрос на съвсем начинаещ
ilkor Там ще си загуби времето, ще се чуства като кобра, на събрание на мангусти. Разбирам, че искаш да събереш повече хора, за да не ви останат от кебапчетата, но само ще заема място в залата и ще си загуби деня. dimitrov2000 дори не може да задава правилните въпроси. Той ако можеше, щеше да ги задъде на гугъл.
_________________ Warriors of the Night, ASSEMBLER!!!
|
| Сря Окт 28, 2015 12:11 pm |
|
 |
|
dimitrov2000
Ранг: Минаващ
Регистриран на: Пон Окт 26, 2015 10:14 pm Мнения: 46
|
 Re: Въпрос на съвсем начинаещ
Благодаря за отговора, ще го разуча внимателно и ще видя, какво мога да изтръгна от него... Междувременно благодарение на колегата, който спомена по горе за графични среди за програмиране, попаднах на Flowcode 5 и мисля, че това е точно за мен на този етап. На път съм да го усвоя, но ударих греда...та пак се налага да губя на някой времето. Проектчето е елементарно за тест на диод и там е работата, че на собствения му симулатор работи, работи без грешка и на Протеус, а в реалния живот не ще. Къде може да е проблема. Компилирам го с Flowcode, после хекса го наливам с MPLAB IPE. Никой не реве за грешка. Къде може да е проблема. Прилагам работещ код за тест на LCD и въпросния неработещ. Пика е все 16F887. Моля за помощ.
Последна промяна dimitrov2000 на Сря Окт 28, 2015 8:27 pm, променена общо 1 път
|
| Сря Окт 28, 2015 7:11 pm |
|
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 3 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|