سلام
وقت بخیر دوستان
میخوام یه ساعت دقیق با کریستال 32.768KHZ متصل به TOSC1 و TOSC2 با استفاده از تایمر 2 میکرو AVR 2560 بسازم
از تقسیم کلاک 128 استفاده کردم
باید این تایمر آسنکرون باشه تا CPU میکرو درگیر اون نباشه
نیاز به OCR و اینتراپت OCR ندارم
پاییه های OC هم نمیخوام خروجی بدن
فقط میخوام از اینتراپت OVER FLOW استفاده کنم برای شمارش ثانیه ها
تو رجیستراش اشکال عمده دارم اخه خیلی وارد نیستم
تشکر
اضافه شده در تاریخ :
// Timer/Counter 2 initialization
// Clock source: Crystal on TOSC1 pin
// Clock value: PCK2/128
// Mode: Normal top=0xFF
// OC2A output: Disconnected
// OC2B output: Disconnected
GTCCR=0x00;
ASSR=0x60; //(0<<EXCLK) | (1<<AS2) | (0<<TCN2UB);
TCCR2A=(0<<COM2A1) | (0<<COM2A0) | (0<<COM2B1) | (0<<COM2B0) | (0<<WGM21) | (0<<WGM20);
TCCR2B=(0<<WGM22) | (0<<CS22) | (0<<CS21) | (1<<CS20);
TIFR2=0x01;
TCNT2=0x00;
OCR2A=0x00;
OCR2B=0x00;
اضافه شده در تاریخ :
// Timer/Counter 2 Interrupt(s) initialization
TIMSK2=(0<<OCIE2B) | (0<<OCIE2A) | (1<<TOIE2);
اضافه شده در تاریخ :
{
//while(ASSR & 0x1F);
char lcd_buff[32];
//delay_ms(10);
if(Second == 59)
{
Second = 0;
if(Minute == 59)
{
Minute = 0;
if(Hour == 24)
{
Hour = 0;
}
else
{
Hour++;
}
}
else
{
Minute++;
}
}
else
{
Second++;
}
sprintf(lcd_buff, "%d : %d : %d", Hour, Minute, Second);
lcd_gotoxy(0, 3);
lcd_puts(" "
;
lcd_gotoxy(0, 3);
lcd_puts(lcd_buff);
}
وقت بخیر دوستان
میخوام یه ساعت دقیق با کریستال 32.768KHZ متصل به TOSC1 و TOSC2 با استفاده از تایمر 2 میکرو AVR 2560 بسازم
از تقسیم کلاک 128 استفاده کردم
باید این تایمر آسنکرون باشه تا CPU میکرو درگیر اون نباشه
نیاز به OCR و اینتراپت OCR ندارم
پاییه های OC هم نمیخوام خروجی بدن
فقط میخوام از اینتراپت OVER FLOW استفاده کنم برای شمارش ثانیه ها
تو رجیستراش اشکال عمده دارم اخه خیلی وارد نیستم
تشکر
اضافه شده در تاریخ :
// Timer/Counter 2 initialization
// Clock source: Crystal on TOSC1 pin
// Clock value: PCK2/128
// Mode: Normal top=0xFF
// OC2A output: Disconnected
// OC2B output: Disconnected
GTCCR=0x00;
ASSR=0x60; //(0<<EXCLK) | (1<<AS2) | (0<<TCN2UB);
TCCR2A=(0<<COM2A1) | (0<<COM2A0) | (0<<COM2B1) | (0<<COM2B0) | (0<<WGM21) | (0<<WGM20);
TCCR2B=(0<<WGM22) | (0<<CS22) | (0<<CS21) | (1<<CS20);
TIFR2=0x01;
TCNT2=0x00;
OCR2A=0x00;
OCR2B=0x00;
اضافه شده در تاریخ :
// Timer/Counter 2 Interrupt(s) initialization
TIMSK2=(0<<OCIE2B) | (0<<OCIE2A) | (1<<TOIE2);
اضافه شده در تاریخ :
{
//while(ASSR & 0x1F);
char lcd_buff[32];
//delay_ms(10);
if(Second == 59)
{
Second = 0;
if(Minute == 59)
{
Minute = 0;
if(Hour == 24)
{
Hour = 0;
}
else
{
Hour++;
}
}
else
{
Minute++;
}
}
else
{
Second++;
}
sprintf(lcd_buff, "%d : %d : %d", Hour, Minute, Second);
lcd_gotoxy(0, 3);
lcd_puts(" "

lcd_gotoxy(0, 3);
lcd_puts(lcd_buff);
}
دیدگاه