Morgen Robert!
Hab deine Änderungsvorschläge mal eingebaut, und jetzt funzts, super geil!
Hab mal mit ein paar werten rumgespielt, das entspricht aber noch nicht so ganz dem, wie ich mir das vorgestellt habe. Das ist aber schätze ich weniger ein programmfehler, z.B.
zuerst hab ich einfach mal einen variablenwert von 65535 ausgegeben, dann müssten alle stellen "1" sein, und die höchsten vier sogar schon wieder ausgesschoben werden. das passt auch soweit, am ausgang ist die referenzspannung.
hier hab ich übrigends herausgefunden, dass das MSB zuerst eingeschoben wird, also brauche ich die shift funktion gar nicht mehr, weil die 4 höchsten bits von den 16 eh zuerst kommen und wieder raus geschoben werden. dann hab ich nachher genau die 12 drin, die ich haben möchte.
bei 12 bit wäre ja der maximale wert 4095, also müsste dieser den DA-Wandler doch auch mit lauter 1en füllen, und ich wieder Vref am Ausgang haben. Da komm ich aber nicht ganz drauf, liegt etwa 0,2V drunter.
Bei 0 kommt auch 0V raus, das passt, aber wenn ich als wert 2048 raus gebe kommt auch ca. null raus, erwartet hätte ich ja irgendwie Vref/2. soviel negativen offset kann doch wohl so ein Wadler nicht haben, oder, und wenn ich 3071 als wert eingebe was ja 3/4 von max (4095) entspricht dachte ich, müsst ich auch etwa 3/4 (75%) von Vref haben, da kommt aber dann schon 94%von Vref an, hmmm.

Dann hab ich noch eine Frage zu rechenvorgängen in bascom: kann ich nicht mehrere rechenvorgänge in einem (in einer zeile z.B. VarA=(VarB*4)/VarC) machen? hab das mal versucht, da gabs nur fehlermeldungen, und hab das dann in mehreren zeilen gelöst: z.B. VarA=VarB*4 und in der nächsten Zeile VarA=VarA/VarC

Gruß
Christian