Движение мотора с помощью прерываний....

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

Движение мотора с помощью прерываний....

Сообщение agalarov-kamil » 25 ноя 2013, 12:23

Уважаемые форумчани, программирование увлекся недавно, и тут возникла у меня маленькая проблема, прошу помочь тем, кто сможет помочь :) :) :) .
Написал программу на прерывании. Суть в том что , при нажатии INT_0 или INT_1 мотор должен крутиться в одну из сторон, но по какой то причине, на выходе микроконтроллера сигнал с кнопок не идет, то есть моторы не реагируют, хотя в протеусе все нормально работает.
вот код
.include "m16def.inc"

.def Temp=R16
.def Temp1=R17
.def Temp2=R18
.def Temp3=R19
.def Temp4=R20

.cseg
.org 0

jmp RESET ; Reset Handler
jmp EXT_INT0 ; IRQ0 Handler
jmp EXT_INT1 ; IRQ1 Handler
jmp TIM2_COMP ; Timer2 Compare Handler
jmp TIM2_OVF ; Timer2 Overflow Handler
jmp TIM1_CAPT ; Timer1 Capture Handler
jmp TIM1_COMPA ; Timer1 CompareA Handler
jmp TIM1_COMPB ; Timer1 CompareB Handler
jmp TIM1_OVF ; Timer1 Overflow Handler
jmp TIM0_OVF ; Timer0 Overflow Handler
jmp SPI_STC ; SPI Transfer Complete Handler
jmp USART_RXC ; USART RX Complete Handler
jmp USART_UDRE ; UDR Empty Handler
jmp USART_TXC ; USART TX Complete Handler
jmp ADC_1 ; ADC Conversion Complete Handler
jmp EE_RDY ; EEPROM Ready Handler
jmp ANA_COMP ; Analog Comparator Handler
jmp TWSI ; Two-wire Serial Interface Handler
jmp EXT_INT2 ; IRQ2 Handler
jmp TIM0_COMP ; Timer0 Compare Handler
jmp SPM_RDY




;RESET: ; Reset Handler
;EXT_INT0: ; IRQ0 Handler
;EXT_INT1: ; IRQ1 Handler
TIM2_COMP: ; Timer2 Compare Handler
TIM2_OVF: ; Timer2 Overflow Handler
TIM1_CAPT: ; Timer1 Capture Handler
TIM1_COMPA: ; Timer1 CompareA Handler
TIM1_COMPB: ; Timer1 CompareB Handler
TIM1_OVF: ; Timer1 Overflow Handler
TIM0_OVF: ; Timer0 Overflow Handler
SPI_STC: ; SPI Transfer Complete Handler
USART_RXC: ; USART RX Complete Handler
USART_UDRE: ; UDR Empty Handler
USART_TXC: ; USART TX Complete Handler
ADC_1: ; ADC Conversion Complete Handler
EE_RDY: ; EEPROM Ready Handler
ANA_COMP: ; Analog Comparator Handler
TWSI: ; Two-wire Serial Interface Handler
EXT_INT2: ; IRQ2 Handler
TIM0_COMP: ; Timer0 Compare Handler
SPM_RDY:
reti


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Reset: ldi Temp, high(RAMEND); ?????? ???????? ?????????
out SPH,Temp ; установление стека
ldi Temp, low(RAMEND) ;
out SPL,Temp ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ldi Temp,0b11111111 ;установка порта А как вывод
out DDRA,Temp ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;
ldi Temp,0b00000000 ;;настройка порта D как ввода
out DDRD,Temp ;;
ldi Temp,0b11111111 ;;Соединяем подтягивающие резисторы
out PortD,Temp ;;Должно обязательно присутствовать при работе с кнопками
;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;
ldi Temp,0b11000000 ; включаем INT_0 и INT_1
out GICR,Temp ;
;
ldi Temp,0b00001010 ;Прерывание по спаду
out MCUCR,Temp ;
;;;;;;;;;;;;;;;;;;;;;;;;;;

ldi Temp, 0b11111111 ; записываем значение в Temp
out PortA, Temp ; отправляем на выход

sei ; разрешить прерывания

cicl: rjmp cicl ; безусловный переход на цикл


EXT_INT1:ldi Temp,0b00000010 ;установление начального значения первого бита
out PortA, Temp
rjmp in_1 ; перход на in_1

in_1: reti ;возврат из подпрограммы обработки прерываний

EXT_INT0:ldi Temp,0b00000100 ;установление начального значения первого бита
out PortA, Temp
rjmp in_2

in_2: reti
Вложения
Снимок.JPG
agalarov-kamil
 
Сообщения: 2
Зарегистрирован: 25 ноя 2013, 12:08

Re: Движение мотора с помощью прерываний....

Сообщение Myp » 25 ноя 2013, 12:53

а где светодиодик?
во первых с светодиодом любое устройство сразу становится веселее :)
а во вторых можно организовать отладку, чтобы убедиться что твой МК вобще жив и работает, создав процедуру мигания.
ну а там дальше вставляя мигание в нужное место программы легко найдёшь место которое не работает, по отсутствию мигания :)
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Re: Движение мотора с помощью прерываний....

Сообщение agalarov-kamil » 25 ноя 2013, 13:16

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



Только что со светодиодами проверил, работает идеально, но именно когла мотор подключаешь не работает.
agalarov-kamil
 
Сообщения: 2
Зарегистрирован: 25 ноя 2013, 12:08


Вернуться в Микроконтроллеры

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

cron