Problem beim Vergleich von ADwandlerwerte zwischen Master und Slave

Gast #1905650
Lesenswert?

Hallo

Ich habe ein Problem wenn ich die Werte von Adwandler zwischen Master 
und Slave vergleiche.
ich wollte wenn  eine von beide Adwandler kaputt geht dass es in diesem 
Fall ein LED Leuchtet.darüberhinaus lege ich lege ich gleiche spannung 
an ADC von Master uns Slave und dann wird in reihenfolge zwischen ADC(0) 
von Master mit ADC(0) von Slave verglichen dann ADC(1) und soweiter und 
sofort.

wenn ich nur ein kanal von adwandler vergleichen will dann funktioniert 
das aber wenn ich mehrere kanäle vergleichen will dann funktioniert 
nicht.

funktioniert nicht heisst wenn ich gleiche Spannung an ADC(0) und andere 
Spannung an ADC(1) anlege dann leucht den LED obwohl der Differenz ist 
immer kleiner als 150

ich habe meine funktionen angehängt.hoffe dass mir jemand helfen kann
und entschuldigung für meine schlechte Deutsch

danke im voraus
Angehängte Dateien:
#1905660
Lesenswert?

smith schrieb:

> funktioniert nicht heisst wenn ich gleiche Spannung an ADC(0) und andere
> Spannung an ADC(1) anlege dann leucht den LED obwohl der Differenz ist
> immer kleiner als 150
1
  if ( maxi > 150 ) 
2
        
3
    PORTC |= (1<<PC3);
4
    else PORTC &= ~ (1<<PC3);

Und deine LED ist sicher so verschaltet, dass sie leuchtet wenn der Pin 
auf 1 gezogen wird?

Meistens ist das nämlich genau anders rum verschaltet: eine LED wird zum 
leuchten gebracht, indem man den Pin auf 0 setzt.


PORTC: Welchen Prozessor benutzt du? Hat der ein JTAG? Liegt das 
zufällig am PORTC und ist nicht ausgeschaltet?
#1905704
Lesenswert?

Ach

Die Differenz 2er unsigned short Werte kann per Definition niemals 
negativ sein, da ein unsigned nicht negativ sein kann.

Du kannst das daher nicht so machen
1
   x = abs ( SlaveValue - adcValue );
1
  if( SlaveValue > adcValue )
2
    x = SlaveValue - adcValue;
3
  else
4
    x = adcValue - SlaveValue;

dann ist x immer positiv.
Gast #1905707
Lesenswert?

weil ich lege den gleichen Spannung an ADC sowol an Master als auch an 
Slave.
das ganze funktioniert das problem taucht nur wenn ich zum beispiel 4v 
an ADC(0)an Master und Slave und 1v an ADC(1) von Master und Slave.also 
zwie verchieden Spannung aber der Differenz ist immer klein
#1905731
Lesenswert?

smith schrieb:
> weil ich lege den gleichen Spannung an ADC sowol an Master als auch an
> Slave.

Das überzeugt mich nicht.
Der programmtechnische Weg von den gleichen Spannungen bis dann endlich 
die beiden Zahlenwerte miteinander verglichen werden ist weit. Da gibt 
es jede Menge Fehlerquellen.

Sieh zu, dass du einen Blick auf die Zahlen werfen kannst! Alles andere 
ist Stochern im Nebel.

> das ganze funktioniert das problem taucht nur wenn ich zum beispiel 4v
> an ADC(0)an Master und Slave und 1v an ADC(1) von Master und Slave.also
> zwie verchieden Spannung aber der Differenz ist immer klein
Gast #1905798
Lesenswert?

ich habe die werte geändert und das mit zwei LEDS gesteurt damit ich 
sehen kann ob dass überein stimmt.
die werte stimmen schon.
aber was ich nicht verstehe dass wenn ich eine wert von 2,48V die 
enstprechend 991 leuchtet den LED von Slave wenn ich schreibe das LED 
soll leuchten wenn die Wert größer als 1000 was das nicht dem Fall ist.
Ad wandler eingestellt für interne ReferenzSpannung 2,56V

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren