سلام به همه
لطف کنید منو یه راهنمایی کنید
یه برنامه نوشتم که توسط میکرو میاد یه خازن رو که با یه مقاومت سری هست شارژ میکنه و از لحظه اول شارژ کردن خازن یه تایمر شروع به شمارش میکنه
هروقت پایه مثبت مقایسه کننده آنالوگ به 63.2 درصد ولتاژمون میرسه میره تو وقفه و یه سری کد هارو اجرا میکنه ازجمله تایمر رو متوقف میکنه و مقدار تایمر و تعداد سرریز شدن رو نمایش میده اما همیشه این مقادیر 0 هستند !!!!!
مشکل من اینه که آخر کار که خازن ولتاژش به 3.16 ( 63.2 درصد 5 ولت ) میرسه مقدار تایمر 0 هست
با چند تا خازن کار کردم همین طوریه !!
چیکار کنم ؟
لطف کنید منو یه راهنمایی کنید
یه برنامه نوشتم که توسط میکرو میاد یه خازن رو که با یه مقاومت سری هست شارژ میکنه و از لحظه اول شارژ کردن خازن یه تایمر شروع به شمارش میکنه
هروقت پایه مثبت مقایسه کننده آنالوگ به 63.2 درصد ولتاژمون میرسه میره تو وقفه و یه سری کد هارو اجرا میکنه ازجمله تایمر رو متوقف میکنه و مقدار تایمر و تعداد سرریز شدن رو نمایش میده اما همیشه این مقادیر 0 هستند !!!!!
مشکل من اینه که آخر کار که خازن ولتاژش به 3.16 ( 63.2 درصد 5 ولت ) میرسه مقدار تایمر 0 هست
با چند تا خازن کار کردم همین طوریه !!
چیکار کنم ؟
کد:
#include <mega8.h>#include <delay.h>
#include <alcd.h>
#include <stdio.h>
unsigned char count=0,buff[32];
float time=0;
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
count++;
}
// Analog Comparator interrupt service routine
interrupt [ANA_COMP] void ana_comp_isr(void)
{
//TCCR0=0x00;
PORTD = 0x01;
sprintf(buff," C = %d T = %d ",count,TCNT0);
lcd_clear();
lcd_puts(buff);
//count = 0;
TCNT0=0x00;
}
void main(void)
{
PORTD=0x01;
DDRD=0x13;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
TCCR0=0x05;
TCNT0=0x00;
TIMSK=0x04;
// Analog Comparator initialization
// Analog Comparator: On
// Interrupt on Rising Output Edge
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x0B;
SFIOR=0x00;
// Alphanumeric LCD initialization
// Connections are specified in the
// Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
// RS - PORTC Bit 5
// RD - PORTB Bit 1
// EN - PORTC Bit 4
// D4 - PORTC Bit 3
// D5 - PORTC Bit 2
// D6 - PORTC Bit 1
// D7 - PORTC Bit 0
// Characters/line: 16
lcd_init(16);
#asm("sei")
while (1)
{
while ( !PIND.0 )
{
delay_ms(50);
while ( !PIND.0 );
delay_ms(500);
PORTD = 0x13;
TCCR0=0x05;
}
}
}







دیدگاه