Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » Xmega внешнее прерывание не работает


Xmega внешнее прерывание не работает

Сообщений 1 страница 6 из 6

1

Компилирую в 2079

Не видит изменение входа

Код:
$regfile = "xm128a4udef.dat"
'$crystal = 32000000                                         '32MHz
$hwstack = 64
$swstack = 40
$framesize = 40

$lib "xmega.lib"
$external _xmegafix_clear
$external _xmegafix_rol_r1014
Config Osc = Enabled , 32mhzosc = Enabled                   'We use internal 32MHz
Config Sysclock = 32mhz , Prescalea = 1 , Prescalebc = 1_1  'Internal 32MHz, no prescaler

Config Porte.1 = Output                                    
Porte.1 = 1

On Porte_int0 Port_e_int0__isr
Enable Porte_int0 , Lo                                      
Enable Interrupts

Config Pine.0 = Input                                      

Config Xpin = Porte.0 , Outpull = Pullup , Sense = Falling 

Porte_int0mask = &B00000001                                

 Do

 Loop



Port_e_int0__isr:                                         
Toggle Porte.1
Waitms 500
Return

Отредактировано Menen (2016-04-27 16:00:40)

0

2

Я бы ещё строку:

Код:
Config Pine.0 = Input

Перенёс над:

Код:
On Porte_int0 Port_e_int0__isr
Enable Porte_int0 , Lo                                     
Enable Interrupts

0

3

Вечерком запишу в камень, отпишусь по результату.

0

4

А ещё, на сколько я помню, у ХМеги прерывание не по ногам идет, а по портам, т.е. назначается прерывание на весь порт, а там уже делается логика, смотришь от чего оно произошло.

Отредактировано RDW (2016-04-27 17:00:52)

0

5

Спасибо!
Немного подправил по высокому уровню, не знаю насколько правильно оформлено - но работает )

Код:
$swstack = 40
$framesize = 40

$lib "xmega.lib"
$external _xmegafix_clear
$external _xmegafix_rol_r1014
Config Osc = Enabled , 32mhzosc = Enabled
Config Sysclock = 32mhz , Prescalea = 1 , Prescalebc = 1_1

Config Porte.1 = Output
Porte.1 = 1

Config Pine.0 = Input
On Porte_int0 Port_e_int0__isr
Enable Porte_int0 , Hi
Config Priority = Static , Vector = Application , Hi = Enabled
Config Xpin = Porte.0 , Outpull = Pulldown , Sense = Rising
Porte_int0mask = &B00000001
Enable Interrupts

 Do
 !nop
 Loop



Port_e_int0__isr:
Toggle Porte.1
'Waitms 500
Return

0

6

Возник следующий вопрос, решил не открывать тему.
Как правильно активировать вход на аппаратный счетчик?

0


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » Xmega внешнее прерывание не работает