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 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.
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 :(
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.
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
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.
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.
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.
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
ldir31,high(sine);setupZpointerhi
2
ldir30,low(sine);setupZpointerlo
wird zu:
1
ldir31,high(sine*2);setupZpointerhi
2
ldir30,low(sine*2);setupZpointerlo
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
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