PIC 16f877 Při delším kódu se mi sám resetuje.

Ahoj, Mám MCU 16f877A a compiler MikroC.
Používám RTC Ds1307 a pro měření tlaku čidlo freescale mp3H6115A a pro měření teploty Sensirion SHT11.
když na displeji zobrazuji čas a tlak, tka je vše vpořádku, ale jakmile začnu měřit k tomu ještě teplotu a tlak pomocí čidla SHT11, tak to vypadá jako by se mi MCU pořád dokola začal restartovat. na displeji se mi rychle problikává jen čas.
Nevíte někdo prosím vás co by mohlo být příčinou tohoto problému?

děkuji za všechny odpovědi.

[code]
void interrupt(void)
{
if(INTCON.T0IF) //přetekl timer?
{
cntr++ ;
INTCON.T0IF = 0 ;
}
}
void main(){
ADCON1= 0x82;
TRISA= 0xFF;
I2C1_Init(100000);
CMCON=0;
TRISC = 0xFF;
OPTION_REG=0x87; //preruseni od timeru 1:256
INTCON = 0xA0; //nastaveni

while(1)
{
//ctu cas z ds1307 a vypisu na lcd

if(cntr==1000){
INTCON.GIE = 0 ;
//ctu datum z ds1307 a vypisu na lcd
INTCON = 0xA0;
}

if(cntr==2000){
INTCON.GIE = 0 ;
//merim tlak pomoci A/D prevodniku s MP3H6115A a vypisu na lcd
INTCON = 0xA0;
}

if(cntr==3000){
INTCON.GIE = 0 ;
//merim teplotu a tlak s SHT11
INTCON = 0xA0;
cntr=0;
}
}

[/code] :frowning: :frowning: :frowning:

INTCON = 0xA0; tot je zbytocne to ti staci nastaviť na zaciatku ze chces pouzivat glogalne prerusenies pouzitim tmr0.

ak to vipinas tymto INTCON.GIE = 0 ; tak na zapnutie staci INTCON.GIE = 1 ; v preruseni nenastavuješ hodnotu TMR0 registra.

tak jsem to předělal, ale stále to nepomohlo :frowning: