глюк Proteus при работе с ATMEL ATTINY45
Здравствуйте, уважаемые братья по разуму )
Такой вопрос может кто сталкивался. Отлаживаю программу в Proteus устройства на МК ATTINY45, использую таймер/счетчик 1 для формирования импульсов скважностью 2 на порте PB1. Регистром OCR1C задается частота импульсов. Регистром OCR1A по сути дела фаза сигнала. Суть в чем в AVR Studio все замечательно работает, при сравнении счетчика с регистром OCR1A происходит изменение состояния порта, а при последующем сравнении с регистром OCR1C происходит сброс счетчика в ноль и все по новой. При моделировании в Proteus, происходит сброс счетчика при сравнении и с регистром CCR1C (как положено) и, по непонятной причине, при сравнении с регистром CCR1A, чего по идеи быть не должно.
Кто подскажет с чем это связано и как лечить это?
Вот программка которой исследовал работу счетчика
.device ATtiny45
.nolist
.include "C:Program FilesAtmelAVR ToolsAvrAssemblerAppnotes n45def.inc"
.list
.def temp=R16
.def freq=R17
.CSEG
.org 0
rjmp RESET ; Сброс микроконтроллера
RESET:
ldi temp,0x60 ;
out SPL,temp ; Определяем начало стэка
ldi temp,0b00000011 ; PB0,PB1 - выход, остальные вход.
out DDRB,temp
clr temp
out PORTB,temp ; Подтягивающие резисторы отключены
ldi temp,0b01000000
out MCUCR,temp ; Настройка регистра управления
ldi temp,0b00000000
out GIMSK,temp ; Настройка маски прерываний
ldi temp,0b00000000
out GTCCR,temp
ldi temp,0b00000110
out PLLCSR,temp
ldi temp,0b10010010 ; коэф. дел = 2
out TCCR1,temp ; Насторйка счетчика TMR1
ldi freq,227 ; Загружаем значение частоты
out OCR1C,freq
ldi temp,5
out OCR1A,temp ; переключение PB1 осуществляется при переходе через 5
Metka:
wdr
rjmp Metka
|