К выходу PD5 подключена пищалка через транзисторный ключ.
Код: Выделить всё
/*****************************************************
CodeWizardAVR V2.04.4a Advanced
Chip type : ATmega644
Program type : Application
AVR Core Clock frequency: 8,000000 MHz
Memory model : Small
External RAM size : 0
Data Stack size : 1024
*****************************************************/
#include <mega644>
......
#include <delay>
void beep(unsigned char fr) ;
void main(void)
{
// Crystal Oscillator division factor: 1
#pragma optsize-
CLKPR=0x80;
CLKPR=0x00;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif
PORTA=0x00;
DDRA=0x00;
PORTB=0x00;
DDRB=0xf8;
PORTC=0x00;
DDRC=0x01;
PORTD=0x00;
DDRD=0xe0;
LCD_OFF;
TCCR0A=0x00;
TCCR0B=0x00;
TCNT0=0x00;
OCR0A=0x00;
OCR0B=0x00;
TCCR1A=0x80;
TCCR1B=0x0B;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x10;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
ASSR=0x00;
TCCR2A=0x00;
TCCR2B=0x00;
TCNT2=0x00;
OCR2A=0x00;
OCR2B=0x00;
EICRA=0x00;
EIMSK=0x00;
PCICR=0x00;
TIMSK0=0x00;
TIMSK1=0x00;
TIMSK2=0x00;
ACSR=0x80;
ADCSRB=0x00;
// Global enable interrupts
//#asm("sei")
while (1)
{
......
beep(64) ;
......
}
};
void beep(unsigned char fr)
{
OCR1AL = fr ;
TCCR1A = 0x40 ;
delay_ms(150) ;
TCCR1A = 0x80 ;
}
вот в таком виде звука нет.
если в функции beep изменить задержку:
Код: Выделить всё
...
delay_ms(1000) ;
...
то бипер гудит очень коротко, но явно намного меньше секунды.
Может кто подскажет, что я делаю не так?
Спасибо!