hallo! ich möchte das minidds nachbauen: http://www.myplace.nu/avr/minidds/index.htm jedoch mit einem attiny2313. die .asm datei und winavr habe ich runtergeladen. in der .asm datei habe ich #include <io2313.h> gegen #include <iotn2313.h> ausgetauscht. wie kann ich nun mit mfile diese .asm datei kompilieren, sodass ich eine .hex datei erhalte? in mfile auf "makefile"/"assembler source file" klicken!? gefolgt von!?
hallo hp-freund! habe eben versucht deine .hex-datei in den attiny2313 zu flashen. bekomme dabei eine fehlermeldung. flashe ich ein x-beliebiges led blinkprogramm gibt es keine probleme.
Hallo Pete, ich bin mit Linux im Netz, liegt vielleicht am Zeilenende. Versuch mal diese. An sonsten: Wie lautet die Fehlermeldung?
hallo hp-freund! habs eben selber kompiliert. danke für deine umänderung im code! flashen ging jetzt. habe noch fragen, da die anwendung nicht funktioniert: sollen bei den fuses des attiny2313 CKDIV8 (Divide clock by 8) deaktiviert oder aktiviert sein? habs mal rausgenommen und auf externen crystal eingestellt. mit welcher baudrate komuniziert der attiny2313 in diesem fall mit dem pc? habe 19200 baud eingestellt (am pc). in der ddscontrol habe ich in den preferences bei synthesizer freq. 1.10592e+007 eingetragen. ich drücke auf set und nichts tut sich. mal wieder total ratlos und es ist wieder viel zu spät
also mit nichts tut sich meine ich: das programm lässt sich zwar ansprechen aber die angezeigte frequenz IM PROGRAMM weicht etwas ab. am ausgangspin erhalte ich keine pegeländerungen (habe einen frequenzmesser angeschlossen von meinem multimeter). anschluss gemäß originalplan.
Pete schrieb: > also mit nichts tut sich meine ich: > das programm lässt sich zwar ansprechen aber die angezeigte frequenz IM > PROGRAMM weicht etwas ab. Das dürfte normal sein und ist prinzipbedingt. Der DDS kann nicht jede beliebige Frequenz erzeugen, sondern ist an ein Raster gebunden. > am ausgangspin erhalte ich keine pegeländerungen (habe einen > frequenzmesser angeschlossen von meinem multimeter). > in der ddscontrol habe ich in den preferences bei synthesizer freq. > 1.10592e+007 eingetragen. Schreib da mal 11059200 rein. Bei so einem klassischen Integer Wert wie einer Taktfrequenz würde ich mich nicht drauf verlassen, dass hier wissenschaftliche Exponentialschreibweise verstanden wird.
Pete schrieb: > mit welcher baudrate komuniziert der attiny2313 in diesem fall mit dem > pc? habe 19200 baud eingestellt (am pc). Aus dem Programm
1 | ldi r16,0x05 ; set uart speed to 115.2 kbps |
hallo karl heinz! :) habe den comport auf 115.2 abgeändert. in der ddscontrol war unter voreinstellung 2.4e+007 eingetragen. anscheinend versteht es erstaunlicherweise wissenschaftliche exponentialschreibweise. den wert 1.10592e+007 habe ich von hier: Beitrag "Falsche Frequenz mit Jespers MiniDDS ?" ändere ich diesen auf 1.10592e+006 komme ich dem eingestellten wert etwas näher. jedoch immer noch entfernt von der angabe auf der webseite. achso: trotz comportanpassung immer noch keine ausgabe auf dem output-pin :(
hier mal die platine. verwende kein widerstandsnetzwerk.
Pete schrieb: > verwende kein widerstandsnetzwerk. Das solltest Du aber! Schau dir mal den Aufbau eines R2R Netzwerks an...
Man muss natürlich kein Widerstandsnetzwerk verwenden. Aber das, was du da gebaut hast ist irgendwie kein R2R DAC.
Pete schrieb: > habe den comport auf 115.2 abgeändert. > > in der ddscontrol war unter voreinstellung 2.4e+007 eingetragen. > anscheinend versteht es erstaunlicherweise wissenschaftliche > exponentialschreibweise. In der Tat erstaunlich. Aber ok, wenn das Programm da offenbar einen Gleitkommawert benutzt, dann wird das schon gehen. Trotzdem ist man mit der nicht wissenschaftlichen Schreibweise auf jeden Fall auf der sicheren Seite. Und kürzer ist sie ausserdem :-) > den wert 1.10592e+007 habe ich von hier: > Beitrag "Falsche Frequenz mit Jespers MiniDDS ?" Der Wert hängt davon ab, was du als Schwingkreis verbaut hast, und nicht davon was auf irgendwelchen Webseiten steht. > ändere ich diesen auf 1.10592e+006 komme ich dem eingestellten wert > etwas näher. Du probierst rum. Und das ist schlecht. Im Zweifelsfall müsste man nachrechnen (und sich die Programme ansehen) was da wirklich rauskommen muss. Kann ja auch ein Fehler auf der Website sein. > achso: trotz comportanpassung immer noch keine ausgabe auf dem > output-pin :( Ich vermisse auf deiner Platine zuallererst mal das ganze Drumherum, das zum Ansprechen einer RS232 gebraucht wird. Das dein µC den PC nicht versteht wundert mich überhaupt nicht.
hallo! also die rs232 kommunikation erfolgt über einen max232. dieser ist auf einem separaten board. verbinde also einfach txd/rxd/gnd und gut ist. mache dies bei so ziemlich allen projekten. wobei dies das erste wirklich widerspenstige ist :) ich verwende den ganz normalen 11.0592 MHz quarz (wie gesagt clockdivide/8 wurde abgeschaltet). zum thema widerstandnetzwerk. links das original. rechts der nachbau mit einzelnen. von daher passt das schon wie im original.
Pete schrieb: > zum thema widerstandnetzwerk. links das original. rechts der nachbau mit > einzelnen. von daher passt das schon wie im original. Dann google mal nach R2R Netzwerk. Hinweis: Der seltsame Name hat schon seinen Grund.
Es scheint mir allgemein so, als hättest du das Original sehr weit "abgespeckt" ;-)
oh mann ich bekomme gleich nen austicker -.- habe das so nachgebaut, da ich mir ein widerstandnetzwerk in eagle angeschaut habe. es ist aber kein r"2R". schande! konnte mir die kleinen knubbel da nämlich nicht erklären. soll heissen, das sind nochmal 7x 10K widerstände? ähnlich wie auf der neuen zeichnung? simon, mit dem abgespeckt hast du vollkommen recht ;) eigentlich ist das r2r-netzwerk nur dafür zuständig 256 verschiedene spannungen auszugeben. von mir nicht benötigt. könnte es trotzdem daran liegen, daß ich keine ausgabe auf dem output-pin habe?
Hi >eigentlich ist das r2r-netzwerk nur dafür zuständig 256 verschiedene >spannungen auszugeben. von mir nicht benötigt. Und wie willst du dann die Kurven erzeugen? Mir scheint, du hast von dem, was du machen willst, nicht viel verstanden. MfG Spess
hallo spess! da hast du vollkommen recht. dafür lerne ich gerade wieder immens.
Pete schrieb: > soll heissen, das sind nochmal 7x 10K widerstände? ähnlich wie auf der > neuen zeichnung? Das Ding heißt R 2R Netzwerk! Schau noch einmal genau! Die einen Widerstände haben den doppelten Wert der anderen. Daher das 2R im Namen! > spannungen auszugeben. von mir nicht benötigt. könnte es trotzdem daran > liegen, daß ich keine ausgabe auf dem output-pin habe? Ausgabe wirst du schon haben. Nur ist bei dir ziemlich sicher immer irgendein Pin der 8 auf high. Nach den Widerständen hast du daher praktisch immer eine 1 (also 5V)
Wenn du genügend Platz hast, kannst du die "2R" durch zwei in Reihe geschaltete 10K(20K) Widerstände machen und die "R" durch einen 10K Widerstand machen. ODER: Die "2R" durch einen 10K Widerstand und die "R" durch zwei parallelgeschaltete 10K (=5K) Widerstände. Dadurch kriegst du die beste Genauigkeit hin. In den E-Reihen der Widerstände gibts AFAIK keine R-2R Paare.
> Ausgabe wirst du schon haben. Nur ist bei dir ziemlich sicher immer > irgendein Pin der 8 auf high. Nach den Widerständen hast du daher > praktisch immer eine 1 (also 5V) das ist korrekt! > Schau noch einmal genau! Die einen Widerstände haben den doppelten Wert > der anderen. Daher das 2R im Namen! aha! also nicht im sinne von p2p (peer 2 peer), sondern doppelter wert. also direkt an die controllerpins widerstände mit dem doppelten wert (20K) und vertikal dann die 10K's. habe den schaltplan nochmal geändert.
Ja, nur dass es keine 20K Widerstände gibt. Siehe meinen Post über deinem.
Da müssen doch zwei Funktionen getrennt werden: Erste Funktion: Die Initialisierung nach reset stellt die Frequenz 1kHz ein und der DDS-Betrieb geht los. Die Pins für das R/2R Netzwerk liefern dann die verschiedensten Rechteckspannungen, das R/2R-Netzwerk macht aus denen den Sinus. Erst wenn diese Funktion richtig läuft, sollte man die zweite Funktion (serielle Schnittstelle) freigeben und ihre Arbeit überprüfen bzw. einstellen. Denn die Einstellung anderer Werte und die Verbindung zum PC hat dann erst einen Sinn. Dann kann man auch mit einem angeschlossenen NF-Teil die Steuerfunktion akustisch kontrollieren. nebenbei: Meines Wissens gibt es in der E24-Reihe das Wertepaar 20kOhm/10kOhm.
Hi
>In den E-Reihen der Widerstände gibts AFAIK keine R-2R Paare.
10k/20k, 11k/22k, 15k/30k, 18k/36k .....
MfG Spess
Hier an der Tastatur habe ich die ganzen Exx Reihen nicht direkt vor mir, jedenfalls sind mir 2kOhm /20 kOhm-Widerstände in r207 oder SMD schon öfter vorgekommen. Gerade nachgesehen: Wikipedia: E24-Reihe (Ätsch!!) übrigens: die Herstellung aus Parallel- oder seriellschaltung zweier gleicher Werte, also 20kOhm/10kOhm oder 5kOhm/10kOhm hat den Vorteil, dass der Temperaturkoeffizient besser übereinstimmt, das sogenannte tracking besser klappt. Wenn der Platz ausreicht, sollte man also lieber diesen Weg einschlagen.
hallo! ich habe entsprechende 20K widerstände besorgt und R2R-like eingelötet. bei 4,98V am ersten pin erhalte ich jeweils hinter den 10K's: 4,96V 4,94V 4,89V 4,78V 4,58V 4,16V 3,327V leider funktioniert die frequenzausgabe immer noch nicht. liegt vermutlich an der kompilierung per avr-studio. jemand noch eine idee?
ich es es erneut kompiliert und geflasht. allerdings gibt es eine erhebliche frequenzabweichung. habe die 20K und 10K widerstände vorher alle durchgemessen und nur die präzisesten dafür ausgewählt. stelle ich in der dds-control 11059200 ein, wird der wert von der dds-control automatisch in 1.10592e+007 umgewandelt. dabei gibt es eine kommaverschiebung von eingestellten 8000hz auf 888hz. setze ich in der dds-control 1.10592e+006 ein, stimmt der hz-wert im terminal und auf dem multimeter im kommabereich, ist aber sowas von dermaßen ausserhalb des eingestellten wertes -.- statt 8000hz nämlich 8888hz. terminal und multimeter mit frequenzzähler wurden zur hz-messung herangezogen. beide zeigen die gleichen 8888er werte. es liegt also an der mini-dds.
eben ausprobiert: stelle ich 1.2288e+006 ein, erhalte 7992 hz. der werte habe ich aus diesem post: Beitrag "Re: Falsche Frequenz mit Jespers MiniDDS ?" befriedigend ist das wirklich nicht!
Auch huhu ;) Ich habe mir den DDS nachgebaut und dabei einen großen Fehler in meiner asm Datei von weiter oben gefunden. Jedes Z-Register Berechnung auf die Kurventabelle muß mal 2 genommen werden.
1 | ldi r31,high(sine) ; setup Z pointer hi |
2 | ldi r30,low(sine) ; setup Z pointer lo |
wird zu:
1 | ldi r31,high(sine*2) ; setup Z pointer hi |
2 | ldi r30,low(sine*2) ; setup Z pointer lo |
Das Gleiche auch für die anderen Kurvenformen. Das DDS-Control Programm funktioniert bei mir nur zum Einstellen des DDS - das passt dann auch - , der angezeigte Wert oben ist allerdings falsch. Dachte erst es liegt vielleicht am USB-RS232 Wandler aber "zu Fuß" mit Braypp werden die richtigen Daten gesendet und auch empfangen. Als Quarz habe ich 24MHz gewählt, hatte gerade keinen anderen für runde Baudrate, läuft aber auch so. ... hp-freund
Die falsche Frequenz hat kaum etwas mit dem R-2R Netzwerk zu tun. Der höchstwertige Ausgang des Ports wird eine Rechteckspannung der richtigen Frequenz ausgeben, auch wenn das Netzwerk nicht stimmt, das ist, zusammen mit der lookup-Tabelle für die Kurvenform verantwortlich. Es klappt entweder mit dem Programmablauf nicht oder mit der Schnittstelle. Da der Fehler 9/8,10/9 oder 11/10 beträgt, vermute ich, dass in der DDS-Programmschleife ein Fehler ist, der sie um einen Takt länger macht. Oder dass die Umrechenroutine: eingegebene Zahl --> Zahl die addiert wird, mit einer falschen Zahl für die Schleifentakte arbeitet.
huhu hp-freund :D ich zitiere: "Die Anweisung .section kennt AVR Studio nicht. Ebenso ist es nicht möglich in den Programmspeicher mit der Direktive .byte einzelne Bytes einzulesen. Da gehört dann .db hin. Normalerweise muss in die Register Ladeanweisung noch ein *2 mit rein, da der Programmspeicher immer 2 Adressen belegt. Ich hatte recht, man muß die Flash Adressen mit 2 multiplizieren." http://www.rclineforum.de/forum/thread.php?threadid=249421
hi! hab eben den chip runtergelötet und muss diesen neu flashen. melde mich wenn alles erledigt wurde.
In System Programable Hab mich schon gewundert wie Du das Programm immer änderst bei dem Platinen-Layout :)
Pete schrieb: > hi! > > hab eben den chip runtergelötet und muss diesen neu flashen. melde mich > wenn alles erledigt wurde. Du solltest über einen Sockel nachdenken. So wie das Programm bzw. die Fehlerbeschreibungen aussehen, könnten das noch ein paar mehr Durchgänge werden.
Karl-Heinz: > Das dürfte normal sein und ist prinzipbedingt. > Der DDS kann nicht jede beliebige Frequenz erzeugen, > sondern ist an ein Raster gebunden. Du verwunderst mich, das Raster ist extrem fein, deutlich unter 1 Hz. Bitte nutze die Tipps, die Dir gegeben wurden und beantworte alle Fragen ausführlich, die gestellt wurden. Nach dem Reset gibt der Chip 1kHz aus, ohne dass dafür eine Verbindung zum PC notwendig ist. Das musst Du zuerst hinkriegen, sonst hast Du mehrere Baustellen und Du weißt nicht, wo der Hase in der Grube liegt. Erst wenn die 1kHz sauber rauskommen, kannst Du den PC verbinden und andere Frequenzen versuchen. Ein Oszi ist sehr hilfreich, um zu sehen, ob der Sinus sauber ist und ob das Multimeter überhaupt die richtige Frequenz anzeigt. Um sicher zu gehen, messe mal am Pin mit dem höchsten Wert (der R, der am nächsten zum Ausgang sitzt. Dort steht ein Rechtecksignal an, bei dem es sicherer ist, dass das Multimeter darauf triggert. Ebenfalls wichtig ist, dass die Tabellen an boundaries liegen, d.h. mit einer "geraden" Adresse beginnen, schau Dir das Listing an! Weiterhin ist wichtig, dass die Hauptschleife genau so viele Cyclen verbraucht wie angegeben, sonst stimmt die Ausgangsfrequenz nicht. > bekomme dabei eine fehlermeldung > dabei gibt es eine kommaverschiebung von eingestellten 8000hz auf 888hz. > also mit nichts tut sich meine ich: > das programm lässt sich zwar ansprechen > aber die angezeigte frequenz IM PROGRAMM weicht etwas ab. Und biite gewohne Dir an, präzise Angaben zu machen. Sonst hat hier keiner Lust, Dir zu helfen. Erzöhle genau und ausführlich, was Du gemacht hast, welches Ergebnis Du erwartest und welches andere Ergebnis Du beobachtest. Und Deine Tastatur hat auch zwei Shift-Tasten, die bedient werden wollen. Und Kommata sind dazu da, dem Leser zu helfen, das Satzgefüge leicht zu erkennen. Dein Geschreibsel muss ich erst dreimal lesen, damit ich verstehe, was Du meinst. Also, genug gemeckert. Viel Erfolg!
ja, ein oszi wäre schön. ja, wenn man aus dem beruflichen bereich kommen würde wäre schön. ja, ISP wäre schön. ja, ein sockel für SMD teile wäre auch schön. leute mal ernsthaft: da möchte man einfach nur seinen frequenzzähler mit der günstigsten und schnellstmöglich aufzubauenden DDS-variante testen und dann zieht das so einen ellenlangen rattenschwanz an problemen hinter sich her. hätte ich sowas erahnt, hätte ich wenigstens ein jumperbares ISP mit auf die platine geätzt. hp-freund: habe den controller eben geflasht, fix eingelötet, in der dds-control "1.2288e+006" eingetragen und BINGO... es läuft aufs hz genau. vielen dank an alle beteiligten! <wieder was gelernt...>
Moin moin... Ich habe das Teil auch nachgebaut... Ein paar kleine Änderungen hier und da... dann kann der auch USB... leider habe ich das mit dem *.asm abändern für einen ATTiny2313 nicht drauf. Also wenn mir jemand die Funktionierende dds.hex mailen oder hier posten könnte, das wäre toll. bei Bedarf kann ich auch gerne Platinen fertigen (Fräse, als Prototyp) oder den Schaltplan mit Layout hochladen :-) Ich kann bei Bedarf auch gerne Bilder von meinem Exemplar hochladen. Gruß Denis
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.