Сб сен 04, 2021 22:56:44
.cseg
.org 0x00
rjmp reset
.org 0x04
rjmp chnlA
.org 0x0C
rjmp chnlB
; ---------- Модуль инициализации ----------
reset:
ldi temp, RAMEND
out SPL, temp
ldi temp, 0x18 ; Инициализация порта РВ на вывод: PB3=1 (15) и PB4=1 (16)
out DDRB, temp
clr temp
out DDRD, temp ; Порт PD на ввод DDRD=0
out PORTB, temp ; Низкий уровень => отключаем динамик
ldi temp, 0x7F
out PORTD, temp ; Включение внутренних резисторов
ldi temp, 0x80 ; Выключение компаратора
out ACSR, temp
; ---------- Инициализация таймера/счетчика T1 ----------
clr temp
out TCCR1A, temp ; Отключаем каналы А, В
ldi YH, 0x0A
ldi YL, 0x8C
out OCR1BH, YH
out OCR1BL, YL
ldi XH, 0x12
ldi XL, 0x8C
out OCR1AH, XH
out OCR1AL, XL
ldi temp, 0x09
out TCCR1B, temp ; Режим СТС и предделитель 1
ldi temp, 0x60
out TIMSK, temp ; Маска прерываний: разрешены по совпадению канала А и В
out TIFR, temp ; Очищаем флаг совпадения по каналу А и В
sei ; Разрешение прерываний
; ---------- Конец модуля инициалиации ----------
loop: nop
rjmp loop
chnlB:
ldi ocrB, 0x10
out TCCR1A, ocrB ; 0x10 (канал В)
reti
chnlA:
ldi ocrA, 0x40
out TCCR1A, ocrA ; 0x40 (канал A)
reti
Вс сен 05, 2021 00:29:08
Вс сен 05, 2021 02:55:01
Вс сен 05, 2021 05:20:03
Вс сен 05, 2021 08:22:29
Вс сен 05, 2021 11:46:28
Вс сен 05, 2021 16:11:12
Вс сен 05, 2021 16:24:00
Вс сен 05, 2021 17:23:08
Пн сен 06, 2021 06:43:06
.include "tn2313Adef.inc"
.def temp=r16
;.def ocrA=r17
;.def ocrB=r18
.cseg
; .org 0x00
; rjmp reset
; .org 0x04
; rjmp chnlA
; .org 0x0C
; rjmp chnlB
; ---------- Модуль инициализации ----------
reset:
ldi temp, RAMEND
out SPL, temp
ldi temp, 0x18 ; Инициализация порта РВ на вывод: PB3=1 (15) и PB4=1 (16)
out DDRB, temp
clr temp
out DDRD, temp ; Порт PD на ввод DDRD=0
out PORTB, temp ; Низкий уровень => отключаем динамик
ldi temp, 0x7F
out PORTD, temp ; Включение внутренних резисторов
SBI ACSR,ACD ; Выключение компаратора
; ldi temp, 0x80 ; Выключение компаратора
; out ACSR, temp
; ---------- Инициализация таймера/счетчика T1 ----------
ldi YH, 0x0A
ldi YL, 0x8C
out OCR1BH, YH
out OCR1BL, YL
out OCR1AH, YH
out OCR1AL, YL
LDI R16,1<<WGM13|1<<WGM12;|1<<CS10 ; Режим сравнения ICR1 и предделитель 1
OUT TCCR1B,R16
LDI R16,1<<COM1A1|1<<COM1B1|1<<COM1A0|0<<COM1B0|1<<WGM11;|1<<WGM10
OUT TCCR1A,R16 ;противофазные импульсы A и B
; LDI R16,1<<COM1A1|1<<COM1B1|1<<COM1A0|1<<COM1B0|1<<WGM11;|1<<WGM10
; OUT TCCR1A,R16 ;синфазные импульсы A и B
ldi XH, 0x12
ldi XL, 0x8C
out ICR1H, XH
out ICR1L, XL
LDI R16,1<<WGM13|1<<WGM12|1<<CS10 ; Режим сравнения ICR1 и предделитель 1
OUT TCCR1B,R16
; ldi temp, 0x60
; out TIMSK, temp ; Маска прерываний: разрешены по совпадению канала А и В
; out TIFR, temp ; Очищаем флаг совпадения по каналу А и В
; sei ; Разрешение прерываний
; ---------- Конец модуля инициалиации ----------
loop:
rjmp loop
.EXIT
Пн сен 06, 2021 09:44:21
Пн сен 06, 2021 11:17:36
Пн сен 06, 2021 23:56:44
Вт сен 07, 2021 00:31:03
Вт сен 07, 2021 05:49:37
; ---------- Инициализация таймера/счетчика T1 ----------
LDI temp,1<<COM1A0|1<<COM1B0
; clr temp
out TCCR1A, temp ; Включить каналы А и В
;.
;.
;.
;.
chnlB:
; ldi ocrB, 0x10
; out TCCR1A, ocrB ; 0x10 (канал В)
reti
chnlA:
; ldi ocrA, 0x40
; out TCCR1A, ocrA ; 0x40 (канал A)
reti
Вт сен 07, 2021 11:42:48
Вт сен 07, 2021 12:54:44
Вт сен 07, 2021 21:21:47
Поэтому отцепляем пины от компараторов, переключаем их и снова цепляем к компараторам.
Если нужен полный автомат, то необходимо использовать что-то из режимов PWM.
Вт сен 07, 2021 22:56:54
Поэтому отцепляем пины от компараторов, переключаем их и снова цепляем к компараторам.
Вт сен 07, 2021 23:32:15