PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ad wandler



sahra
12.10.2010, 13:26
hallo zusammen,
ich mache gerdade ein Beispiel mit 2 poti,ich gebe die 2 werte zu zwei kanäle zu einem Ad wandler, die werden verglichen, und wenn die gleich sind muss led1 leuchten, und wenn die wert 1 kleiner als wert 2 muss led2 leuchten, und wenn wert 1 grösser als wert 2 muss led3 leuchten. aber das funktinniert nicht ganz sauber.


cp Plow0,Plow1
cpc Phigh0,Phigh1
breq spg_gleich
brlo diode1_an
brsh diode2_an

spg_gleich: ; Diode an Pin 0 einschalten
cbi portb,2
cbi portb,1
sbi portb,0
rjmp main

diode1_an: ;Diode an Pin 1 einschalten
cbi portb, 0
cbi portb, 2
sbi portb, 1
rjmp main

diode2_an:
cbi portb,1
cbi portb,0
sbi portb, 2
rjmp main
weiß jemand vielleich wo der fehler oder die fehler sind?
danke

yaro
12.10.2010, 21:38
Was heißt "nicht ganz sauber"?

Gruß, Yaro

Slein
12.10.2010, 23:06
Mahlzeit!

Die reale Welt ist nicht binär ;)

Zwei "gleiche" Spannungen sind meistens doch etwas unterschiedlich und die ad Wandler sind auch nicht fehlerfrei.

Darum sollte man um zu entscheiden, ob 2 Spannungen gleich sind, nicht alle 10Bit vergleichen. Eine Reduktion auf 6 oder 8 Bit vor dem Vergleich ergibt eine Bandbreite, in der die Spannungen noch als "gleich" anzusehen sind und der auch abundzu mal zutrift.

LSR Phigh0
ROR Plow0
LSR Phigh0
ROR Plow0
LSR Plow0
LSR Plow0

cp Plow0,Plow1
breq spg_gleich
brlo diode1_an

diode2_an:
cbi portb,1
cbi portb,0
sbi portb, 2
rjmp main

spg_gleich: ; Diode an Pin 0 einschalten
cbi portb,2
cbi portb,1
sbi portb,0
rjmp main

diode1_an: ;Diode an Pin 1 einschalten
cbi portb, 0
cbi portb, 2
sbi portb, 1
rjmp main

Phigh1/Plow1 natürlich auch nach rechts schieben :)

PS: Der code für die Wandlung kann natürlich auch fehlerhaft sein...