من با مکیکرو مگا 16 8 تا ADC را میخوانم و هر وقت مقدار هر کدام از ADC ها از 700 بیشتر شد یک متن روی ال سی دی کاراکتری نشان بده امامیکرو درست این کار را انجام نمی ده! گاهی وقتها گیر می کنه بعد درست می شود دلیل watchdog نیست چون هنگ نمیکند و ریست نمیشه ! خروجی 8 تا ترانس بعد از یکسو شدن به ADC ها وصل شده و مقدار ولتاژ روی adc ها ممکنه هر لحظه تغییر می کنه
اطلاعیه
Collapse
No announcement yet.
مشکل در خواندن 8 تا ADC
Collapse
X
-
پاسخ : مشکل در خواندن 8 تا ADC
نوشته اصلی توسط tarashehمن با مکیکرو مگا 16 8 تا ADC را میخوانم و هر وقت مقدار هر کدام از ADC ها از 700 بیشتر شد یک متن روی ال سی دی کاراکتری نشان بده امامیکرو درست این کار را انجام نمی ده! گاهی وقتها گیر می کنه بعد درست می شود دلیل watchdog نیست چون هنگ نمیکند و ریست نمیشه ! خروجی 8 تا ترانس بعد از یکسو شدن به ADC ها وصل شده و مقدار ولتاژ روی adc ها ممکنه هر لحظه تغییر می کنه
دیدگاه
-
پاسخ : مشکل در خواندن 8 تا ADC
سلام
اگه از بیسکام استفاده میکنی بیسکام یکی از نقطه ضعفاش اینه که میخواد مثلا بهینه سازی بکنه خیر سرش واسه همین اگه نوشتی start adc دیگه هیچ جای برنامه ننویس stop adc و start adc چون دیگه Adc از کار میافته و روی تابع getadc گیر میکنه
اگه واقعا نیاز به قطع و وصل Adc داری باید رجیستر ها رو دستی تنظیم کنی مثل اسمبلی یا سیبه وبلاگم سر بزنید
دیدگاه
-
چگونگی خواندن ADC در محیط کدویژن
سلام
در کدویژن چطور می شه از ADC ها استفاده کرد.
یه ولتاژی رو که بین 0 تا 5 پیوسته است میخام بدم به ورودی (مثلا فرض کنید پایه ی وسطی پتانسیومتر) حالا چه جوری به کدویژن بفهمونم که اینو بخون!
اگه لطف کنید سینتکس رو کامل بنویسین.
ممنونبابا هی این امضای منو پاک نکن! حساسیت داری؟!
"سبز سبــــزم ریشه دارم! من درختــــــــــــی استوارم!"
دیدگاه
-
پاسخ : مشکل در خواندن 8 تا ADC
سلام .................
اگه با C کار میکنید سینتکس شما عبارت میشه از ..
read_adc() که توی پرانتز باید کانال مورد نظرتون رو قید کنید .. کانال چیه؟ همون پایه ای از پورت میکرو که به ADC اختصاص داده شده .. چجوری اختصاص داده شده؟ از منوی CodeWizard تنظیمش میکنیم .. چطور تنظیمش میکنیم؟ یه جستجو در سایت انجام بدید .. موفق باشید ..دوستان! مدتی کمتر به سایت میام ..
دیدگاه
-
پاسخ : مشکل در خواندن 8 تا ADC
این برنامه رو آماده داشتم
ADC با دقت 8 بیت و با فرکانس یادم نیست چقدر
هم رو LCD مینویسه هم رو پورت D
#include <mega32.h>
#include <delay.h>
#include <stdlib.h>
#include <stdio.h>
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x15 ;PORTC
#endasm
#include <lcd.h>
float input;
#define ADC_VREF_TYPE 0x60
// Read the 8 most significant bits
// of the AD conversion result
unsigned char read_adc(unsigned char adc_input)
{
ADMUX=adc_input|ADC_VREF_TYPE;
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCH;
}
char str[10];
void main(void)
{
PORTD=0x00;
DDRD=0xFF;
// ADC initialization
// ADC Clock frequency: 1000.000 kHz
// ADC Voltage Reference: AVCC pin
// Only the 8 most significant bits of
// the AD conversion result are used
ADMUX=ADC_VREF_TYPE;
ADCSRA=0x82;
lcd_init(16);
lcd_putsf("ADC Started"
input = 0b00001010;
PORTD = input;
delay_ms(1000);
while (1)
{
lcd_clear();
input=read_adc(0);
input=(input*5/256);
ftoa(input,2,str);
lcd_puts(str);
delay_ms(200);
PORTD = input;
};
}
دیدگاه
دیدگاه