سلام به همه
لطف کنید منو یه راهنمایی کنید
یه برنامه نوشتم که توسط میکرو میاد یه خازن رو که با یه مقاومت سری هست شارژ میکنه و از لحظه اول شارژ کردن خازن یه تایمر شروع به شمارش میکنه
هروقت پایه مثبت مقایسه کننده آنالوگ به 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; } } }
دیدگاه