 |
Форум за електроника Български форум за електроника, ремонти, схеми, документация
|
| Предишната тема :: Следващата тема |
| Автор |
Съобщение |
RM Опитен потребител

Регистриран на: 16 Сеп 2008 Мнения: 680
|
Пуснато на: Нед Яну 11, 2009 18:50 Заглавие: |
|
|
| Сега в URL-то няма кирилица, книгата е там, повече не мога да направя нищо. |
|
| Върнете се в началото |
|
 |
nikiforiv Нов потребител

Регистриран на: 06 Апр 2007 Мнения: 34
|
Пуснато на: Нед Яну 11, 2009 21:51 Заглавие: |
|
|
Купи си "PIC Микроконтролери" част1. Там много добре е обяснено точно F84.
http://www.constructor.bg/mk/ |
|
| Върнете се в началото |
|
 |
hunterS Нов потребител

Регистриран на: 10 Яну 2009 Мнения: 36
|
Пуснато на: Нед Яну 11, 2009 22:12 Заглавие: |
|
|
| Ми аз от нея се уча имам я но RM нещо казва че не е както трябва. |
|
| Върнете се в началото |
|
 |
emil74 Опитен потребител


Регистриран на: 16 Мар 2007 Мнения: 1111
|
Пуснато на: Пон Яну 12, 2009 0:46 Заглавие: |
|
|
| Личното ми мнение е, че тази книжка е добра и засяга повечето неща, които са необходими, за да се запознае човек с микроконтролерите и да започне да използва PIC16F84A. Чел съм няколко книжки за начинаещи-чужди издания и не мисля, че я превъзхождат с нещо. Няма как да четеш романи, ако не знаеш азбуката, нали? Започни с тази книжка. После можеш да продължиш с други. |
|
| Върнете се в началото |
|
 |
hunterS Нов потребител

Регистриран на: 10 Яну 2009 Мнения: 36
|
Пуснато на: Пон Яну 12, 2009 18:40 Заглавие: |
|
|
Добре казано смятам да те послушам а да разкрия какво всъщност целя значи хванал ме е меракът да си направя скромно роботче идеята е да има два инфра сензора отпред и два отзад като са разположени под лек наклон за да играят и за встрани та когато има препядствие в страни робота които ще е на колела да праеи завой на другата посока а когато има препядствие отпред тоест бъдат осветени и двата сензора тои дава назад като трябва при даването назад единия мотор да спре порано от другия като с това ще се получи завъртане в обратна посока и трябва да редува посоките ако при първо препятствие завие на дясно то при второто наляво и после пак надясно и после наляво тоест траекторията е нещо като П образна нещо такова
[_________________
__________________]
[__________________
___________________]
та това ми е целта. |
|
| Върнете се в началото |
|
 |
RM Опитен потребител

Регистриран на: 16 Сеп 2008 Мнения: 680
|
Пуснато на: Вто Яну 13, 2009 12:58 Заглавие: |
|
|
Ще ти обърна внимание за последно.
Ако ти уври главата уври, ако ли не, ще си останеш кръгла нула.
Vaclin написа в един от постовете си една негова велика мисъл.
| Цитат: | | Надскочи възрастта си! Забрави за понятия като лично достойнство, самоуважение и подобни измишльотини. Или крадеш идеи, знания, умения и ти е се тоя какъв си в очите на тези от които крадеш или обичаш себе си ... и ти остава удоволствието цял живот да обичаш себе си. Може да се окаже, че накрая само ти обичаш себе си, защото за другите си станал безумно безполезен. |
и още, избери какъв да си.
1 Умен- който се учи от грешките на другите.
2 Глупав- който се учи от собствените.
Първо написания код | Код: | ;--------------- Подпрограма "Wait" формира времезадръжка от 16ms --------------------
Wait movlw D'2' ;
movwf Counter ;
clrf TMR0 ;Нулира TMR0
again bcf INTCON,T0IF ;Нулира бит T0IF
loop btfss INTCON,T0IF ;Бит T0IF=1
goto loop ;Не,провери отново
decfsz Counter,f ;
goto again ;Изпълни цикъла отново
return
|
Тъпо.... тъпо..... тъпо......
за 16mS имаш напълно умрял процессор , дето ти декрементира регистър.
И от тук натам няма смисъл да се поглежда каквото и да е било писано от теб.
За изложеното задание, се подхожда по съвсем друг начин.
1.Имаш таймер с прекъсване при препълване, и вектор който го обслужва.
Използвай го така. при обслужване на прекъсването т.е. край на 16mS си въстанови състоянието на портовете.
2. Имаш прекъсване и вектор който го обслужва на каквато и да е промяна на нивото на PINB.x
Използвай го така : вдигни влаг при промяна от 1 към 0 и след това при промяна от 0 към 1 го свали.
Така създаваш един процес с който не е нужно да следиш PINB.x дали е 0 или 1. Или ако не си разбрал , флага(за флага по надолу) ще е бита който ще ти показва състоянието на порта, без да се обръщаш директно към пина. Това има предимство, че при изпълнението на задачата последваща събитието PINB.x 1->0 , дори и да остане в състояние 0, като свалиш флага(след изпълнението на задачата), съответно задачата няма да се лоопва, а ще се изпълни отново след като се случи PINB.x 1->0, и отново се вдигне флага.
Променливи от булев тип (ми е по лесно да наричам флагове), не е необходимо да са цели регистри, а могат да бъдат бит от регистър, т.е. в един регистър може да следиш 8 променливи от типа true,false.
Ако не можеш да разбереш какво съм ти написал много жалко, ще си завиваш наляво , надясно ще си въртиш регистри, ще се луташ и ще се чудиш защо забива приграмата, демек тъп пикоборец.
Затова не си губи времето а слушай какво ти се казва.
Приключих с тебе.
Модерирано от RC
Предлагам ти да посмекчиш малко тона!
Не се чувствай задължен да отговаряш на хора които ТИ си преценил, че са под ТВОЕТО ниво. Още повече по такъв начин.
Става?
П.П. Освен това когато пишеш постове не е нужно постоянно да "настъпваш" големия бутон. Формата сама ще пренесе думата когато е нужно на следващия ред и по този начин един пост който може да бъде събран на пет реда няма да е 15 (и няма да е нужно някой да ти оправя постоянно постовете).
По-удобно е да се четат нормално написани постове. Не мислиш ли? |
|
| Върнете се в началото |
|
 |
emil74 Опитен потребител


Регистриран на: 16 Мар 2007 Мнения: 1111
|
Пуснато на: Вто Яну 13, 2009 15:02 Заглавие: |
|
|
| RM, човекът сега започва, това го разбираш вероятно,нали? Остави го да напише САМ програма, която РАБОТИ. Да, не е оптималният начин, НО ще я направи САМ. След като разбере достатъчно за какво става дума, ще разбере и КАК да я направи по "правилния" начин. Още не знае основните понятия, но това не е проблем (засега). Поне се опитва да научи нещо. Понякога малко разместване в реда на възприемане на нещата не е вредно, а води до по-лесно осмисляне после(поне при мен е така и доста неща чета привидно хаотично). Без да го приемаш като критика, но мислиш ли, че ще разбере нещо от кода, който си му изпратил(първия)? Личното ми мнение-което не считам за меродавно е: Нека започне, както е започнал, да пита, каквото не му е ясно и като дойде време, да си мине на друг език. Между другото има и нещо, което е полезно в острия ти тон: може точно това да го амбицира повече. Ако се откаже-значи не е за този занаят. |
|
| Върнете се в началото |
|
 |
zmeios Опитен потребител


Регистриран на: 08 Авг 2008 Мнения: 840 Местожителство: София
|
Пуснато на: Вто Яну 13, 2009 16:24 Заглавие: |
|
|
Аз не разбрах само, поради каква причина трябваше:
А) Да се караш на човек, който е начинаещ
Б) Да го караш да напише първата си програма с обработка на прекъсвания от таймер, вместо като всички други - да напище еквивалента на Hello World (аз и викам "мигащ светодиод")
В) Да смесваш принципно ВЕРНИЯ факт, че изчакване се прави с таймер, а не с идиотски цикли, със следния лаф:
| Цитат: | | Забрави за понятия като лично достойнство, самоуважение и подобни измишльотини |
...на Ваклин, който хем не е по темата, хем издава известна, да я наречем, емоционална нестабилност! |
|
| Върнете се в началото |
|
 |
hunterS Нов потребител

Регистриран на: 10 Яну 2009 Мнения: 36
|
Пуснато на: Вто Яну 13, 2009 18:39 Заглавие: |
|
|
Да ме извинява форума създателите му читателите му и т.н. но май RM обърка човека на който да вкара подобен тон. Еmil74 братле ще продължа с което съм се захванал защото ми е в кръвта и не се отказвам лесно искам да изкажа благодарност на теб на Zmeios и RC за проявеното разбиране и подкрепа, а на господина с мъдрите мисли искам да го запитам един въпрос без да се обиждаш ама ти да не си имал лошо детство бе примерно да са изисквали много от теб и да си бил вечната издънка и да са те хокали така остро, да не би за това да си с подобни отклонения в характера или какво, а. Аз помолих за помощ като човек бе, ти не знаеш ли какво е обноски че си чак толкова несдържан а, ти мутрееш ли кво бил приключил с мене я по-леко с тежкия език уважавам хора които са хора към мен и никои не ми е длъжен. Спирам до тук, защото не съм се регнал тука за да правиме драма още веднаж се извинявам на четателите.
Модерирано от RC
Моля темата да продължи по същество (ако ще продължава)!
Този пост го считаме като "право на отговор" и приключваме с лиричните отклонения! |
|
| Върнете се в началото |
|
 |
emil74 Опитен потребител


Регистриран на: 16 Мар 2007 Мнения: 1111
|
Пуснато на: Вто Яну 13, 2009 20:31 Заглавие: |
|
|
По темата: Намерих малко време и изпрограмирах един процесор с кода, който е дал hunterS.
Поведението на програмата е следното: При първоначално пускане PORTB1=0, PORTB2=1, PORTB3=0, PORTB4=1. При подаване на 0 на PORTB5: PORTB1=1, PORTB2=0. При подаване на 0 на PORTB6: PORTB3=1, PORTB4=0. При това се изпълнява само първата настъпила промяна, т.е. или от PORTB5 или от PORTB6.
hunterS, не ми стана много ясно това с 16-те ms от първия ти пост. Светване за толкова кратко време не би могло да се види, нали разбираш това? Реално, при така написана програма, портовете остават в посоченото състояние, докато е натиснат бутонът. Ако искаш да се подаде само импулс, трябва проверка дали бутонът е бил отпуснат и чак ако е бил отпуснат, да се подаде следващ импулс.
За да има възприемане и на двата сигнала, във всеки от циклите трябва да се включи проверка дали не е настъпила промяна и на втория вход. |
|
| Върнете се в началото |
|
 |
|
|
Не Можете да пускате нови теми Не Можете да отговаряте на темите Не Можете да променяте съобщенията си Не Можете да изтривате съобщенията си Не Можете да гласувате в анкети
|
|