mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PIC24 ADC Auswertung


Autor: Hardware Interrupt (bensen83)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute, ich habe in Problem mit meinem ADC, ich habe einen 
PIC24HJ128GP506 und möchte die Analogeingänge AN0 udn AN3 einlesen. Wenn 
ich nur channel 0 einlese funktioniert es einwandfrei, lasse ich jetzt 
später noch den channel 3 einlesen, wird komischerweise AN3=AN0 
geschrieben und AN0 wird auf 0 geschrieben. kann mir jemand helfen? :

hier die read ADC funktion und der teil des Hauptprogs:


uint16 readADC(int16 ch)
{
  AD1CHS0 = ch;
  AD1CON1bits.SAMP = 1;
  while(!AD1CON1bits.DONE);
  return ADC1BUF0;
}  //readADC


testvar1 = readADC(Ch_U);             // Auslesen des ADC´s
Spannung = testvar1/Spannungsteiler; // Errechnung der ausgelesenen 
Spannung
testvar2 = readADC(Ch_I); //Auslesen des ADC´s
Strom = testvar2/Stromteiler;  // Errechnung des ausgelesenen Stroms

Autor: Master Snowman (snowman)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
was meinst du mit 'AN3=AN0' ?
ist der ablauf innerhalb deiner funktion readADC, so wie es Microchip 
als beispiel vorgibt?
wie inizialisierst du den ADC?
wieso wählst du den kanal nicht via 'AD1CHS0bits.CH0SA = ch;' aus? (oder 
irgendwie so ähnlich). denn AD1CHS0 ist ein ganzes register, das mehr 
als nur den zu wandelnden kanal definiert, und wenn du da einfach 
1,2,3... reinschreibst, kommt mit bestimmtheit was verkehrtes raus (ist 
nur annahme).

Autor: Hardware Interrupt (bensen83)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na AN3=AN0 bedeutet, dass er den Wert, der eigentlich an AN0 liegt in 
AN3 schreibt. und in AN0 schreibt er 0 rein.  und das andere habe ich 
versucht, kommt auf das gleiche drauf raus, muss ja auch so sein, da 
AD1CHS0bits.CH0SA an letzter stelle liegt wurde da auch immer die 
passende Zahl eingatragen. Hat noch jemand ne Idee woran es liegen 
könnte?

Autor: Master Snowman (snowman)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> muss ja auch so sein, da AD1CHS0bits.CH0SA an letzter stelle
> liegt wurde da auch immer die passende Zahl eingatragen
bezüglich der kanalwahl hast du recht, aber wenn du die anderen bits 
(eventuell) falsch überschreibst, könnte das negative auswirkungen 
haben. darum erwähnte ich es.
und was ist mit den anderen beiden fragen?

Autor: Hardware Interrupt (bensen83)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
habe es jetzt von nem kollegen anders machen lassen, ist aufwendiger, 
aber funzt, er liest jetzt alle kanäle gleichzeitig aus und gibt mir 
dann die werte zurück.

Autor: Thomas O. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du dazu einen Source Code, wie man das alles parallel auslesen 
kann?

Wäre echt hilfreich...

Danke

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.