Hi, um Code zu sparen möchte ich gerne für meine AD-Wandlungen folgendes machen: in einem Array stehen die Pinnummern, an denen die auszulesenden Werte anliegen. Nun wird mit einer for-Schleife durch das Array durchgegangen, und an Feld i die Pinnummer eingelesen, die AD-Wandlung gemacht, und dann in ein zweites Array an Nummer i geschrieben. Nun aber meine Frage: gibt es eine intelligente Möglichgkeit, diese AD-Wandlung das erste mal anzustoßen? Denn ich möchte ungerne für die erste Wandlung den Code noch einmal einfügen... Habt Ihr da eine schlaue Idee für mich? Vielen Dank schon einmal im Voraus, Ozzy
@ Christoph Osterloh (ozzy) >Nun aber meine Frage: gibt es eine intelligente Möglichgkeit, diese >AD-Wandlung das erste mal anzustoßen? Was gibt es da anzustossen? Ausser deine Routione ist in einem Interrupt. Dann reicht es, den ADC zu konfigurieren und im Fre-Running Modus zu aktivieren. > Denn ich möchte ungerne für die erste Wandlung den Code noch einmal einfügen... ??? MFG Falk
Moin, dann hatte ich das wohl etwas falsch verstanden: ich dachte, man müsse die AD-Wandlung erst einmal anstossen (eben durch eine AD-Wandlung), nach derem Ende er dann in die Interrupt-Routine springen würde. Dann werde ich das mal mit dem Free-Runngin-Modus probieren. Aber noch eine Frage: wenn ich im Interupt eine AD-Wandlung anstoße, was passiert dann mit dem Wert? Oder geht doch so etwas: ad_values[AdcChannel] = ADConv(ad_pin[AdcChannel]); denn nach der ADäWandlung springt er doch in die Routine, oder? MfG, Ozzy
@ Christoph Osterloh (ozzy) >dann hatte ich das wohl etwas falsch verstanden: ich dachte, man müsse >die AD-Wandlung erst einmal anstossen (eben durch eine AD-Wandlung), >nach derem Ende er dann in die Interrupt-Routine springen würde. Genau das macht der ADC auch. >Aber noch eine Frage: wenn ich im Interupt eine AD-Wandlung anstoße, was >passiert dann mit dem Wert? Oder geht doch so etwas: >ad_values[AdcChannel] = ADConv(ad_pin[AdcChannel]); >denn nach der ADäWandlung springt er doch in die Routine, oder? Ja. Aber pass auf dass du das mit dem ADC-MUX richtig machst, da kann man sich ins Knie schiessen und denkt, man hat eine Versatz von einem Kanal drin. MFG Falk
Christoph Osterloh wrote: > Moin, > > dann hatte ich das wohl etwas falsch verstanden: ich dachte, man müsse > die AD-Wandlung erst einmal anstossen (eben durch eine AD-Wandlung) Man muss nur am Anfang einmal das ADSC setzen, nachdem man den ADC initialisiert hat. Der Rest läuft (im Free Running Modus) von selbst. Allerdings ist es sinnvoll, nach dem Einschalten des ADC (ADEN setzen) eine Dummy-Wandlung durchzuführen und das Ergebnis wegzuschmeißen. Die erste Messung nach dem Einschalten ist i.d.R. für die Tonne.
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.