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
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).
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?
> 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?
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.
Hast du dazu einen Source Code, wie man das alles parallel auslesen kann? Wäre echt hilfreich... Danke
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.