| Автор |
Съобщение |
|
GDTRON
Ранг: Минаващ
Регистриран на: Чет Мар 01, 2007 7:33 pm Мнения: 35
|
 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.
Надявам се някой да може да помогне. Благодаря!
|
| Нед Дек 16, 2007 4:46 pm |
|
 |
|
GDTRON
Ранг: Минаващ
Регистриран на: Чет Мар 01, 2007 7:33 pm Мнения: 35
|
Сега като четох из форумът забелязах че в тема IntRC PIC16F628A колегата mash описва същият проблем само че на друг PIC. Ако случайно го е решил се надявам да каже как.
|
| Нед Дек 16, 2007 4:59 pm |
|
 |
|
plameniv
Ранг: Форумен бог
Регистриран на: Нед Окт 10, 2004 9:55 am Мнения: 1718
|
 Mda
Вече програмира ли го , ако си значи си омазал пейзажа и трябва ръчно тестово да калибрираш генератора , най лесно е да си купиш друг чип и да изчетеш първо какво има записано на адрес #03FFF (обикновенно е нещо от сорта 34XX , като XX е от 0 до FF), там има записано калибровачна стойност на вътрешния генератор и за всеки чип е различна, първо се изчита и после се записва това заедно със твоята програма , именно за това ти дава грешка преди запис като ти напомня да си напишеш вярната стойност на този адрес !!!
Най лесно става като предварително изчиташ контролера и си записваш си на лисче какво пише там, после зареждаш HEX файла и отиваш на този адрес и ръчно записваш пак кода , и чак след това записваш в чипа и всичко е 6 
_________________ Избийте баламите и тарикатите сами ще умрат!
Няма невъзможни работи - има много трудни работи!
----------------------------------------------------------------------------------
"Я в Москве с киркой уран найду, при такой повышенной зарплате" !
|
| Нед Дек 16, 2007 5:16 pm |
|
 |
|
GDTRON
Ранг: Минаващ
Регистриран на: Чет Мар 01, 2007 7:33 pm Мнения: 35
|
Благодаря plameniv,
ще пробвам това и после ще пиша какво е станало . За съжаление обаче ще трябва да сменя чипа защото вече го записах 
|
| Нед Дек 16, 2007 5:37 pm |
|
 |
|
wolfshark
Ранг: Минаващ
Регистриран на: Пон Ное 26, 2007 11:34 pm Мнения: 95 Местоположение: Видин
|
Е ще го презапишеш де
Пробвай на асемблер да го пуснеш (вътрешния генератор) пък после пробвай с на plameniv трика да вземеш стойността.
|
| Нед Дек 16, 2007 6:59 pm |
|
 |
|
plameniv
Ранг: Форумен бог
Регистриран на: Нед Окт 10, 2004 9:55 am Мнения: 1718
|
 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
_________________ Избийте баламите и тарикатите сами ще умрат!
Няма невъзможни работи - има много трудни работи!
----------------------------------------------------------------------------------
"Я в Москве с киркой уран найду, при такой повышенной зарплате" !
|
| Пон Дек 17, 2007 1:12 am |
|
 |
|
GDTRON
Ранг: Минаващ
Регистриран на: Чет Мар 01, 2007 7:33 pm Мнения: 35
|
Здравейте,
смених процесора но при четенето му с ICprog-a на адрес 0х03FF нямаше нищо. Пускам ви е снимка да видите какво излиза при четенето. Този адрес #3FFF за който говорите, как мога да го прочета. Нещо съвсем се обърках вече. Имам и още един въпрос. Може ли калибриращата променлива на вътрешния генератор да е причина генератора да не работи или тя е само за определяне на точната тактова честота? Защото при мен нищо не тръгва затова си мисля че генератора не тръгва въобще.
|
| Сря Дек 19, 2007 9:29 pm |
|
 |
|
Ки4о
Ранг: Форумен бог
Регистриран на: Съб Юли 22, 2006 9:50 pm Мнения: 1638
|
Това прилича на картинка на заключен контролер.Направи му един bulk erase за да го изтриеш и при четене трябва да имаш 3FFF навсякъде.
|
| Сря Дек 19, 2007 10:29 pm |
|
 |
|
GDTRON
Ранг: Минаващ
Регистриран на: Чет Мар 01, 2007 7:33 pm Мнения: 35
|
Абсолютно съм съгласен, и на мене на такъв ми прилича, обаче контролера е чисто нов, нищо не е записвано на него. Просто го сложих и го прочетох. Сега се сетих че може би ако някой от изводите не контактува добре май пак така ще показва ICprog-a. Ще взема да проверя спойките.
|
| Сря Дек 19, 2007 11:02 pm |
|
 |
|
plameniv
Ранг: Форумен бог
Регистриран на: Нед Окт 10, 2004 9:55 am Мнения: 1718
|
 Mmmm
Нов контролер няма заключен.
Нещо криво има в твоя програматор !!!
Да не си го сложил на грешно място, виж къде се слага 12С509 и на негово място го ложи !!!
_________________ Избийте баламите и тарикатите сами ще умрат!
Няма невъзможни работи - има много трудни работи!
----------------------------------------------------------------------------------
"Я в Москве с киркой уран найду, при такой повышенной зарплате" !
|
| Чет Дек 20, 2007 12:08 am |
|
 |
|
wolfshark
Ранг: Минаващ
Регистриран на: Пон Ное 26, 2007 11:34 pm Мнения: 95 Местоположение: Видин
|
По принцип ако не контактува ще се получи така както е на твоята снимка. Опитай просто да не слагаш чипа в програматора да видиш че същото ще илезе.
|
| Чет Дек 20, 2007 11:49 am |
|
 |
|
Ки4о
Ранг: Форумен бог
Регистриран на: Съб Юли 22, 2006 9:50 pm Мнения: 1638
|
Абе я да кажеш с каква платка ползваш IcProg - ProPic,JDM,Tait,...?
|
| Чет Дек 20, 2007 8:52 pm |
|
 |
|
Syrius-B
Ранг: Форумен бог
Регистриран на: Пон Яну 30, 2006 2:48 am Мнения: 1248 Местоположение: София
|
Не можеш да ползваш при INTOSC пина на MCLR за нещо друго, освен за MCLR
|
| Чет Дек 20, 2007 11:43 pm |
|
 |
|
Predator_MF
Ранг: Форумен бог
Регистриран на: Чет Окт 07, 2004 1:22 pm Мнения: 1949 Местоположение: София
|
@Syrius-B, трудно ми е да повярвам...щом FUSЕ-a NOMCLR е вдигнат значи MCLR пина работи като част от порта, а не като ресет. Този PIC изключение ли е ?
|
| Съб Дек 22, 2007 12:10 pm |
|
 |
|
Syrius-B
Ранг: Форумен бог
Регистриран на: Пон Яну 30, 2006 2:48 am Мнения: 1248 Местоположение: София
|
При всички е така.
Освен това има проблеми с програмирането - проблема е, че обикновено не се програмира
Това, което го пише в Datasheets за разните функционални възможности, е вярно поотделно, но не е безусловно и винаги.
Специално за MCLR пина, не можеш да го ползваш като I/O, при вътрешен генератор по нормалния начин.
Има обиколен път, но е "с едно наум".
Трябва при програмирането да го излъжеш, че няма да го ползваш, и после да го включиш, но номера не минава на всички процесори
Затова, просто не го ползвай, и няма да имаш проблем нито с програмирането, нито с дебъга.
|
| Съб Дек 22, 2007 1:04 pm |
|
|