Радио

Прерывания в ATMEGA16

VibraBrov 04-05-2013 01:48

Пользовался кодвижн ВИЗАРД чтобы проверить правильно ли настроил прерывания, и всё сходится. Значения в портах те же.

Ещё там идёт вот такое включение прерываний ассемблерное:
#asm("sei")

зачем? Почему? почему прерывания включаются этой командой, а не какой-нибудь другой? да и если включаются, то почему не работают? Я в замешательстве.

лев-помещик 04-05-2013 10:09

а как ты узнаёшь что не работает ?
code:

#asm("sei")


потому что нет на Си (Code vision)команды разрешить прерывания

и вообще обработчик на CodeVision выглядит так:

code:
interrupt [EXT_INT0] void ext_int0_isr(void)
{
// тут обработчик

}


VibraBrov 04-05-2013 10:26

quote:
Originally posted by лев-помещик:
а как ты узнаёшь что не работает ?

ДА, всё верно, так он и выглядит, у меня он туда не входит. Не входит в обработчик. Узнаю я это, записав команду PORTC | =0x01; в обработчик, а потом моделируя в протеусе.

лев-помещик 04-05-2013 10:28

а, ты виртуальных дел мастер..
ну виртуаль дальше..
VibraBrov 04-05-2013 10:39

quote:
Originally posted by лев-помещик:
а, ты виртуальных дел мастер..
ну виртуаль дальше..

у вас тут на форуме "Радио" принято так разговаривать?

Я бы и с радостью проверить на живом аппарате, но для этого придётся немало потратить времени на создание платы, её разводку, поиск деталей, пайку.
Мне этот проект нужен лишь для сдачи курсового. И, как мне кажется, если уж протеус не вызывает обработчик, то в реальности всё будет ещё с большим набором проблем (хотя бы тот же дребезг кнопок).

П.С. отладочной платы, где нужно просто воткнуть элементы в нужные дырки, у меня тоже нет.

лев-помещик 04-05-2013 13:09

давай продам тебе набор: программатор+микросхема atmega 16A + мини макетка =
300р.
И всё у тебя будет хорошо.

Aleksey_N 05-05-2013 16:43

quote:
И всё у тебя будет хорошо.

улыбнуло
Автор, нафига "брать курсач на элементной базе", в которой ни фига не сечете?
VibraBrov 05-05-2013 18:51

quote:
Originally posted by Aleksey_N:
Автор, нафига "брать курсач на элементной базе"

что значит на элементной базе?
Тут разве много элементов надо нахерачить? Это выч техника здесь и рассчётов схем почти нет. Надо просто сеть спроектировать в которой всё бы передавалось по любому интерфейсу. Я выбрал SPI.

Что значит брать курсач?
"товарищь препод, я не буду брать этот курсач, он мне не нравится, и вы, кстати, тоже не нравитесь." Так что ли?)


quote:
Originally posted by Aleksey_N:
в которой ни фига не сечете?

Это в универе задали. Да и не стоит говорить что совсем не секу. Просто на работе программирую в IAR и там ARM-овские процы. В кодвижене почти не работал, но вот припёрло.

П.С. не вижу чтобы кто-нибудь из здешних умников знал в чем ошибка и смог помочь, однако написать, что я не шарю успевают. Похвально.

gypar 05-05-2013 22:26

инициализация прерывания в авр студии 6.0

void interrupt_init(void)
{
//включение прерывания INT1 по нисходящему фронту и INT0 по восходящему фронту
MCUCR = 1<<ISC11 | 0<<ISC10 | 1<<ISC01 | 1<<ISC00;
//включение прерываний
GICR = 1<<INT0 | 1<<INT1;
}

VibraBrov 06-05-2013 12:04

quote:
Originally posted by gypar:
инициализация прерывания в авр студии 6.0

void interrupt_init(void)
{
//включение прерывания INT1 по нисходящему фронту и INT0 по восходящему фронту
MCUCR = 1<<ISC11 | 0<<ISC10 | 1<<ISC01 | 1<<ISC00;
//включение прерываний
GICR = 1<<INT0 | 1<<INT1;
}


Благодарю!!