реклама на сайте
подробности

 
 
> Msp430 port1_vector
flamigo
сообщение Dec 22 2011, 21:01
Сообщение #1





Группа: Новичок
Сообщений: 5
Регистрация: 20-11-11
Пользователь №: 68 411



Всем доброй ночи.
Помогите пожалуйста разобраться. Не срабатывает прерывание от кнопки P1.3. Вроде все разрешил, обработчик прерывания присутствуют, а при нажатии на кнопку никакого результата.
CODE
#include "msp430g2231.h"
;******************************
ORG 0F800h
;******************************
RESETT MOV #0280h, SP
STOPWDT MOV.W #WDTPW+WDTHOLD, &WDTCTL
;******************************
MAIN

;******************************

BIS.B #BIT0+BIT6, &P1DIR ; as output
BIC.B #BIT3, &P1DIR ; as input
BIC.B #BIT6, &P1OUT ; off
BIC.B #BIT0, &P1OUT ; off

MOV.B #BIT3, &P1IE
MOV.B #BIT3, &P1IES

BIS.B #GIE, SR
EINT
JMP $
;******************************
; PORT 1 interrupted
;******************************
BUTTON:
BIC.B #BIT3, &P1IFG
XOR.B #BIT6, &P1OUT
RETI
;***Interrupts*****************
ORG 0FFFEh
DW RESETT

ORG PORT1_VECTOR
DW BUTTON

END
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
zhevak
сообщение Dec 22 2011, 23:24
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 723
Регистрация: 29-08-05
Из: Березовский
Пользователь №: 8 065



Сложно сказать. Код вполне рабочий, должен работать. (Мелкая придирка только к повторному разрешению прерываний -- eint это и есть команда bis.b #GIE, SR) На сколько я понял, это у Вас Launchpad? Джамперы на ЛЭД-ы установлены? А если Вы свою схему собирали, то может быть не обратили внимания, что на плате Launchpad кнопочка подтянута внешним резистором к питанию. А если у вас этого резистора нет, и при включении питяния на лапке будет нуль, то хоть зазамыкайся кнопкой эту лапку на землю -- единице-то неоткуда взяться. Должен быть резистор либо внешний, либо внутренний.

Я немного переписал Вашу прогу, проверил. У меня на Launchpad-е все работает. Может это Вам как-то поможет.
CODE

.include "MSP430F2001.inc"

.org CODE

Reset:
mov #STACK, SP
mov #(WDTPW + WDTHOLD), &WDTCTL

mov.b #0x41, &P1DIR ; as output
mov.b #0x00, &P1OUT ; ЛЭДы выкл
mov.b #0x08, &P1IE
mov.b #0x08, &P1IES

eint

Loop:
bis.b #LPM3, SR
jmp Loop:

ISR_Button:
bic.b #0x08, &P1IFG
xor.b #0x40, &P1OUT

reti

.org 0xFFE4
DW ISR_Button

.org 0xFFFE
DW Reset

.end

Я использую naken430asm (Линуксовый), поэтому синтаксис немного отличается. И еще незначительное отличие, у меня воткнута MSP430F2001.

Ссылку на свой блог, где я расписываю как начать работу с MSP430 я кину Вам в Личку.

Update:
Нифига не получилось -- у Вас ящик отключен.
За публикации ссылок тут наказывают, поэтому придется Вам самому погулить по словам zhevak и msp430.


--------------------
Хочешь рассмешить Бога -- расскажи ему о своих планах!
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th July 2025 - 00:44
Рейтинг@Mail.ru


Страница сгенерированна за 0.01384 секунд с 7
ELECTRONIX ©2004-2016