Отговори на тема  [ 23 мнения ]  Отиди на страница 1, 2  Следваща
PIC16F676 проблем 
Автор Съобщение
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Чет Мар 01, 2007 7:33 pm
Мнения: 35
Мнение PIC16F676 проблем
Здравейте,
надявам се да помогнете да реша следният проблем. Правя една платка с PIC16F676. Тъй като използвам всички изводи на процесора ми се налага да му ползвам вътрешния генератор. Направих пробна програмка с която да пробвам работата на процесора. Записването на програмата в процесора минава нормално. При самото програмиране ICProg-a ми изписва две предупреждения. Първото е че няма въведена ID Value а второто е че няма въведена стойност за калибриране на вътрешният генератор, като след второто предупреждение ми дава да си избирам дали при програмирането да се използва някаква стойност по подразбиране. След като избера Yes или NO програмирането преминава нормално. След като после прочета кода от процесора и го сравня с оригинала който записвам - разлика няма, обаче процесора не тръгва да работи. Всички изводи са с високо импедансно състояние, което ме навежда на мисълта че всички са входове, както при начално състояние.
Смених процесора с нов, но отново проблема е същият.
Прикачам и кода да го видите:
Код:
#include <16F676.h>
#device adc=10


#FUSES NOWDT                    //No Watch Dog Timer
#FUSES INTRC_IO                //Internal RC Osc, no CLKOUT
#FUSES NOPROTECT                //Code not protected from reading
#FUSES BROWNOUT                 //Reset when brownout detected
#FUSES NOMCLR                   //Master Clear pin used for I/O
#FUSES NOCPD                    //No EE protection
#FUSES NOPUT                    //No Power Up Timer

#use delay(clock=4000000)



#byte   porta=0x0005
#byte   portc=0x0007
//#byte   CMCON=0x0019

#bit    current_gen=portc.0
#bit    sv_green=portc.1
#bit    sv_red=portc.4
#bit    sv_yellow=portc.5
#bit    rele=porta.5
#bit    button=porta.4

#int_COMP


void main()
{

   setup_adc_ports(sAN6|sAN7|VSS_VDD);
   setup_adc(ADC_CLOCK_INTERNAL);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_vref(FALSE);
   
   output_a (0b00000000);
   output_c (0b00000001);
   set_tris_a (0b11010011);
   set_tris_c (0b11001100);
 
   sv_green=1;
                sv_red=1;
   rele=1;



   do{
      }while(true);
}


Компилатора е 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
Профил ICQ
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Чет Мар 01, 2007 7:33 pm
Мнения: 35
Мнение 
Сега като четох из форумът забелязах че в тема IntRC PIC16F628A колегата mash описва същият проблем само че на друг PIC. Ако случайно го е решил се надявам да каже как.


Нед Дек 16, 2007 4:59 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Окт 10, 2004 9:55 am
Мнения: 1718
Мнение Mda
GDTRON написа:
Сега като четох из форумът забелязах че в тема IntRC PIC16F628A колегата mash описва същият проблем само че на друг PIC. Ако случайно го е решил се надявам да каже как.

Вече програмира ли го , ако си значи си омазал пейзажа и трябва ръчно тестово да калибрираш генератора , най лесно е да си купиш друг чип и да изчетеш първо какво има записано на адрес #03FFF (обикновенно е нещо от сорта 34XX , като XX е от 0 до FF), там има записано калибровачна стойност на вътрешния генератор и за всеки чип е различна, първо се изчита и после се записва това заедно със твоята програма , именно за това ти дава грешка преди запис като ти напомня да си напишеш вярната стойност на този адрес !!!
Най лесно става като предварително изчиташ контролера и си записваш си на лисче какво пише там, после зареждаш HEX файла и отиваш на този адрес и ръчно записваш пак кода , и чак след това записваш в чипа и всичко е 6 :)

_________________
Избийте баламите и тарикатите сами ще умрат!
Няма невъзможни работи - има много трудни работи!
----------------------------------------------------------------------------------
"Я в Москве с киркой уран найду, при такой повышенной зарплате" !


Нед Дек 16, 2007 5:16 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Чет Мар 01, 2007 7:33 pm
Мнения: 35
Мнение 
Благодаря plameniv,
ще пробвам това и после ще пиша какво е станало . За съжаление обаче ще трябва да сменя чипа защото вече го записах :)


Нед Дек 16, 2007 5:37 pm
Профил ICQ
Ранг: Минаващ
Ранг: Минаващ
Аватар

Регистриран на: Пон Ное 26, 2007 11:34 pm
Мнения: 95
Местоположение: Видин
Мнение 
GDTRON написа:
Благодаря plameniv,
ще пробвам това и после ще пиша какво е станало . За съжаление обаче ще трябва да сменя чипа защото вече го записах :)

Е ще го презапишеш де :D
Пробвай на асемблер да го пуснеш (вътрешния генератор) пък после пробвай с на plameniv трика да вземеш стойността.


Нед Дек 16, 2007 6:59 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Окт 10, 2004 9:55 am
Мнения: 1718
Мнение Mne
wolfshark написа:
GDTRON написа:
Благодаря plameniv,
ще пробвам това и после ще пиша какво е станало . За съжаление обаче ще трябва да сменя чипа защото вече го записах :)

Е ще го презапишеш де :D
Пробвай на асемблер да го пуснеш (вътрешния генератор) пък после пробвай с на plameniv трика да вземеш стойността.

Не може да я вземеш а трябва да се налучка !
1.Когато записваш софта също записваш на адрес #3FFE и #3FFF някаква стойност там да речем 34АА .
2. За да я налучкаш правиш си вътре един loop да цикли със смяна на нивото на един от портовете и мериш честотата , после сменяш това AA нагоре или надолу за проба например 9А или BA , виждаш колко се е променила честотата на онзи порт смяташ за колко цикъла ти излиза като време на цикъл коригираш още и така но не е лесно трябват ти няколко опита .:)
Другия вариант е да си включиш порта дето е изход от осцилатора и да мериш директно каква е честотата на осцилатора , правиш си програмка дето да пише в еепрома някакво число и с 2 бутона цъкаш единия за увеличаване на тази константа другия за намаляне с по 1 може да сложиш и още 2 бутона за прескачане по 10 за по бързо, и като стигне 4MHz стойноста я имаш в ЕЕПРОМ, само че за целта се прави малко по сложна програма и тази константа трябва да я имаш в програмата директно заложена и от там да си я заредил на осцилатора в началото :D
Ама аз забравих да спомена че в програмата винаги трябва да имаш в началото един 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
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Чет Мар 01, 2007 7:33 pm
Мнения: 35
Мнение 
Здравейте,
смених процесора но при четенето му с ICprog-a на адрес 0х03FF нямаше нищо. Пускам ви е снимка да видите какво излиза при четенето. Този адрес #3FFF за който говорите, как мога да го прочета. Нещо съвсем се обърках вече. Имам и още един въпрос. Може ли калибриращата променлива на вътрешния генератор да е причина генератора да не работи или тя е само за определяне на точната тактова честота? Защото при мен нищо не тръгва затова си мисля че генератора не тръгва въобще.


Прикачени файлове:
IC-prog.JPG
IC-prog.JPG [ 68.63 KiB | Прегледано 2136 пъти ]
Сря Дек 19, 2007 9:29 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Юли 22, 2006 9:50 pm
Мнения: 1638
Мнение 
Това прилича на картинка на заключен контролер.Направи му един bulk erase за да го изтриеш и при четене трябва да имаш 3FFF навсякъде.


Сря Дек 19, 2007 10:29 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Чет Мар 01, 2007 7:33 pm
Мнения: 35
Мнение 
Цитат:
Това прилича на картинка на заключен контролер.Направи му един bulk erase за да го изтриеш и при четене трябва да имаш 3FFF навсякъде.

Абсолютно съм съгласен, и на мене на такъв ми прилича, обаче контролера е чисто нов, нищо не е записвано на него. Просто го сложих и го прочетох. Сега се сетих че може би ако някой от изводите не контактува добре май пак така ще показва ICprog-a. Ще взема да проверя спойките.


Сря Дек 19, 2007 11:02 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Окт 10, 2004 9:55 am
Мнения: 1718
Мнение Mmmm
GDTRON написа:
Цитат:
Това прилича на картинка на заключен контролер.Направи му един bulk erase за да го изтриеш и при четене трябва да имаш 3FFF навсякъде.

Абсолютно съм съгласен, и на мене на такъв ми прилича, обаче контролера е чисто нов, нищо не е записвано на него. Просто го сложих и го прочетох. Сега се сетих че може би ако някой от изводите не контактува добре май пак така ще показва ICprog-a. Ще взема да проверя спойките.

Нов контролер няма заключен.
Нещо криво има в твоя програматор !!!
Да не си го сложил на грешно място, виж къде се слага 12С509 и на негово място го ложи !!!

_________________
Избийте баламите и тарикатите сами ще умрат!
Няма невъзможни работи - има много трудни работи!
----------------------------------------------------------------------------------
"Я в Москве с киркой уран найду, при такой повышенной зарплате" !


Чет Дек 20, 2007 12:08 am
Профил
Ранг: Минаващ
Ранг: Минаващ
Аватар

Регистриран на: Пон Ное 26, 2007 11:34 pm
Мнения: 95
Местоположение: Видин
Мнение 
GDTRON написа:
Цитат:
Това прилича на картинка на заключен контролер.Направи му един bulk erase за да го изтриеш и при четене трябва да имаш 3FFF навсякъде.

Абсолютно съм съгласен, и на мене на такъв ми прилича, обаче контролера е чисто нов, нищо не е записвано на него. Просто го сложих и го прочетох. Сега се сетих че може би ако някой от изводите не контактува добре май пак така ще показва ICprog-a. Ще взема да проверя спойките.

По принцип ако не контактува ще се получи така както е на твоята снимка. Опитай просто да не слагаш чипа в програматора да видиш че същото ще илезе.


Чет Дек 20, 2007 11:49 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Юли 22, 2006 9:50 pm
Мнения: 1638
Мнение 
Абе я да кажеш с каква платка ползваш IcProg - ProPic,JDM,Tait,...?


Чет Дек 20, 2007 8:52 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Яну 30, 2006 2:48 am
Мнения: 1248
Местоположение: София
Мнение 
Цитат:
В pdf-a на процесора открих изречение което немога да разтълкува: When MCLR is asserted in INTOSC or RC mode, the internal clock oscillator is disabled.
Надявам се някой да може да помогне. Благодаря!

Не можеш да ползваш при INTOSC пина на MCLR за нещо друго, освен за MCLR


Чет Дек 20, 2007 11:43 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Окт 07, 2004 1:22 pm
Мнения: 1949
Местоположение: София
Мнение 
@Syrius-B, трудно ми е да повярвам...щом FUSЕ-a NOMCLR е вдигнат значи MCLR пина работи като част от порта, а не като ресет. Този PIC изключение ли е ?


Съб Дек 22, 2007 12:10 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Яну 30, 2006 2:48 am
Мнения: 1248
Местоположение: София
Мнение 
При всички е така.
Освен това има проблеми с програмирането - проблема е, че обикновено не се програмира :o
Това, което го пише в Datasheets за разните функционални възможности, е вярно поотделно, но не е безусловно и винаги.
Специално за MCLR пина, не можеш да го ползваш като I/O, при вътрешен генератор по нормалния начин.
Има обиколен път, но е "с едно наум".
Трябва при програмирането да го излъжеш, че няма да го ползваш, и после да го включиш, но номера не минава на всички процесори :cry:
Затова, просто не го ползвай, и няма да имаш проблем нито с програмирането, нито с дебъга.


Съб Дек 22, 2007 1:04 pm
Профил WWW
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 23 мнения ]  Отиди на страница 1, 2  Следваща

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 3 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни