Разработка, производство и продажа радиоэлектронной аппаратуры
|
Требуется программист в Зеленограде - обработка данных с датчиков; ColdFire; 40 тыс.
e-mail: jobsmp@pochta.ru
|
Что-то в полночь запутался. Основной цикл не работает..(( Не могу понять где накосячил....
Отправлено
Fantomas 28 апреля 2009, г. 14:05
.include "m8def.inc"
.def TempL = r16 ; присваиваем регистру R16 имя TempL
.def TempH = r17 ; присваиваем регистру R17 имя TempH
.def Temp0 = r18 ; Temp0
.def Temp1 = r19 ; Темр1
.def Ir_Rad = r20 ; IR Radiation
.def Ir_Dtc = r21 ; IR Detected
.def LedCCn = r22 ; Led C Change
.def TMR0L = r23 ;
.def TMR0C = r24 ;
.def TMR0T = r25 ;
.cseg
.org 0
rjmp RESET
rjmp INT_0
rjmp INT_1
rjmp TIMER2_COMP
rjmp TIMER2_OVF
rjmp TIMER1_CAPT
rjmp TIMER1_COMPA
rjmp TIMER1_COMPB
rjmp TIMER1_OVF
rjmp TIMER0_OVF
rjmp SPI_STC
rjmp USART_RXC
rjmp USART_UDRE
rjmp USART_TXC
rjmp ADC_
rjmp EE_RDY
rjmp ANA_COMP
rjmp TWI
rjmp SPM_RDY
;RESET:
;INT_0:
INT_1:
TIMER2_COMP:
;TIMER2_OVF:
TIMER1_CAPT:
TIMER1_COMPA:
TIMER1_COMPB:
TIMER1_OVF:
;TIMER0_OVF:
SPI_STC:
USART_RXC:
USART_UDRE:
USART_TXC:
ADC_:
EE_RDY:
ANA_COMP:
TWI:
SPM_RDY:
reti
RESET: ;RESET
;=========================================INIT=========================================;
ldi r16,$00 ; Инициализируем стек
out SPH,r16
ldi r16,$60
out SPL,r16
; Define pull-ups and set outputs high
; Define directions for port pins
ldi Temp0,(1<<PB3)|(1<<PB2)|(1<<PB1)|(1<<PB0) ;Установка линий вывода (Высокого Уровня)
ldi Temp1,(1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0) ;Вывод ШИМ и ИК Диода
out PORTB,Temp0
out DDRB,Temp1
ldi Temp0,(0<<PC3)|(0<<PC2)|(0<<PC1)|(0<<PC0) ;Линии ввода АЦП
ldi Temp1,(0<<DDC3)|(0<<DDC2)|(0<<DDC1)|(0<<DDC0) ; АЦП
out PORTC,Temp0
out DDRC,Temp1
ldi Temp0,(1<<PD2) ;Линии ввода (2=INT0)
ldi Temp1,(0<<DDD2)
out PORTD,Temp0
out DDRD,Temp1
ldi Temp0,(0<<PUD) ; Разрешение Пулл-Апс
out SFIOR,Temp0
; ldi Temp0,(1<<WGM21)|(1<<WGM20)|(1<<COM21)|(1<<COM20)|(1<<CS21) ; инициализация ШИМ 2
; out TCCR2,Temp0
; INT0 Tunning
ldi Temp0,(1<<ISC01)|(1<<ISC00) ;int0 Interrupt on rising Edge
out MCUCR,Temp0
ldi Temp0,(1<<INT0) ;int0 enabled
out GICR,Temp0
;Тут будем инициализировать 8ми битный Таймер0
ldi Temp0,(1<<CS00) ;установить тактовый сигнал = CK/1
out TCCR0,Temp0
ldi Temp0,(1<<TOIE2)|(1<<TOIE0) ;разрешить прерывания нулевого компаратора
out TIMSK,Temp0
ldi Temp0,0b00000000
out TCNT0,Temp0
;Тут будем инициализировать 16и битный Таймер1
ldi tempL,$A1 ; инициализация таймер/счетчика Т1
out TCCR1A,tempL
ldi tempL,(1<<CS12)|(1<<CS10) ; Делитель таймера /1024 от тактовой
out TCCR1B,tempL
;Тут будем инициализировать 8ми битный Таймер2
ldi Temp0,(1<<CS20) ;установить тактовый сигнал = CK/1
out TCCR2,Temp0
ldi Temp0,0b00000000
out TCNT2,Temp0
;Тут будем пытаться инициализировать ШИМ
ldi tempH,$00 ; Заносим значение $00E0 в регистр OCR1A
out OCR1AH,tempH
ldi tempL,$E0 ;
out OCR1AL,tempL
ldi tempH,$00 ; Заносим значение $0010 в регистр OCR1B
out OCR1BH,tempH
ldi tempL,$10 ;
out OCR1BL,tempL
ldi Ir_Rad,0b00000000 ; Обнуление Счётчика ИК
ldi Ir_Dtc,0b00000000 ; Обнуление Счётчика ИК
ldi TMR0T,0b00000000 ; Обнуление Счётчика Таймера
ldi LedCCn,0b00000000 ; Обнуление Состояния диода Колеса
cbi PortB,0
sei ; Разрешили прерывания
;=========================================MAIN=========================================;
Cycle:
sbi PortB,3
nop
nop
nop
cbi PortB,3
rjmp Cycle
TIMER2_OVF:
inc TMR0T
cpi TMR0T,TCNT1H
breq cmp
reti
cmp:
ldi TMR0T,0b00000000
cpi LedCCn,1
breq end
;cbi PortB,3
reti
end:
;sbi PortB,3
reti
INT_0: ;INT_0
cpi Ir_Rad,2
brsh incDTC
ldi Ir_Rad,0b00000000
reti
incDTC:
inc Ir_Dtc
ldi Ir_Rad,0b00000000
reti
TIMER0_OVF:
sbi PortB,0
nop
cbi PortB,0
inc Ir_Rad
reti
Составить ответ | Вернуться на конференцию.
Ответы
- Маё таблицо векторов: - Trashy (28.04.2009, 14:57:42 192.168.2.80,213.167.60.22, 1264 байт)
- Всем ОГРОМНОЕ СПАСИБО .. Трезво оценив обстановку и закоментировав прерывания всё заработало.. Буду копать..)) - Fantomas (28.04.2009, 14:57:37 85.238.124.54, пустое)
- Закаментируй весь срач и сделай прямой прыжок на цикел. Нопы желательно ставить с обеих сторон. Если заработает, начнёшь постепенно подключать по блоку... - Trashy (28.04.2009, 14:55:15 192.168.2.80,213.167.60.22, пустое)
- все отрезать последовательно и смотреть - whale (28.04.2009, 14:53:48 213.87.81.126, пустое)
- Порт В на вывод не настроен. - Палыч (28.04.2009, 14:31:9 192.168.21.6,87.117.3.81, пустое)
- Ответ: А что не работает то? - radist (28.04.2009, 14:14:2 192.168.0.57,217.114.9.154, 318 байт)