Hey Leute, ich hoffe, ihr könnt mir helfen. Ich bin ein Neuling in Sachen Microcontrollern, habe einen C167CR und möchte eine A/D-Wandlung mit PEC-Transfer durchführen. Als Debugger nutze ich µVision4. Die Ports P5.0 und P5.1 sind meine verwendeten Eingänge. Nun habe ich folgendes vor: ich möchte das die Analogsignale der Eingänge permanent konvertiert werden und die Ergebnisse mithilfe des PEC in das Feld „Buffer[]“ geschrieben/geschoben werden. Das Feld soll 2 „Worte“ groß sein (pro ADC-Ergebnis ein Wort) und immer die aktuellen A/D-Wandlungsergebnisse beinhalten. (Ganz zum Schluss sollen die Werte für´s PWM genutzt werden, aber das ist jetzt noch nicht aktuell.) Und noch eine Frage: Wie kann ich mir beim Simulieren die Werte jedes Mal in einer Zeile anzeigen lassen? Also das der Text feststeht und sich nur die Werte ändern. „Das Ergebnis ist = XXXXX“ (nur die X sollen sich ändern). Ein paar Worte zum Vorgehen wären auch ganz gut, damit ich die Chance habe es zu verstehen :o) Im Anhang findet ihr meine ersten Versuche, die mich zum Verzweifeln bringen. Vielen Dank schonmal. Gruß, der Bademeister
Moin Bademeister, warum willst du unbedingt den PEC nutzen wenn du eh immer nur den letzten Wert der ADC nutzt? Bei nur zwei Werten würde ich noch einen "klassischen Interrupt" nutzen. Ein paar Kleinigkeiten sind aber in deinem Programm nicht ganz korrekt: Init_PEC musst du, genauso wie Init_ADC nur einmal ausführen, raus damit aus der While(1). Aus dem Kopf heraus kann ich beim PEC nicht helfen. Ich weiß jetzt nicht direkt ob der Source-Pointer nach dem letzten PEC-Transfer automatisch zurück gesetzt wird oder ob man das in der dann angetriggerten ISR tun muss. (mir fehlt gerade die Zeit das aus dem Manual herauszusuchen) Du schreibst das du kontinuierlich Abtasten willst. Warum hast du dann in deinem Programm "Single-Conversation"? Beim Simulator kann ich leider gar nicht helfen, da ich den so gut wie nie genutzt habe, und wenn dan Tasking. Gruß, TManiac
Hallo TManiac, den PEC würde ich gern nutzen, da das ADRES im ADDAT immer zwischen den beiden Eingangsweten wechselt. Später sollen diese Werte für eine PW-Modulation verwendet werden (Eingänge für Impulslänge und Impulspause). Da ADC und PWM unterschiedlich schnell arbeiten könnten (asynchron), könnte es beispielsweise passieren, dass im ADRES gerade das Ergebnis für die Impulspause vorliegt, obwohl er die Impulslänge benötigt. Mein ADCON war gerade auf "Auto Single Conversion", weil ich ein bisschen rumprobiert habe. Ursprünglich hatte ich es auf "Auto Continuous Conversion". Der ADC finktioniert auch super, er zeigt mir im ADDAT den Kanal und das Ergebnis an, wie es sein soll. Nur leider kann ich es nicht verschieben. Aber deine Idee mit dem "klassischen Interrupt" werde ich mal probieren. Vielen Dank schonmal und sag bescheid, wenn du eine Lösung mit dem PEC gefunden hast :o) Gruß, Bademeister
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.