| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| Проблем с 16F676 - не ми тръгва програмата http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=188 |
Страница 1 от 2 |
| Автор: | peterhr [ Сря Дек 01, 2004 5:37 pm ] |
| Заглавие: | Проблем с 16F676 - не ми тръгва програмата |
За първи път използвам 16F676. От страна на хардуер е добре. Записвам програмата и я чета без грешки. Обаче не ми се стартира. Използвам С компилатор и ICProg. Изключил съм: WDT, PWRT, MCLR, BODEN, CP, CPD За осцилатор съм избрал IntOSC GP4. За Bandgap какво трябва да избера? Изключил съм компараторите. Как да настроя калибровъчния регистър - OSCCAL? При начало на запис ICProg чете данни от процесора и ми казва че не съм задал : "Oscillator Calibration Value". След това по подразбиране взима 3FFF, така че това не би трябвало да ми е проблем. Програмата ми има само инициалиране на регистри и трябва да светне 2 светодиода, ама не иска. Къде бъркам? |
|
| Автор: | Реконструктор [ Сря Дек 01, 2004 5:41 pm ] | |||||||||
| Заглавие: | Re: Проблем с 16F676 - не ми тръгва програмата | |||||||||
Не, че съм капацитет по въпроса с тез процесори, но не е зле да пуснеш сорса тука. |
||||||||||
| Автор: | peterhr [ Сря Дек 01, 2004 5:51 pm ] |
| Заглавие: | |
кода е това: -------------- #include <Charge_Adaptor.h> #fuses NOWDT, NOPROTECT, NOBROWNOUT, NOMCLR // Задава адрес за калибровка #BYTE OSCCAL = 0x90 // Задава адрес за компаратора #BYTE CMCON = 0x19 void main() { // Прави всички изходи set_tris_a (0); // 0 - out set_tris_c (0); // 0 - out // Централна честота - според datasheet-a OSCCAL = 0b100000; // Изключва компараторите CMCON = 0x07; output_high (PIN_A5); output_high (PIN_C5); } ------------------ Трябва да светнат двата светоиода, но не искат. +5В на тези изходи няма. Сигурно е нещо в настройките ама ... Забравих да постна и header файла: --------------- name:Charge_Adapter.h #include <16F676.h> #device adc=8 #use delay(clock=4000000) #fuses INTRC_IO, BANDGAPHIGH, BROWNOUT, MCLR #use rs232(baud=9600,parity=N,xmit=PIN_A3,rcv=PIN_A2,bits=9) ---------------- |
|
| Автор: | Реконструктор [ Сря Дек 01, 2004 6:00 pm ] | |||||||||
| Заглавие: | ||||||||||
Странна работа, fuses се определят от кода. |
||||||||||
| Автор: | Predator_MF [ Сря Дек 01, 2004 6:08 pm ] | |||||||||
| Заглавие: | ||||||||||
С кварц пробва ли??? На асемблер какво излиза (понякога тоя компилатор върши големи глупости). output_high (PIN_A5); output_high (PIN_C5); Ей тука предполагам че има някаква каша, направена от компилатора. Предлагам да го направиш така:
|
||||||||||
| Автор: | Nikola Kirov [ Сря Дек 01, 2004 7:15 pm ] |
| Заглавие: | |
Зависи с кой компилатор си. ако си с Hi-Tech наи коректно според мен е да си инклуднеш първо .h фаила за 16F676 и да го направиш така. след това #define PB(port,bit) ((unsigned)&(port)*8+(bit)) static bit PIN1 @ PB(PORTA,5); static bit PIN2 @ PB(PORTC,5); TRISA = 0; TRISC = 0; PIN1 = 1; PIN2 = 1; |
|
| Автор: | Mozfet [ Сря Дек 01, 2004 7:35 pm ] |
| Заглавие: | |
Писал го е на CCS C. Predatore и на мен ми се стори необичайно да виждам нещо като output_high (PIN_A5); но си бачка. Пък и щом от CCS препоръчват така да се прави, мисля да го правя. Не знам, тези с повечето опит с този компилатор ползват ли fast_io , т.е. #bit A5 = 0x05.5; А5 = 1 или output_high(pin_A5); ? |
|
| Автор: | bateAz [ Сря Дек 01, 2004 7:38 pm ] |
| Заглавие: | |
Aма и ти си ги избрал... PA5 се шерва с аналоговите входове, докато не запишеш с ADCON1 каквото трябва, напр. 0x06, няма да стане. За PC5 май че е същото. Виж SPI/I2C модула, да не би той да ги държи. |
|
| Автор: | zmej [ Сря Дек 01, 2004 11:40 pm ] | |||||||||
| Заглавие: | ||||||||||
TRIS-регистрите са с приоритет пред ADCON-a. Aко го ориентираш като изход, след това може да се пробваш да четеш колкото искаш - резултат - никакъв. Пробвано (не точно на тоя, ама не вярвам този да е различен от всички останали). А SPI/I2C (както и всяка периферия май) си е изключен по default. |
||||||||||
| Автор: | bateAz [ Сря Дек 01, 2004 11:58 pm ] |
| Заглавие: | |
Грешиш. ADCON1 трябва да се инициализира пръв. |
|
| Автор: | zmej [ Чет Дек 02, 2004 12:10 am ] |
| Заглавие: | |
Не мисля. И не за друго, ами щото досега всичките ми програми работят така (трис-овете винаги ги инициализирам първи, след intcon-a, option-a и тук-таме някое ресет-битче). Налагало ми се е да го лъжа - конфигурирам краката като аналогови с АДКОН-а (щото пик-а друга възможност не ми дава Но както и да е, не мисля че това е проблема... Но на симулатор много лесно ще се види къде какво прави. |
|
| Автор: | peterhr [ Чет Дек 02, 2004 9:56 am ] |
| Заглавие: | |
Мерси за отговорите. Със CCS компилирам. Според мен проблема не е в инициализирането на портовете с TRIS. Някъде четох че командата output_high (???) прави изход този пин, т.е. включва и обръщането му в изход и подаването на високо ниво. Но това мисля не ми е проблема. Писах няколко програми за 16Ф628А и там всичко си вървеше. Функциите на A5 са: -I/O -Timer1 clock -Crystal/Resonator -External clock input Искам да използвам само вътрешния кварц, нямам външен за да правя опити. Тук е нещо или с основните регистри или с настройките при самото програмиране. Може ли да ми кажете нещо повече за bandgap? Това GP4 какво означава? Има го като допълнение на INTOSC GP4 (при избора от ICProg). И последно - как да разкарам това калибриране което ми го иска в началото? Много въпроси станаха, ама... |
|
| Автор: | zmej [ Чет Дек 02, 2004 10:30 am ] | |||||||||
| Заглавие: | ||||||||||
Първото ти е, че GP4 си го ползваш като входно, изходен пин, ако му напишеш CLKOUT, оттам ще ти изкара изход на вътрешния генератор. За калибрирането - мисля, че няма начин да го разкараш, поне с айсипрог-а, принципно той май така или иначе си е калибриран. |
||||||||||
| Автор: | peterhr [ Чет Дек 02, 2004 11:12 am ] |
| Заглавие: | |
Да, ако избера да изкарва CLOCKOUT на А4 ми изкарва честотата. Това е единственото което успях да подкарам. Направих всички пинове изходи, вдигам ги в 1-за ама никой не слуша. Стоят си на 0V. Според мен нещо не тръгва програмата. Ама защо ... |
|
| Автор: | zmej [ Чет Дек 02, 2004 3:56 pm ] |
| Заглавие: | |
Подкарай я със симулатор - дръпни си някакъв МПЛАБ (преди 6), и я трасирай... Иначе май гадаем... Аз лично залагам на някаква простотийка, дето е като я гледаш - нищо, а иначе може да ти отрови живота (както в случая)... |
|
| Страница 1 от 2 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|