Datum: 23.09.2007 14:25
Hallo, @Andreas: Ich wollte mal den DDS aus dem Artikel http://www.mikrocontroller.net/articles/Digitaler_... testen und bin beim Assemblieren darüber gefallen das einige Register Im Quelltext neu definiert werden obwohl sie in der m8def.inc schon vordefiniert sind... Das ergibt natürlich Fehler bei der Assemblierung. Hier mal auszüge der betreffenden Direktiven. dds.asm: .def fbinL = R26 ; binary value Low byte .def fbinH = R27 ; binary value High byte .def z1 = R28 ; Dieses Registertripel enthält die Phasenposition .def z2 = R29 ; zu der die Register changeX bei der Phasenakk. .def z3 = R30 ; addiert werden m8def.inc: ; ***** CPU REGISTER DEFINITIONS ***************************************** .def XH = r27 .def XL = r26 .def YH = r29 .def YL = r28 .def ZH = r31 .def ZL = r30 ausserdem werden im Quelltext die Register 21 und 22 gleich doppelt definiert: .def fbin2 = R21 ; binary value byte 2 .def fbin3 = R22 ; binary value byte 3 (MSB) .def tBCD0 = R21 ; BCD value digits 1 and 0 (same as fbin2) .def tBCD1 = R22 ; BCD value digits 3 and 2 (same as fbin3) soll das so sein ? oder Hast Du eine andere m8def.inc benutzt Grüße Björn
Datum: 23.09.2007 14:50
Einen habe ich noch: Diese Zeile mag der Assembler auch nicht: ldi temp1, 0b10000000|(((@0)-1)<<6)|((@1)-1) Da bekomme ich eine Fehlermeldung: DDS.asm(121): error: syntax error, unexpected ',' Merkwürdig... ich kann da nichts falsches dran finden.. Grüße Björn
Datum: 23.09.2007 17:02
Björn Wieck wrote: > Diese Zeile mag der Assembler auch nicht: > > ldi temp1, 0b10000000|(((@0)-1)<<6)|((@1)-1) > > Da bekomme ich eine Fehlermeldung: > > DDS.asm(121): error: syntax error, unexpected ',' OK, den Fehler habe ich gefunden... lag am Assembler selbst. mit Version 1 gehts dann, nur die Registerproblematik ist geblieben.
Datum: 24.09.2007 22:59
Björn Wieck wrote: > OK, den Fehler habe ich gefunden... lag am Assembler selbst. > mit Version 1 gehts dann, nur die Registerproblematik ist geblieben. Die restlichen Meldungen wegen der Registerdoppelbelegungen scheinen nicht ins Gewicht zu fallen, das Prog läuft. Da habe ich mich mal über den Schaltplan hergemacht und stelle 2 Fragen: R19 ist ohne Wert, ich habe jetzt mal einfach 10-15k als passend angenommen weil es hier nur um die Kompensation geht. R29 ist als 1k angegeben! Warum?? da gehen ja ständig 0,5W in Wärme weg. Grüße Björn
Datum: 24.09.2007 23:49
R19 kannst du im Zweifelsfall auch weglassen, der dient nur dazu den Einstellungsbereich etwas zu verkleinern um genauer einstellen zu können. Was ich da eingebaut habe weiß ich nicht mehr genau. R29 ist zu klein, das stimmt. Allerdings ist wenn man ihn größer macht der Spannungsteiler nicht mehr als unbelastet zu betrachten, was das Ergebnis verfälschen könnte. Ich habe die Hinweise im Artikel eingefügt.
Datum: 25.09.2007 00:13
Andreas Schwarz wrote: > R19 kannst du im Zweifelsfall auch weglassen, der dient nur dazu den > Einstellungsbereich etwas zu verkleinern um genauer einstellen zu > können. Was ich da eingebaut habe weiß ich nicht mehr genau. > > R29 ist zu klein, das stimmt. Allerdings ist wenn man ihn größer macht > der Spannungsteiler nicht mehr als unbelastet zu betrachten, was das > Ergebnis verfälschen könnte. > > Ich habe die Hinweise im Artikel eingefügt. Hallo Andreas, Ich würde jetzt mal R19 auf Verdacht bei 10k nehmen. R29 würde ich auf 4k7 machen und dazu den R32 auf 33k machen. R30 und 31 sollten dann auch 33k sein aber ich teste erstmal.. Tschüss Björn
Datum: 25.09.2007 00:32
Kleiner würde ich die Widerstände am OP nicht machen, sonst belastest du den Spannungsteiler nur noch mehr. Lass die 56k doch einfach.
Datum: 06.10.2007 22:35
Angehängte Dateien:Andreas Schwarz wrote: > Kleiner würde ich die Widerstände am OP nicht machen, sonst belastest du > den Spannungsteiler nur noch mehr. Lass die 56k doch einfach. Sooo, getestet und für Gut befunden. Dein DDS funktioniert hervorragend. R19 habe ich jetzt mit 4k2 getestet und ist i. O. Bei R29 komme ich mit 4k7 auf gute Einstellbarkeit. Alle anderen Werte sind so geblieben. Anstelle des R2R Netzwerkes habe allerdingsich einen DA Wandler ZN428 genommen. Grüße Björn
Datum: 06.10.2007 23:31
Schön! Mit dem Gehäuse hast du dir ja einige Mühe gegeben. Ich hab das Bild auf der Projektseite verlinkt.
Datum: 06.10.2007 23:56
Angehängte Dateien:Andreas Schwarz wrote: > Schön! Mit dem Gehäuse hast du dir ja einige Mühe gegeben. Ich hab das > Bild auf der Projektseite verlinkt. Danke Andreas, Das Gehäuse hatte ich noch zu liegen... Das Display und die Tastatur haben so gerade eben noch in dieser Höhe reingepasst. Grüße Björn
Datum: 03.12.2007 07:34
Hallo Björn, gefällt mir richtig gut deine Lösung. Leider bin ich fachlich noch nicht so weit, dass eine solche Aufgabe ohne Hilfe stemmen kann. Habe ich die Möglichkeit den Schaltplan von "Deiner Lösung" zu bekommen? Evtl. würdest Du mir ja auch das Layout überlassen? Habe noch eine Frage zum ASM-Code. Für die Anwendung des DA-Umsetzers ZN428 musstest Du den Code nicht anfassen? Gruß aus Wolfsburg Christian Engel
Datum: 17.02.2008 21:40
Hallo zusammen, Als erstes muss ich sagen dass ich das ein sehr gutes Projekt finde! Vielleicht werde ich es auch mal als "Inspiration" für ein eigenes Projekt benützen. Ich habe aber noch eine Lösung für den R29: man muss einfach eine OP als Impedanzwandler dahinterschalten und dann kann man ein fast beliebiges Poti nehmen, zb. 50k. Gruss kelli
Datum: 13.04.2008 11:32
>> Diese Zeile mag der Assembler auch nicht: >> >> ldi temp1, 0b10000000|(((@0)-1)<<6)|((@1)-1) >> >> Da bekomme ich eine Fehlermeldung: >> >> DDS.asm(121): error: syntax error, unexpected ',' > > OK, den Fehler habe ich gefunden... lag am Assembler selbst. > mit Version 1 gehts dann, nur die Registerproblematik ist geblieben. Hallo, ich habe gerade das selbe Problem. Ich benutze AVR-Studie 4.13, wie kann ich das Problem da lösen? Ich habe auch noch nicht so richtig verstanden welche Bitmanipulation da erfolgt. Kann mir das mal jemand erklären. mfg Jörg
Datum: 16.11.2009 10:54
>> Diese Zeile mag der Assembler auch nicht: >> >> ldi temp1, 0b10000000|(((@0)-1)<<6)|((@1)-1) >> >> Da bekomme ich eine Fehlermeldung: >> >> DDS.asm(121): error: syntax error, unexpected ',' > > OK, den Fehler habe ich gefunden... lag am Assembler selbst. > mit Version 1 gehts dann, nur die Registerproblematik ist geblieben. Einstellung im AVR-Studio: -> Project -> Assembler Options -> AVR Assembler -> Version 1 Ansonsten wir mit Fehlermeldung übersetzt. Normal ist der AVR Assembler Version 2 aktiv. ( Standard Einstellung )
Datum: 17.01.2010 17:19
Das Projekt Wirklich feine Sache! Habe es gleich mal nachgebaut. Die Idee statt eines R2R-Netzwerkes ein DAC zu nehmen war ein klasse Idee. Allerdings konnte ich den DA Wandler ZN428, den Björn Wieck benutzt hate nicht finden. Dehalb habe ich den DAC 0800 genommen. Funktioniert ebenfalls gut und ist jederzeit bei Reichelt zu bekommen.
Datum: 22.01.2010 22:08
@ hoax Hättest du evtl. den geänderten Schaltplan mit dem DAC 0800?? Wäre sehr net, und würde mir die Neuerfindung des Rades ersparen :)
Datum: 24.01.2010 11:54
Angehängte Dateien:Hier der gewünschte Schaltplan. Ersichtlich ist nur die Beschaltung des DAC0800. Problem bei dieser Schaltung ist nur die Spannungsversorgung, um einen Signalverlauf von 0-10V hinbekommt (Habe noch nicht getestet was passiert wenn V- auf GND gelegt wird). Es wäre kein Problem auch Spannungen von -5V - 5V zu erzeugen (ohne Offsetkompensation mit OPs). Dazu nutzt man andere Referenzspannungen.






