Stránka 1 z 1

Atmega8 - posilani hodnot z AD prevodniku do pocitace.

Napsal: 15 úno 2009, 01:16
od TRT
Na ATMegu8 mam pripojeny potenciometry na vsech sest AD portu. Potrebuji posilat hodnoty ze vsech AD portu do pocitace skrz RS232. Rozbehl jsem si program, pomoci ktereho umim odecist hodnotu z AD prevodniku a poslat ji do pocitace, kde ji v terminalu zobrazim. Nevim ale, jak poslat vsech 6 hodnot naraz. Muzete mi prosim poradit, jakym zpusobem se vlastne takove veci resi? Dejme tomu, ze kazdy prevodnik mi vytvori trojmistne cislo. Prevodniku mam 6. Otazka je, jak to poslat do pocitace. Jestli jako nejaky dlouhy retezec, ci jak. Dekuji

Zdrojak mam takto, nejspis bude chyba v datovych typech, nebo vubec v cele logice veci.

$regfile = "m8def.dat"
$baud = 115200
$crystal = 7372800

Dim U0 As Word, U5 As Word,U3 As Word, X As Single, Y As Single, Z As Single


Config Serialout = Buffered, Size = 40
Enable Interrupts

Config Adc = Single , Prescaler = Auto , Reference = AVCC

Start Adc
Do
U0 =Getadc(0)
U5= Getadc(5)
U3= Getadc(3)

X = 4.8876 * U0
Y = 4.8876 * U5
Y = 4.8876 * U3

U0 = X
U5 = Y
U3 = Z

Print U0 ; U5 ; U3
Waitms 10

Loop
End

Napsal: 15 úno 2009, 08:44
od nekmil
Trochu jsem ten program upravil a vyzkoušel v simulátoru.
V podstatě to máš správně.

$regfile = "m8def.dat"
$baud = 115200
$crystal = 7372800

Dim U0 As Word , U5 As Word , U3 As Word , X As Single , Y As Single , Z As Single

'tohle jsem vyhodil
'Config Serialout = Buffered, Size = 40
'Enable Interrupts

Config Adc = Single , Prescaler = Auto , Reference = Avcc

Start Adc
Do
'Getadc jsem zde nahradil RND jen pro simulaci
U0 = Rnd(1023) ' Getadc(0)
U5 = Rnd(1023) ' Getadc(5)
U3 = Rnd(1023) ' Getadc(3)

X = 4.8876 * U0
Y = 4.8876 * U5
Z = 4.8876 * U3

U0 = X
U5 = Y
U3 = Z

Print U0 ; " " ; U5 ; " " ; U3
Waitms 10

Loop
End

Napsal: 15 úno 2009, 09:32
od TRT
Diky za nakopnuti. Zjistil jsem, ze pokud nepouzivam prepocet hodnot zpet na milivolty (to jsou ty promenne X, Y, Z), vse se vporadku zobrazi v pocitaci. Defakto ten prepocet vubec nepotrebuju, staci mi, ze vim ze cely rozsah pohybu je rozdelen 10ti bitove. Takze zatim diky, predpokladam ale, ze se tu jeste objevim s dalsimi dotazy.