Отговори на тема  [ 8 мнения ] 
Къде съгреших 
Автор Съобщение
Ранг: Новодошъл
Ранг: Новодошъл

Регистриран на: Сря Яну 24, 2007 11:00 pm
Мнения: 158
Мнение Къде съгреших
Цял ден чета, пробвах какво ли не, пущината не иска.

Ето ми го кода:
Код:
#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 | Прегледано 986 пъти ]
Вто Май 01, 2007 10:13 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Окт 07, 2004 1:22 pm
Мнения: 1949
Местоположение: София
Мнение 
В инициализацията добави
Код:
ext_int_edge( H_TO_L );   // Sets up EXT

:)


Вто Май 01, 2007 11:11 pm
Профил
Ранг: Новодошъл
Ранг: Новодошъл

Регистриран на: Сря Яну 24, 2007 11:00 pm
Мнения: 158
Мнение Re: Къде съгреших
zaprqn написа:
За прекъсването пробвах да е H_TO_L, после L_TO_H, пробвах и да разменя местата на масата и плюса, но не ще да прекъсне и това си е.


Вто Май 01, 2007 11:22 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Окт 07, 2004 1:22 pm
Мнения: 1949
Местоположение: София
Мнение 
Може би трябва да го напишеш след като установиш RB0 като вход :D


Сря Май 02, 2007 6:47 am
Профил
Ранг: Новодошъл
Ранг: Новодошъл

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


Сря Май 02, 2007 8:21 pm
Профил
Ранг: Новодошъл
Ранг: Новодошъл

Регистриран на: Сря Яну 24, 2007 11:00 pm
Мнения: 158
Мнение 
Установих че е от протеуса. Със същия код на 16ф877 тръгна външното прекъсване. С ТМР1 за съжаление не се оправи


Сря Май 02, 2007 9:07 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Окт 07, 2004 1:22 pm
Мнения: 1949
Местоположение: София
Мнение 
Коя ти е версията... В Proteus съм ползвал доста PIC-ове и много пъти съм симулирал точно EXT прекъсване, не съм виждал проблеми там


Сря Май 02, 2007 10:14 pm
Профил
Ранг: Новодошъл
Ранг: Новодошъл

Регистриран на: Сря Яну 24, 2007 11:00 pm
Мнения: 158
Мнение 
6.9 SP4. Ей ти кода, ето ти схемата. Пробвай ако искаш точно с този пикльо (16ф87) дали при теб има бъг, при мен със сигурност има :)


Сря Май 02, 2007 11:12 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 8 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 2 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни