PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : مشکل در نمایش اعداد اعشاری در AVRStudio



arm-mohsen-avr
03-01-2012, 00:24
با سلام
وقتی که از ADC مقادیر رو می خونم اون رو در یک متغیر float قرار می دم و بعد با استفاده از تابع sprintf مقادی رو روی lcd نماش می دهم ولی اعشاری را نشون نمیده...به صورت 212.00000
اگه میشه راهنمایی کنید. در ضمن با تغییر متغییر به double بازهم تغییری در خروجی ایجاد نشد.میکرو هم xmega32a4
این هم برنامه :

#include <avr/io.h>
#include "lcd.h"
#include <avr/delay.h>
#include <stdio.h>
#include "avr_compiler.h"
#include "adc_driver.h"
#define ADC_INPUT ADC_CH_MUXPOS_PIN1_gc

int main(void)
{
float ADC_result;
char lcd_buff[20];
lcd_init(LCD_DISP_ON);
ADC_CalibrationValues_Load(&ADCA);
ADC_ConvMode_and_Resolution_Config(&ADCA, ADC_ConvMode_Unsigned, ADC_RESOLUTION_12BIT_gc);
ADC_Reference_Config(&ADCA, ADC_REFSEL_VCC_gc);
ADC_Prescaler_Config(&ADCA, ADC_PRESCALER_DIV8_gc);
ADC_Ch_InputMode_and_Gain_Config(&ADCA.CH1,ADC_CH_INPUTMODE_SINGLEENDED_gc,ADC_CH_GA IN_1X_gc);
ADC_Ch_InputMux_Config(&ADCA.CH1, ADC_INPUT, 0);
ADC_Enable(&ADCA);
ADC_Wait_32MHz(&ADCA);
lcd_home();
lcd_puts("ADC0.1 LCD XMEGA");
_delay_ms(3000);
lcd_clrscr();
while(1)
{
ADC_Ch_Conversion_Start(&ADCA.CH1);
while(!ADC_Ch_Conversion_Complete(&ADCA.CH1));
ADC_result = ADC_ResultCh_GetWord(&ADCA.CH1);
sprintf(lcd_buff,"ADC=%4.4f",ADC_result);
lcd_gotoxy(0,1);
lcd_puts(lcd_buff);
_delay_ms(500);
lcd_clrscr();
}
}

arm-mohsen-avr
03-01-2012, 13:31
کسی نیست یه راهنمایی کنه :(:(:(:(

arm-mohsen-avr
04-01-2012, 00:15
دوستان کارم خیلی گیره کسی نیست من رو راهنمایی کنه :(:(:(:(:(:(

mrm
04-01-2012, 14:43
عددی که شما از adc میخونی که اعشاری نیست
اگر هم میخوای پد صفر اضافه بشه فکر کنم باید اینطوری بنویسی
sprintf(lcd_buff,"ADC=%04.4f",ADC_result);

sadmonew
04-01-2012, 23:10
عددی که شما از adc میخونی که اعشاری نیست

با سلام
دوستمون به نكته خوبي اشاره كردن كه متاسفانه من دقت نكرده بودم(خوب سرم شلوغه:alc:).
درسته عددي كه از ADC ميخونيم مقداري صحيح(integer) از 0 تا 1023 داره!! و مشخصه اعشاري نيست.

arm-mohsen-avr
05-01-2012, 14:30
با تشکر از دوستان حالا این عدد رو چطور به اعشاری تبدیل کنم ...
یعنی خروجی تابع ADC_ResultCh_GetWord(&ADCA.CH1 مقدار integer دارد ..؟؟
حالا چطور با اعشار تبدیل کنم ؟

sadmonew
05-01-2012, 21:28
یعنی خروجی تابع adc_resultch_getword(&adca.ch1 مقدار integer دارد ..؟؟
حالا چطور با اعشار تبدیل کنم ؟


با سلام
دوست عزيز همونطور كه دوستمون هم اشاره كردن خروجي adc يه عدد صحيح هستش.
اگه بخوايد مقدار ولتاژ خونده شده توسط adc رو بدست بياريد، در اين صورت عدد اعشاري ميشه.

madar
12-01-2012, 01:19
سلام
دوستان یه برنامه ساده تو محیط avr studio 5 می خواستم که پورت a از xmega 128 را چمشک بزند
متشکرم

sadmonew
12-01-2012, 19:26
سلام
دوستان یه برنامه ساده تو محیط avr studio 5 می خواستم که پورت a از xmega 128 را چمشک بزند
متشکرم
با سلام:hi:
دوست عزيز، ببخشيد اينو ميگم اما موضوع اين تاپيك با درخواست شما ارتباطي نداره.:0013:
يه سرچ كنيد تو نت پيدا مي كنيد.:wink:

armstk
12-01-2012, 21:57
سلام
دوستان یه برنامه ساده تو محیط avr studio 5 می خواستم که پورت a از xmega 128 را چمشک بزند
متشکرم

سلام
داخله سمپل های avr استدیو , قکر میکنم یک مثال برای bilinki داره , البته مطمئن نیستم برای xmega باشه ولی باید بشه برای ایسمگا هم ادیتش کرد

pooriya
12-01-2012, 22:39
سلام


#include <avr/io.h>
#include <avr/delay.h>

#define F_CPU 2000000UL

int main(void)
{

PORTA_DIR=0XFF;

while(1)
{

PORTA_OUTTGL=0XFF;
_delay_ms(2000);

}
}

madar
12-01-2012, 23:45
دستت درد نکنه آقا پوریا
فقط می خواستم نحوه ی کار تو avr studio 5 بدستم بیاد.دارم کم کم یاد می گیرم انشاالله که بتونم کامل یاد بگیرم.:o

arm-mohsen-avr
21-01-2012, 12:56
با سلام به دوستان
کسی نمی دونه مشکل از کجاست ؟
من فکر می کنم چون تابعی که خروجی رو می گیریم word هستش و نمیشه به اعشاری تبدیل کرد ...
ایا راهی است که به اعشاری تبدیل بشه ؟
cry:::(:(:(