FAQ | Points | Add... | Recent posts | Search | Register | Log in


Jak podzielić wynik z ADC WinAVR i AtMega 128


Post new topic  Reply to topic      Main Page -> Forum Index -> Microcontrollers Generally -> Jak podzielić wynik z ADC WinAVR i AtMega 128
Author
Message
pan_kotek
Poziom 17
Poziom 17


Joined: 08 May 2004
Posts: 408

Post#1 Post from the author of the topic 01 Dec 2007 21:14   

Jak podzielić wynik z ADC WinAVR i AtMega 128


Witam
Mam problem z wysłaniem na LCD wyniku z ADC w postaci np
3.51 V
1)Najpierw chciałem w wyłuskać (3) i wysłać na LCD
2)wysłać na LCD znak "."
3)wyłuskać resztę (51) i wysłać

część programu odpowiedzialna za podział i zamianę wyniku na ASCII wygląda tak:

Quote:

int voltintpart[];//= {'0','0','0','\0'};
char voltfractpart[];//= {'0','0','0','\0'};
char voltintfull[];//= {'0','0','0','\0'};
int intpart = 1;
int fractpart = 1;
int ADCresult = 1;

ADCresult = 0x3FE;// nasza liczba z ADC np 1022
intpart = ADCresult/205;//dzielimy żeby uzyskać wynik 4
fractpart = ADCresult%205;//reszta z dzielenia

itoa(intpart, voltintpart, 10);//zamiana na ASCII
itoa(fractpart, voltfractpart, 10);
itoa(ADCresult, voltintfull, 10);

Wszystko jest prawie OK
Dzieląc 1022/205 hex 0x3FE/0xCD mam 4.
nie otrzymuję tylko reszty z dzielenia 1022 na 205,powinno być 98 a wychodzi 202 hex 0xCA.

pracuję na WinAVR i VMLab jako debuger i obrerwacja danych ,stanów portów,wyników,zmiennych itp

Czy jest jakiś inny sposób uzyskania reszty z dzielenia
Back to top
   
Google

Google Adsense


Post# Post from the author of the topic 01 Dec 2007 21:14   





Back to top
   
HIOB
Poziom 15
Poziom 15


Joined: 01 Oct 2003
Posts: 225
Location: Tarnowskie Góry

Post#2 01 Dec 2007 21:25   

Re: Jak podzielić wynik z ADC WinAVR i AtMega 128


Witam!

... ja też czasami siedzę zbyt długo nad jakimś programem :)

((4 * 205) + 202) = 1022 ... :)

Pewnie ze zmęczenia :)

Pozdrawiam!
Back to top
   
Google

Google Adsense


Post# 01 Dec 2007 21:25   





Back to top
   
zumek
Poziom 23
Poziom 23


Joined: 08 Oct 2003
Posts: 3122
Location: Włocławek

Post#3 01 Dec 2007 21:54   

Re: Jak podzielić wynik z ADC WinAVR i AtMega 128


HIOB wrote:
...Pewnie ze zmęczenia :)

Ja bym powiedział , że raczej z ... pewnych braków ;)
Code:

fractpart = ( (ADCresult % 205) * 100 / 205)


Piotrek
Back to top
   
Google

Google Adsense


Post# 01 Dec 2007 21:54   





Back to top
   
EQU
Poziom 8
Poziom 8


Joined: 04 Mar 2006
Posts: 26

Post#4 03 Dec 2007 16:05   

Re: Jak podzielić wynik z ADC WinAVR i AtMega 128


a mozna tez sprintfem wrzucic sfromatowany lancuch:

Code:

float adc;
unsigned char tmp[MAX];
adc = adc_result/1.0f;
sprintf(tmp,"%f2.2 [V]",adc);


oczywiscie trzeba pamietac o:
Code:
-Wl,-u,vfprintf -lprintf_flt -lm

Back to top
   
Post new topic  Reply to topic      Main Page -> Forum Index -> Microcontrollers Generally -> Jak podzielić wynik z ADC WinAVR i AtMega 128
Page 1 of 1
Similar topics
ADC skaczący wynik pomiaru na lcd (40)
ATmega ADC jak podlaczyć AVCC i AREF? (9)
ATmega 128 - jak ustawić 16MHz (2)
Atmega2560 adc błędny wynik (6)
Przetwornik ADC dziwny wynik (5)
ATmega8 + WinAVR + optymalizacja = dziwny wynik kompilacji (13)
ATMEGA 128 problem z ADC. Każdy pomiar wskazuje 1023. (4)
ADC w ATMEGA 128 (3)
[atmega][bascom] Atmega 128 i rc5 na int4.Czy ma prawo działać? (7)
Jak dobrać rezystory dla NMOS i ADC w ATMega ? (9)

Page generation time: 0.092 seconds


FAQ || Administrator || Moderators || Widgets and banners || Contact
elektroda.pl topic RSS feed