Без описания |
Поиск в теме | Версия для печати |
sibiryak |
Отправлено: 04 Июня, 2013 - 08:18:10
|

Главнокомандующий

Сообщений всего: 248
Дата рег-ции: Февр. 2011
|
Никак не могу понять работу этих прерываний от таймера и внешних. Запустить могу, а как с ними работать ну никак не пойму.
В общем нужно посчитать внешние прерывания за определенный период ( обороты чего либо ).
Есть 8ми разрядный таймер работает в режиме 4Мгц/64 по завершению складывает значения в регистр. В итоге регистр прокручивается около секунды.
А обороты которые надо посчитать равны от 5 об/сек до 100об/сек. Я так понимаю нужно посчитать сколько будет прерываний за один прогон регистра от таймера...
Вот собственно наброски.
CODE:
.NOLIST
.INCLUDE "m8def.inc" ; ATMEGA8
.LIST
.def temp = r16
.def temp1= r17
.def temp4= r18
.def count = r19 ;счетчик таймера
.def flag = r20
.DSEG
.ORG 0X0060
.CSEG
.ORG $0000
rjmp RESET
rjmp EXT_INT0 ;внешнее прерывание INT0
reti // INT1
reti // TIMER2 COMP
reti // TIMER2 OVF
reti // TIMER1 CAPT
reti // TIMER1 COMPA
reti // TIMER1 COMPB
reti // TIMER1_OVF
rjmp TIMER0_OVF ;прерывание таймера 0
reti // SPI
reti // UART
reti // UART
reti // UART
reti // ADC_INT
reti // EE_RDY
reti // ANA_COMP
reti // TWI
reti // SPM_RDY
EXT_INT0:
ldi flag,0b00000001
reti
RESET:
ldi temp, HIGH(RAMEND) ; Initiiere MSB Stapel
out SPH,temp
ldi temp, LOW(RAMEND) ; Initiiere LSB Stapel
out SPL,temp
;инициализация портов
ldi temp,0xff ; ïîðò Â âûõîä
out DDRB,temp
ldi temp,0x00
out PORTB,temp
ldi temp,0x00 ; ïîðò D âõîä
out ddrd,temp
; выкл компаратор
ldi temp,1<<ACD
out ACSR,temp
;инициализация таймера
ldi temp,0b00000001
out timsk,temp
ldi temp,0b00000011
out tccr0, temp
ldi flag,0b00000000
;инициализация прерывания от int0
ldi temp, 1<<ISC01 ;по спаду 1-0
out MCUCR,temp
ldi temp, 1<<INT0 ;разрешаем int0
out GICR, temp
sei
main:
sbrs flag,0
rjmp main
; прерывание по таймеру
TIMER0_OVF:
inc count ; инкреметируем count
reti
|
|
|
|
Поиск в теме | Версия для печати |
Страниц (2): [1] 2 » |
« Программирование микроконтроллеров » |
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
|
  |
|
|
|