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

Странен проблем с два ПИК-а ?!?!
http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=7650
Страница 1 от 1

Автор:  amdatlon [ Чет Мар 18, 2010 1:32 am ]
Заглавие:  Странен проблем с два ПИК-а ?!?!

Здравейте , от доста време не мога да си открия грешката , Моля за малко помощ :)

Проблема е следния : Става въпрос за симулация с Протеус-а .
Опитвам се да използвам CCP модула на 16Ф877 , но не иска и не иска да тругне нормално.
Накрая сведох сорса на CCS до минимум , за проба на CCP -то , но пак НЕ !
Направих същата схема със 18Ф458 и сходен сорс код , за да видя аз ли бъркам или що ,
но при него си работи без проблем :o .
Смених компилатора с новаверсия , смених протеуса , но без резулат.
Явно аз бъркам някъде но не знам къде . :(
Пробвах и със друга 16Ф-ка но пак не работи .
Пускам програмите за двата пика , ако някой може да даде идея , Ще съм много благодарен :)

Не работещата :
Код:
#include <16F877.H>
#fuses XT, NOWDT, NOPROTECT, BROWNOUT, PUT, NOLVP
#use delay(clock=16000000)
#include <flex_lcd.c>   
//**************************************************
#byte pA   =5   //port a   //
#byte pB   =6   //b         //
#byte pC   =7   //c         //
#byte pD   =8   //d         // usb port 8 bits parallel
#byte pE   =9   //port e   //
// *********************************

//*********  Caaaaaia ia eiioeao?aoey ia ieiiaaoa ia ii?oiaaoa  ************
#Define  SetConfigPortA     0//100011  //33  100001
#Define  SetConfigPortB     16
#Define  SetConfigPortC     0//bx 00000011
#Define  SetConfigPortD     0
#Define  SetConfigPortE     0
//**************************************************


#bit led=pC.4
#define TEST_LED pin_c5


#int_ccp1
void ccp1_isr(void)
{
int16 current_ccp;
static int16 old_ccp = 0;

current_ccp = CCP_1;

Output_high(TEST_LED);
delay_ms(1);
Output_low(TEST_LED);
delay_ms(1);

}

//==========================
void main()
{
lcd_init();
SETUP_TIMER_1(T1_INTERNAL|T1_DIV_BY_1);
enable_interrupts(INT_TIMER1);
CLEAR_INTERRUPT(INT_CCP1);
SETUP_CCP1(CCP_CAPTURE_RE);
enable_interrupts(INT_CCP1);
enable_interrupts(GLOBAL);

while(1)

{

}
}






Работещата :

Код:
#include <18f458.h>   
#device *=16                 
#Fuses HS,NOWDT,NOPROTECT,NOLVP, NOBROWNOUT, NOPUT

#use delay(clock=16000000)        // Crystal Oscillator Frequency
#use rs232(baud=15625,parity=N,xmit=PIN_C6,   rcv=PIN_C7   ,bits=8,FORCE_SW /* INVERT*/,TIMEOUT=400)
#include <flex_lcd.c>                //i?aaaaa /i?eaia

//**************************************************
#byte pA   =0xF80   //port a   //
#byte pB   =0xF81   //b         //
#byte pC   =0xF82   //c         //
#byte pD   =0xF83   //d         // usb port 8 bits parallel
#byte pE   =0xF84   //port e   //
// *********************************

//
//*********  Caaaaaia ia eiioeao?aoey ia ieiiaaoa ia ii?oiaaoa  ************
#Define  SetConfigPortA     0//100011  //33  100001
#Define  SetConfigPortB     16
#Define  SetConfigPortC     0//bx 00000011
#Define  SetConfigPortD     0
#Define  SetConfigPortE     0
//**************************************************


#bit led=pC.4
#define TEST_LED pin_c5


#int_ccp1
void ccp1_isr(void)
{
int16 current_ccp;
static int16 old_ccp = 0;

current_ccp = CCP_1;

Output_high(TEST_LED);
delay_ms(1);
Output_low(TEST_LED);
  delay_ms(1);

}

//==========================
void main()
{
lcd_init();
SETUP_TIMER_1(T1_INTERNAL|T1_DIV_BY_1);
enable_interrupts(INT_TIMER1);
CLEAR_INTERRUPT(INT_CCP1);
SETUP_CCP1(CCP_CAPTURE_RE);
enable_interrupts(INT_CCP1);
enable_interrupts(GLOBAL);

while(1)

{

}
}



Тук има двата проекта на протеус , ако някои може да пробва при него дали тръгват .

Прикачени файлове:
CCP1_test.rar [114.11 KiB]
69 пъти

Автор:  zaphod [ Чет Мар 18, 2010 8:34 am ]
Заглавие: 

а да си пробвал с истински чип? :D

Автор:  amdatlon [ Чет Мар 18, 2010 8:53 pm ]
Заглавие: 

Работата е че не съм .
Тъй като съм начинаещ , а протеуса доста улеснява работата , а за това което съм замислил ще ми е много трудно без симуласия в него .
Най вероятно ще работи в/у истински чип , но това за сега не ме грее много :)
То по принцип не дава грешка при работата , но изобщо не влиза в прекъсване от CCP , все едно че го няма !

Ще помоля някой ако има време и желание да пробва в неговия протеус , дали ще работят моите файлове с проекта . Версията е 7.6 SP0 !

Автор:  Наско [ Чет Мар 18, 2010 9:00 pm ]
Заглавие: 

ето за 877 и 485

Прикачени файлове:
485.JPG
485.JPG [ 234.62 KiB | Прегледано 730 пъти ]
877.JPG
877.JPG [ 228.26 KiB | Прегледано 721 пъти ]

Автор:  amdatlon [ Чет Мар 18, 2010 9:11 pm ]
Заглавие: 

:D

МНОГО ТИ БЛАГОДАРЯ ,
за труда !

Явно не само при мен е така , и при теб не влиза в прекъсване .

Автор:  the_electronic_m@n [ Чет Мар 18, 2010 10:49 pm ]
Заглавие: 

За симулация е нормално нещо да не се получава както би се получило в действителност, поради простата причина, че се използват разни математически модели, които уж описват физическия процес... ето защо не съм привърженик на симулациите и още нещо, за мен симулациите са като да учиш първокласник да събира и изважда с калкулатор..., а за конкретната програма ако я изпробваш на истински чип, може и да се изненадаш, че работи :D

Автор:  amdatlon [ Пет Мар 19, 2010 12:15 am ]
Заглавие: 

Да съгласен съм за симулациите , добре са ми известни начина им на работа . То всяка верига се описва с N на брой диференциялни уравнения с много неизвестни , особено пък ако се моделират и преходни процеси - става една ....:lol:

Но това спестява много време и излишни програмирания на чипа .
Но някой път се получават много добре симулираните и реалните неща. Както при мен предишния проект които правих , от към поведение почти едно към едно с реалността :)
А за моята програма , както писах по горе , даже съм убеден че ще работи в действителност :)
, но както и да е .... ще се опитам по друг начин .
Благодаря ви за вниманието :)

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