Использую 14 режим Fast PWM. привожу код:
Код: Выделить всё
program pwm;
var
Duty: word;
Procedure DutyPWM(const ADuty: word);
begin
OCR1AH :=hi(ADuty);
OCR1AL :=lo(ADuty);
end;
procedure INT0_ISR; iv IVT_ADDR_INT0;
begin
Duty:=Duty+1000;
DutyPWM(Duty);
end;
procedure INT1_ISR; iv IVT_ADDR_INT1;
begin
Duty:=Duty-1000;
DutyPWM(Duty);
end;
begin
DDRB.1 := 1; // настраивает порт на вывод (OC1A)
// http://content.mail.ru/arch/14905/5453491.html
// x = 50Гц
// ICR1=(1/x)/(1/(ftact/prescale))
// ICR1=(1/50)/(1/(8000000/8))=20000;
ICR1H := 0x4E; // ICR1 = 20000;
ICR1L := 0x20;
// Настраиваем работу ШИМ
// Fast PWM mode 14 TOP=ICR1;
// Делитель: 8
TCCR1A := (1 shl WGM11) or (1 shl COM1A1);
TCCR1B := (1 shl WGM12) or (1 shl WGM13) or (1 shl CS11);
Duty :=10000; // ICR1/2
DutyPWM(Duty);
GICR := (1 shl INT0) or (1 shl INT0); //разрешаем прерывание int0 и int1
MCUCR := (1 shl ISC00) or (1 shl ISC01) or (1 shl ISC10) or (1 shl ISC00); // условие срабатывания int0,int1 для кнопки 1 и 2 растущий фронт
SREG_I_bit := 1; //Разрешить прерывания
while TRUE do
end.Подскажите что не так или так и должно быть?? Прошу в даташит не отправлять - ибо там ничего не увидел, поэтому и обратился сюда )
PS
Задача сводилась к тому что-бы иметь кварц на 8Мгц и шим 50Гц. Кроме как 14 режима в голову больше ничего не приходит (опыта мало).


