پاسخ : خواندن سطح ولتاژ با مبدل آنالوگ به دیجیتال میکرو
سلام مجدد
کدی که من نوشتم
[حالا نمیدونم درست دراومده یا نه ولی موقع کامپایل بهم ارور میدخ که نتونسته فایلی رو ار atmel باز کنه
ممنون
سلام مجدد
کدی که من نوشتم
کد:
[CENTER][LEFT]Chip type : ATmega16A Program type : Application AVR Core Clock frequency: 8/000000 MHz Memory model : Small External RAM size : 0 Data Stack size : 256 *******************************************************/ #include <mega16a.h> #include <delay.h> #define ADC_VREF_TYPE ((0<<REFS1) | (0<<REFS0) | (0<<ADLAR)) /* ????? ?? ???? adc ?? ???? ??? ?????? ?? ???????? adc ?? ?? 7 ?? 16 ??????? ????? ?? */ unsigned int read_adc(unsigned char adc_input) { ADMUX=adc_input | ADC_VREF_TYPE; delay_us(10); ADCSRA|=(1<<ADSC); while ((ADCSRA & (1<<ADIF))==0); ADCSRA|=(1<<ADIF); return ADCW; } void main(void) { float i , volt ; DDRA=(0<<DDA7) | (0<<DDA6) | (0<<DDA5) | (0<<DDA4) | (0<<DDA3) | (0<<DDA2) | (0<<DDA1) | (0<<DDA0); PORTA=(0<<PORTA7) | (0<<PORTA6) | (0<<PORTA5) | (0<<PORTA4) | (0<<PORTA3) | (0<<PORTA2) | (0<<PORTA1) | (0<<PORTA0); //DDRC=(0<<DDC7) | (0<<DDC6) | (0<<DDC5) | (0<<DDC4) | (0<<DDC3) | (0<<DDC2) | (0<<DDC1) | (0<<DDC0); PORTC=(0<<PORTC7) | (0<<PORTC6) | (0<<PORTC5) | (0<<PORTC4) | (0<<PORTC3) | (0<<PORTC2) | (0<<PORTC1) | (0<<PORTC0); ADMUX=ADC_VREF_TYPE; /* ?? ?? ???? ?? ??????? ?? ?? ???? ???????? ????? ?? ???? adc ?? ?? 28 ?? 30 ????????? ????? ?? */ ADCSRA=(1<<ADEN) | (0<<ADSC) | (0<<ADATE) | (0<<ADIF) | (0<<ADIE) | (1<<ADPS2) | (0<<ADPS1) | (1<<ADPS0); SFIOR=(0<<ADTS2) | (0<<ADTS1) | (0<<ADTS0); while (1) { i=read_adc(0); // i ?????? ???? ??? 0 ?? 1023 ?? ???? ????? ????? ????? ?????? ??? ?? ??? ????? ??? ? ????? ?? ?? ????? // volt=(i*5)/1023 ; // ????? ????? ??? ?????? ??? ??? 0 ?? 1023 ?? ?? ???? ? 0 ?? 5 ????? ?? ??? // if (volt<0.9){ PORTC.0=1 ; } }[/LEFT] [FONT=Yekan]}[/FONT][/CENTER][FONT=Yekan][/FONT]
[حالا نمیدونم درست دراومده یا نه ولی موقع کامپایل بهم ارور میدخ که نتونسته فایلی رو ار atmel باز کنه
ممنون
دیدگاه