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

Къде съгреших
http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=4137
Страница 1 от 1

Автор:  zaprqn [ Вто Май 01, 2007 10:13 pm ]
Заглавие:  Къде съгреших

Цял ден чета, пробвах какво ли не, пущината не иска.

Ето ми го кода:
Код:
#int_EXT
EXT_isr()
{
#asm
nop
#endasm
}

#int_TIMER1
TIMER1_isr()
{


#asm
nop
#endasm}



void main()
{

   setup_spi(FALSE);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_EXTERNAL|T1_DIV_BY_1|T1_CLK_OUT);
   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);
   enable_interrupts(INT_EXT);
   enable_interrupts(INT_TIMER1);
   enable_interrupts(GLOBAL);
   setup_oscillator(OSC_4MHZ|OSC_INTRC);


while(1) {
#asm
nop
#endasm
}


}



Симулирам в протеус по долната схема. Цъкам бутона, но програмата не влиза в прекъсването. Освен това ТМР1 изобщо не се инкрементира - седи си в тая позиция. Ако го нулирам си седи 0.
Дали проблема може да е във протеуса(макар че не ми се вярва), или аз съм помазал нещо и не мога да си открия грешката?

П.С. Забравих да снимам, че в watchwindow-a GIE и INTE са сетнати и пак не иска. За прекъсването пробвах да е H_TO_L, после L_TO_H, пробвах и да разменя местата на масата и плюса, но не ще да прекъсне и това си е.

Прикачени файлове:
proteus.jpg
proteus.jpg [ 85.12 KiB | Прегледано 988 пъти ]

Автор:  Predator_MF [ Вто Май 01, 2007 11:11 pm ]
Заглавие: 

В инициализацията добави
Код:
ext_int_edge( H_TO_L );   // Sets up EXT

:)

Автор:  zaprqn [ Вто Май 01, 2007 11:22 pm ]
Заглавие:  Re: Къде съгреших

zaprqn написа:
За прекъсването пробвах да е H_TO_L, после L_TO_H, пробвах и да разменя местата на масата и плюса, но не ще да прекъсне и това си е.

Автор:  Predator_MF [ Сря Май 02, 2007 6:47 am ]
Заглавие: 

Може би трябва да го напишеш след като установиш RB0 като вход :D

Автор:  zaprqn [ Сря Май 02, 2007 8:21 pm ]
Заглавие: 

Ми той е сетнат по дефолт. Сетвах го и в кода, пак не става (протеуса го показва като сетнат бит, но в прекъсване не влиза). Сетвах го даже и като изход :roll: , но както се досещате ефект никакъв. Правих същото и с RB7 i RB6, но ТМР1 не се пълни. Някой има ли по-стара версия на протеус да ми прати ?

Автор:  zaprqn [ Сря Май 02, 2007 9:07 pm ]
Заглавие: 

Установих че е от протеуса. Със същия код на 16ф877 тръгна външното прекъсване. С ТМР1 за съжаление не се оправи

Автор:  Predator_MF [ Сря Май 02, 2007 10:14 pm ]
Заглавие: 

Коя ти е версията... В Proteus съм ползвал доста PIC-ове и много пъти съм симулирал точно EXT прекъсване, не съм виждал проблеми там

Автор:  zaprqn [ Сря Май 02, 2007 11:12 pm ]
Заглавие: 

6.9 SP4. Ей ти кода, ето ти схемата. Пробвай ако искаш точно с този пикльо (16ф87) дали при теб има бъг, при мен със сигурност има :)

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