Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

IntRC PIC16F628A
http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=5083
Страница 1 от 1

Автор:  mash [ Сря Ное 14, 2007 7:26 pm ]
Заглавие:  IntRC PIC16F628A

Здравейте :)
Имам проблем относно работата на този пик с вътрешния осцилатор. Изобщо не иска да тръгне, като напиша програмата на PIC C , а като я напиша на асемблер и си работи ?! ето конфигурацията на пика на С :
.......

void main()
{

setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
setup_oscillator(OSC_4MHZ );
.............
#include <16F628A.h>

#FUSES NOWDT //No Watch Dog Timer
#FUSES INTRC_IO //Internal RC Osc, no CLKOUT
#FUSES PUT //Power Up Timer
#FUSES NOPROTECT //Code not protected from reading
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOMCLR //Master Clear pin used for I/O
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD //No EE protection

#use delay(clock=4000000)

Има ли нещо , което да пропускам ?

Автор:  Ки4о [ Чет Ное 15, 2007 1:02 pm ]
Заглавие: 

Във
Цитат:
#include <16F628A.h>

#FUSES NOWDT //No Watch Dog Timer
#FUSES INTRC_IO //Internal RC Osc, no CLKOUT
#FUSES PUT //Power Up Timer
#FUSES NOPROTECT //Code not protected from reading
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOMCLR //Master Clear pin used for I/O
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD //No EE protection

никъде не виждам да задаваш какъв тип ти е осцилатора ,нещо от сорта на
__CONFIG( HS & PWRTEN & BORDIS & WDTDIS & LVPDIS & DEBUGDIS & UNPROTECT);

Автор:  mash [ Чет Ное 15, 2007 6:41 pm ]
Заглавие: 

Ки4о написа:
Във
Цитат:
#include <16F628A.h>

#FUSES NOWDT //No Watch Dog Timer
#FUSES INTRC_IO //Internal RC Osc, no CLKOUT
#FUSES PUT //Power Up Timer
#FUSES NOPROTECT //Code not protected from reading
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOMCLR //Master Clear pin used for I/O
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD //No EE protection

никъде не виждам да задаваш какъв тип ти е осцилатора ,нещо от сорта на
__CONFIG( HS & PWRTEN & BORDIS & WDTDIS & LVPDIS & DEBUGDIS & UNPROTECT);






#FUSES INTRC_IO //Internal RC Osc, no CLKOUT - Ето тук

Автор:  bkulev [ Пет Ное 16, 2007 3:47 pm ]
Заглавие: 

mash аз нямам проблеми точно с този проц, но използвам Hi-Tech.

Мисля, че тази дефиниция е объркана, за един друг процесор,
ползвах PICC и имах проблем и до колкото си спомням бяха объркани
по отношение на това дали да има CLKOUT или не.
Но инъче си работеше.

Автор:  /dev/null [ Пет Ное 16, 2007 4:11 pm ]
Заглавие: 

Имах такъв проблем със 16ф628а.
Ако не ти е фатален броя на I/O пиновете, закачи пулъп на MCLR и 99% ще тръгне.

П.П. Софтуеарната ти конфигурация е добре.

Автор:  Zeus [ Пет Ное 16, 2007 7:55 pm ]
Заглавие:  Re: IntRC PIC16F628A

Пробвай вместо
#use delay(clock=4000000)
да сложиш
#use delay(internal=4M)
може пък да се оправи

Автор:  mash [ Съб Ное 17, 2007 6:35 pm ]
Заглавие: 

Хм.. нищо не помага
като напиша програмата на асемблер и осцилатора работи, а на PICC не работи.
Много интересно...

Автор:  [ Вто Ное 20, 2007 12:54 am ]
Заглавие: 

Имаше нещо гнило по една от версиите на CCS за Fuses точно за този процесор . Изпробвай с
Код:
#ROM 0x2007  = { Актуалните битове на Fuses }.

Автор:  Predator_MF [ Вто Ное 20, 2007 9:13 am ]
Заглавие: 

Не му знам на тоя къде му е OSCCAL във FLASH-a, обаче изкарай си CLKOUT на RA6 и виж има ли такт, ако има, най-вероятно проблема ти е в инициализацията на процесора, в CCS има едно парче код което чете OSCCAL от FLASH и го мята в OSCCAL в GP-тата, там е retlw инструкция (0x3CXX), ако си я затрил съвсем случайно оттам, процесора ще си стои във първите 30-ина байта, директивата във CCS е:

Код:
ROM 0x3FFF = {0x3C40} // в случай че OSCCAL ти е 0x40, не съм сигурен къде е OSCCAL на този процесор, виж PDF

Автор:  mash [ Сря Ное 21, 2007 12:54 am ]
Заглавие: 

Изпробвах всичко изписано по тази тема и не се получава нищо :(
Много странно ... като напиша кода на MPlab и си работи безупречно!
Кода на асемблер ми върши работа, но не ми дава покой, защо не мога да го направя на С?!
п.с. на RA6 няма такт каот го задам.

Автор:  Predator_MF [ Сря Ное 21, 2007 8:57 am ]
Заглавие: 

Опитай с:
Код:
#ROM 0x7FFF = {0x3C40}


Все пак, провери си FUSES преди да го програмираш (и дали изобщо си включил CLKOUT на RA6), в краен случай направи disassembly с някоя програма, става даже и с ICPROG и виж къде се дъни

Автор:  stanleyhacker [ Сря Ное 21, 2007 6:43 pm ]
Заглавие: 

setup_oscillator(OSC_4MHZ );

Вместо OSC_4MHZ трябва да е от рода на INTOSC_IO ili INTOSC_NOCLKOUT

Автор:  [ Сря Ное 21, 2007 7:08 pm ]
Заглавие: 

Добре де, след като го програмираш с програмата на Ц, прочети обратно професора и виж какви са му fuse битовете, същото направи и с програмата на асемблер, виж дали има разлики/прилики :)

Автор:  mash [ Сря Ное 21, 2007 7:27 pm ]
Заглавие: 

¶ написа:
Добре де, след като го програмираш с програмата на Ц, прочети обратно професора и виж какви са му fuse битовете, същото направи и с програмата на асемблер, виж дали има разлики/прилики :)

Няма разлики !
записва си ги без проблем .....

Автор:  [ Сря Ное 21, 2007 8:09 pm ]
Заглавие: 

Ако наистина няма разлики между записаните fuse битове на програмата на Ц и асемблер, значи проблема е нещо в програмата на Ц. Виж в листинга какъв асемблер е генерирал компилатора.

Страница 1 от 1 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/