Atmega8 - posilani hodnot z AD prevodniku do pocitace.

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
Uživatelský avatar
TRT
Příspěvky: 10
Registrován: 24 led 2008, 01:00

Atmega8 - posilani hodnot z AD prevodniku do pocitace.

#1 Příspěvek 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

Uživatelský avatar
nekmil
Příspěvky: 780
Registrován: 06 bře 2005, 01:00
Bydliště: Havířov

#2 Příspěvek 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

Uživatelský avatar
TRT
Příspěvky: 10
Registrován: 24 led 2008, 01:00

#3 Příspěvek 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.

Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“