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
Atmega8 - posilani hodnot z AD prevodniku do pocitace.
Moderátor: Moderátoři
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
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
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.