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
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?
ich benutze atmega16.habe es auch mit PortA probiert und immer das gleiche problem. ja es ist verschaltet wenn der Pin ein 1 aufgezogen wird
smith schrieb: > ich benutze atmega16. Gut. Mega16 bedeutet auf jeden Fall mal JTAGEN per Fuse abschalten > habe es auch mit PortA probiert und immer das > gleiche problem. > ja es ist verschaltet wenn der Pin ein 1 aufgezogen wird Auch gut. Woher weißt du, dass deine Differenzen kleiner als 150 sind?
Hast du eine Möglichkeit dir mal die Zahlenwerte anzusehen?
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.
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
Karl heinz Buchegger schrieb: > if( SlaveValue > adcValue ) > > x = SlaveValue - adcValue; > > else > > x = adcValue - SlaveValue; die habe ich auch probiert vorhin aber und immer das gleiche
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
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
smith schrieb: > Ad wandler eingestellt für interne ReferenzSpannung 2,56V Vorsicht, die interne Referenzspannung ist nicht exakt 2.56V! Die streut ganz schön um diesen Wert von µC Exemplar zu µC Exemplar. Die interene Referenzspannung ist hauptsächlich stabil! Aber sie ist nicht hauptsächlich 2.56V.
Ich habe bemessen und das programm vergleicht die werte zwischen ADC(0) und ADC(1) und nicht zwischen ADC(0) Master und ADC(0) Slave!!!!! weiss nicht woran das liegt
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.