| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| PIC16F676 проблем http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=5215 |
Страница 1 от 2 |
| Автор: | GDTRON [ Нед Дек 16, 2007 4:46 pm ] | |||||||||
| Заглавие: | PIC16F676 проблем | |||||||||
Здравейте, надявам се да помогнете да реша следният проблем. Правя една платка с PIC16F676. Тъй като използвам всички изводи на процесора ми се налага да му ползвам вътрешния генератор. Направих пробна програмка с която да пробвам работата на процесора. Записването на програмата в процесора минава нормално. При самото програмиране ICProg-a ми изписва две предупреждения. Първото е че няма въведена ID Value а второто е че няма въведена стойност за калибриране на вътрешният генератор, като след второто предупреждение ми дава да си избирам дали при програмирането да се използва някаква стойност по подразбиране. След като избера Yes или NO програмирането преминава нормално. След като после прочета кода от процесора и го сравня с оригинала който записвам - разлика няма, обаче процесора не тръгва да работи. Всички изводи са с високо импедансно състояние, което ме навежда на мисълта че всички са входове, както при начално състояние. Смених процесора с нов, но отново проблема е същият. Прикачам и кода да го видите:
Компилатора е CCS.На симулацията в Proteus-a програмата върви нормално. В pdf-a на процесора открих изречение което немога да разтълкува: When MCLR is asserted in INTOSC or RC mode, the internal clock oscillator is disabled. Надявам се някой да може да помогне. Благодаря! |
||||||||||
| Автор: | GDTRON [ Нед Дек 16, 2007 4:59 pm ] |
| Заглавие: | |
Сега като четох из форумът забелязах че в тема IntRC PIC16F628A колегата mash описва същият проблем само че на друг PIC. Ако случайно го е решил се надявам да каже как. |
|
| Автор: | plameniv [ Нед Дек 16, 2007 5:16 pm ] | |||||||||
| Заглавие: | Mda | |||||||||
Вече програмира ли го , ако си значи си омазал пейзажа и трябва ръчно тестово да калибрираш генератора , най лесно е да си купиш друг чип и да изчетеш първо какво има записано на адрес #03FFF (обикновенно е нещо от сорта 34XX , като XX е от 0 до FF), там има записано калибровачна стойност на вътрешния генератор и за всеки чип е различна, първо се изчита и после се записва това заедно със твоята програма , именно за това ти дава грешка преди запис като ти напомня да си напишеш вярната стойност на този адрес !!! Най лесно става като предварително изчиташ контролера и си записваш си на лисче какво пише там, после зареждаш HEX файла и отиваш на този адрес и ръчно записваш пак кода , и чак след това записваш в чипа и всичко е 6 |
||||||||||
| Автор: | GDTRON [ Нед Дек 16, 2007 5:37 pm ] |
| Заглавие: | |
Благодаря plameniv, ще пробвам това и после ще пиша какво е станало . За съжаление обаче ще трябва да сменя чипа защото вече го записах |
|
| Автор: | wolfshark [ Нед Дек 16, 2007 6:59 pm ] | |||||||||
| Заглавие: | ||||||||||
Е ще го презапишеш де Пробвай на асемблер да го пуснеш (вътрешния генератор) пък после пробвай с на plameniv трика да вземеш стойността. |
||||||||||
| Автор: | plameniv [ Пон Дек 17, 2007 1:12 am ] | ||||||||||||||||||
| Заглавие: | Mne | ||||||||||||||||||
Не може да я вземеш а трябва да се налучка ! 1.Когато записваш софта също записваш на адрес #3FFE и #3FFF някаква стойност там да речем 34АА . 2. За да я налучкаш правиш си вътре един loop да цикли със смяна на нивото на един от портовете и мериш честотата , после сменяш това AA нагоре или надолу за проба например 9А или BA , виждаш колко се е променила честотата на онзи порт смяташ за колко цикъла ти излиза като време на цикъл коригираш още и така но не е лесно трябват ти няколко опита . Другия вариант е да си включиш порта дето е изход от осцилатора и да мериш директно каква е честотата на осцилатора , правиш си програмка дето да пише в еепрома някакво число и с 2 бутона цъкаш единия за увеличаване на тази константа другия за намаляне с по 1 може да сложиш и още 2 бутона за прескачане по 10 за по бързо, и като стигне 4MHz стойноста я имаш в ЕЕПРОМ, само че за целта се прави малко по сложна програма и тази константа трябва да я имаш в програмата директно заложена и от там да си я заредил на осцилатора в началото Ама аз забравих да спомена че в програмата винаги трябва да имаш в началото един CALL 3FFh или ако те мързи всеки път да я пишеш на онзи адрес изчиташ я и я записваш в софта директно нещо такова: MOVLW 0xAA BSF STATUS,RP0 MOVWF OSCCAL BCF STATUS,RP0 ------------------------------------------------------ по вярно е така, в този случай е по универсално става нещо с контролера сменяш го и той работи със същата програма на същата честота : CALL 0x03FF BSF STATUS,RP0 MOVWF OSCCAL BCF STATUS,RP0 |
|||||||||||||||||||
| Автор: | Ки4о [ Сря Дек 19, 2007 10:29 pm ] |
| Заглавие: | |
Това прилича на картинка на заключен контролер.Направи му един bulk erase за да го изтриеш и при четене трябва да имаш 3FFF навсякъде. |
|
| Автор: | GDTRON [ Сря Дек 19, 2007 11:02 pm ] | |||||||||
| Заглавие: | ||||||||||
Абсолютно съм съгласен, и на мене на такъв ми прилича, обаче контролера е чисто нов, нищо не е записвано на него. Просто го сложих и го прочетох. Сега се сетих че може би ако някой от изводите не контактува добре май пак така ще показва ICprog-a. Ще взема да проверя спойките. |
||||||||||
| Автор: | plameniv [ Чет Дек 20, 2007 12:08 am ] | ||||||||||||||||||
| Заглавие: | Mmmm | ||||||||||||||||||
Нов контролер няма заключен. Нещо криво има в твоя програматор !!! Да не си го сложил на грешно място, виж къде се слага 12С509 и на негово място го ложи !!! |
|||||||||||||||||||
| Автор: | wolfshark [ Чет Дек 20, 2007 11:49 am ] | ||||||||||||||||||
| Заглавие: | |||||||||||||||||||
По принцип ако не контактува ще се получи така както е на твоята снимка. Опитай просто да не слагаш чипа в програматора да видиш че същото ще илезе. |
|||||||||||||||||||
| Автор: | Ки4о [ Чет Дек 20, 2007 8:52 pm ] |
| Заглавие: | |
Абе я да кажеш с каква платка ползваш IcProg - ProPic,JDM,Tait,...? |
|
| Автор: | Syrius-B [ Чет Дек 20, 2007 11:43 pm ] | |||||||||
| Заглавие: | ||||||||||
Не можеш да ползваш при INTOSC пина на MCLR за нещо друго, освен за MCLR |
||||||||||
| Автор: | Predator_MF [ Съб Дек 22, 2007 12:10 pm ] |
| Заглавие: | |
@Syrius-B, трудно ми е да повярвам...щом FUSЕ-a NOMCLR е вдигнат значи MCLR пина работи като част от порта, а не като ресет. Този PIC изключение ли е ? |
|
| Автор: | Syrius-B [ Съб Дек 22, 2007 1:04 pm ] |
| Заглавие: | |
При всички е така. Освен това има проблеми с програмирането - проблема е, че обикновено не се програмира Това, което го пише в Datasheets за разните функционални възможности, е вярно поотделно, но не е безусловно и винаги. Специално за MCLR пина, не можеш да го ползваш като I/O, при вътрешен генератор по нормалния начин. Има обиколен път, но е "с едно наум". Трябва при програмирането да го излъжеш, че няма да го ползваш, и после да го включиш, но номера не минава на всички процесори Затова, просто не го ползвай, и няма да имаш проблем нито с програмирането, нито с дебъга. |
|
| Страница 1 от 2 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|