Forum: Mikrocontroller und Digitale Elektronik Präzessionsgenerator


von CS (Gast)


Lesenswert?

Hallo zusammen,
bin gerad dabei einen präzisen 1,2 kHz Generator zu bauen. Dabei rechnet 
mir ein Atmega eine Sinustabelle aus, speichert sie in den eigenen SRAM 
und ruft sie dann zur Laufzeit draus ab. Über einen 8-Bit DA-Wandler 
wird anschließend der Sinus geformt.
Wenn man nun zwei dieser Schaltungen aufbaut und mit dem selben externen 
Takt beispielsweise aus einem Sinusgenerator speist, sollte davon 
auszugehen sein, dass beide von den Atmegas generierten Signal 
zeitgleich einheitlich  ausgegeben werden. Vielleicht Phasenverschoben 
da der Einschaltmoment nicht 100% der Selbe sein wird. Leider muss ich 
aber feststellen das die Signale zueinander driften. Nun meine Frage wie 
kann das sein.

- Beide At-Megas arbeiten mit dem selben Takt ( aus einer Quelle )
- Beide At-Megas führen identischen Quellcode aus
- Beschaltung beider At-Megas ist komplett identisch

Gemessen wird mit einem Oszi auf zwei Kanälen. Zu Beginn werden die 
Nulldruchgänge der Signale mit Markern versehen. Nach einer Stunde liegt 
das nicht getriggerte Signal 20 µs neben den zuvor bestimmten Marker. 
Ein Messfehler ist somit eigentlich ausgeschlossen.

Nachdem der Takt der At-Megas identisch ist, kann es nur an den Megas 
selbst liegen. Meine Vermutung sind die Diskriminatoren die den Takt 
auswerten. Allerdings findet man in keinen Datenblatt Angaben zu solchen 
Merkmalen. Deswegen wollte ich mal Nachfragen was ihr davon haltet.

Verwendet wird ein AT-Mega 128 mit Taktfreq. 8 MHz

Mfg CS

von Floh (Gast)


Lesenswert?

Auch identische Spannungsversorgung?

von CS (Gast)


Lesenswert?

Jup alles aus einer Hand

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Präzession ist etwas komplett anderes als Präzision, und ob man 
Präzession mit einem Generator herstellen kann, wage ich zu bezweifeln.

von CS (Gast)


Lesenswert?

Ich bitte um Verzeihung für den Ausrutscher in der Semantik. Ich denke 
aber die Beschreibung zeigt gut das Ziel gut auf.
Interessant wäre warum du der Meinung bist das ein Generator sich für 
solche Zwecke nicht eignet?

von Thomas (Gast)


Lesenswert?

CS schrieb:
> Ein Messfehler ist somit eigentlich ausgeschlossen.

Das glaube ich nicht!
Man müßte Deine Schaltung kennen und Dein Programm. Dann müßte man 
wissen, ob irgendwo ein DC-Offset den Triggerpegel verschiebt. 
Vielleicht sogar im Oszi.

von Random .. (thorstendb) Benutzerseite


Lesenswert?


von Pfffährt (Gast)


Lesenswert?

CS schrieb:
> Wenn man nun zwei dieser Schaltungen aufbaut und mit dem selben externen
> Takt beispielsweise aus einem Sinusgenerator speist

In diesem Falle könnte man auch feuchten Torf nehmen.

von CS (Gast)


Lesenswert?

Das Programm ist wenig spektakulär. Zu meiner Schande ist es in Bascom 
geschrieben.

In der Hauptschleife, welche den Sinus erzeugt wird lediglich der Port 
neue zugewiesen. 630 Punkte ergeben einen Sinus. Die berechneten 
Sinuswerte stehen in Buffer(j). Ein Bytearray welches eben 630 Bytes 
tief ist. Das funktioniert an sich recht gut.

Code:

Do

   For J = 1 To 630 Step 1

      Porta = Buffer(j)

   Next

Loop


Zum Thema DC-Offset. Das Oszi misst AC und nach dem DA-Wandler sitzt 
eine OP-Stufe zur Pegelanpassung. Ausgekoppelt wird diese über 1µF. Ein 
DC-Offset kann ich mir damit schwer vorstellen. Ist aber ein 
interessanter Ansatz. Ich muss ehrlich zugeben ein Messfehler in der 
Form kam mir noch nicht in den Sinn.

von CS (Gast)


Lesenswert?

Pfffährt schrieb:
> In diesem Falle könnte man auch feuchten Torf nehmen.

Man könnte auch einfach nur posten wenn man was zum Thema zu sagen hat. 
Ich denke jedem ist klar, dass das nicht der Endzustand ist. Geplant ist 
den Takt über Ofenoszillatoren zu erzeugen, welche nur 1-2 ppm 
Schwankungen unterliegen. Solang der gleiche Takt aber nicht das Ziel 
erfüllt, bringt es wenig darauf einzugehen.

von Klaus D. (kolisson)


Lesenswert?

Pfffährt schrieb:
> CS schrieb:
>> Wenn man nun zwei dieser Schaltungen aufbaut und mit dem selben externen
>> Takt beispielsweise aus einem Sinusgenerator speist
>
> In diesem Falle könnte man auch feuchten Torf nehmen.

Ich denke es spielt auf  den "SINUS" aus dem Generator an.
Besser wird  wohl ein Rechteck sein.

k.

von Mathias (Gast)


Lesenswert?

Einen externen synchronen Reset. Z.B. mit TL7705.

von CS (Gast)


Lesenswert?

Damit wäre die Synchronität geklärt. Leider nicht der Drift der Signale 
zueinander über die Zeit.

von ZS (Gast)


Lesenswert?

Hallo CS,
wie sieht denn die Schaltung zur Pegelanpassung aus. Ob man einen Sinus 
oder Rechteck als Takt nimmt, ist völlig banane, da der Takt um 
Größenordnungen von Deinem Ausgangssignal weg ist. Es kann nur an einem 
Aufwärmeffekt von OPs oder so liegen. Wie sieht denn die Verschiebung 
nach einer weiteren Stunde aus ?

von Karl H. (kbuchegg)


Lesenswert?

Das einer der beiden µC Takte verliert erscheint mir auch sehr 
ungewöhnlich. Ich würde auch eher auf ein Problem im der Auswertung 
tippen.

Lässt sich aber verifizieren.
Vertausch mal die Messkanäle und miss noch mal 1 Stunde. Wenn der 
'Fehler' dann auf den anderen Kanal mitgegangen ist, steigen die Chance, 
dass es was mit den µC zu tun hat.

von Peter R. (pnu)


Lesenswert?

Ist da sichergestellt,dass nicht irgendwelche Interrupts am Programm 
beteiligt sind?

Nur wenn das oben aufgeführte Programm alleine abläuft, entsteht die 
exakte Frequenz, sonst mischen irgendwelche Interrupts mit, die den 
Sinusverlauf in fast zufälliger Weise unterbrechen.

Eine andere Möglichkeit wäre, dass durch verschiedene Empfindlichkeit 
der beiden Aufbauten gegen Störimpulse der Programmablauf ins "Stottern" 
kommt.

Die nächste Version ist, dass der Takt keine genauen Flanken hat, sodass 
beide oder einer der Kontroller einzelne Flanken verpasst.

von Stefan E. (sternst)


Lesenswert?

Möglich wäre auch ein Hardwareproblem, das zu gelegentlichen Resets 
führt.

Als allererstes würde ich aber mal überprüfen, ob auch wirklich mit 
100%iger Sicherheit beide Controller auf externen Takt laufen.

von Achim M. (minifloat)


Lesenswert?

CS schrieb:
> Zum Thema DC-Offset. Das Oszi misst AC und nach dem DA-Wandler sitzt
> eine OP-Stufe zur Pegelanpassung. Ausgekoppelt wird diese über 1µF. Ein
> DC-Offset kann ich mir damit schwer vorstellen.

Dann lass dir doch einfach einen Sägezahn ausgeben und zähle die 
Bitwechsel des MSB mit jeweils einem Ereigniszähler. Wenn die Zahlen 
dann auseinander laufen, würde ich wirklich mißtrauisch werden.

Was sind das denn für DA-Wandler? mit R2R aufgebaut? Dann weichen die 
Wandler schonmal voneinander ab.
Analoge Signalverarbeitung ist beteiligt(der OP und 1µF), Leckströme und 
leichtes (thermisches) Weglaufen der OPV tut auch das seine.
Wie sieht die Stromversorgung aus? Netzgekoppelt? Dann kommen von da 
auch Störungen rein.

Kann man das nicht auch mit einem einzigen Controller lösen?
Wie Präzise muss es denn sein?

Wenn du zwei 8bit D-Latches nimmst, und denen einen synchronen Latchpuls 
gibst, werden die Ausgangszustände beider nahezu gleichzeitig 
aktualisiert.
Wenn die Pins des µC nicht reichen, vielleicht einen Port nehmen und pro 
Kanal zwei Latches "hintereinander" schalten.
1
___                  _____         _____
2
   |   8        8   |Latch|   8   |Latch|   8
3
 PA|===/===##===/===| 1A  |===/===| 1B  |===/===DA1
4
   |       ||   1A--|>____|    B--|>____|
5
PB1|--1A   ||        _____         _____
6
PB2|--2A   ||   8   |Latch|   8   |Latch|   8
7
PB3|--B    ##===/===| 2A  |===/===| 2B  |===/===DA2
8
   |            2A--|>____|    B--|>____|
9
___|
Programmcode als Pseudocode:

-Programmcode Beginn-
Do

Analogwert 1 berechnen/aus Tabelle lesen
Analogwert 1 auf PA ausgeben
Latchpuls 1A setzen
Latchpuls 1A löschen

Analogwert 2 berechnen/aus Tabelle lesen
Analogwert 2 auf PA ausgeben
Latchpuls 2A setzen
Latchpuls 2A löschen

Latchpuls B setzen
Latchpuls B löschen

Loop
-Programmcode Ende-

mfg mf

von Klaus D. (kolisson)


Lesenswert?

Wo gerade von den Latches gesprochen wird:

Ich habe auch so eine Schaltung mit 2 mal DAC08.
Da habe ich 3 stck LS373 (oder 374) drinne.
Da wird das eine 8 bit Latck vorgeladen und wenn ich den 2ten Kanal
schreibe wird der vorgeladene wert zeitsynchron auf das 2te Latch
durchgereicht.

Wenn man die Ausgabeschleife dann in Inlineassembler mit
Indexregister x und Y macht wird es sogar recht schnell.

Klaus

von Andrew T. (marsufant)


Lesenswert?

Rufus Τ. Firefly schrieb:
> Präzession ist etwas komplett anderes als Präzision,

korrekt.

> und ob man
> Präzession mit einem Generator herstellen kann, wage ich zu bezweifeln.

[Loriot modus]
Ach.

[/Loriot modus]

Es ist sogar trivial dies herzustellen.

Denn: Die Präzession ist allgemein die Richtungsänderung der Achse eines 
rotierenden Körpers.

D.h. z.B. ein Handstreich genügt am Kresiel.
Ob man denjenigen der diesen Handstreich auf Anforderung ausführt als 
Generator bezeichnen will. Oder als Experimentator. Nun denn.

Ach.

von CS (Gast)


Lesenswert?

Wow danke für die vielen Antworten. Ich weis gar nicht wo ich anfangen 
soll ;)

Das Signal läuft kontinuierlich über die Zeit. In 10 Stunden ist es um 
knapp 90° "gewandert". Bei runden 1,2 kHz ca. 200 µs.

Messkanäle wurden auch schon vertauscht. Sachverhalt hat sich mit 
gedreht ;) Hinsichtlich der Tatsache, dass immer auf Kanal 1 getriggert 
wird auch irgendwie sinnig.

Interrupts sind alle Disabled. Es werden wirklich lediglich die Zeilen, 
wie zuvor beschrieben, ausgeführt. Ein Reset kann auch nicht sein, da zu 
Beginn des Programms auf den zweiten Controller gewartet wird. Ein 
Taster lässt beide in die Schleife rennen und den Sinus generieren.

Der Takt ist ein sauberer Sinus. Keine Glitches, Störimpulse oder 
sonstiges überlagert. Wird an einen zweiten Oszilloskop mit geschnitten.

Mini Float schrieb:
> Was sind das denn für DA-Wandler? mit R2R aufgebaut? Dann weichen die
> Wandler schonmal voneinander ab.
> Analoge Signalverarbeitung ist beteiligt(der OP und 1µF), Leckströme und
> leichtes (thermisches) Weglaufen der OPV tut auch das seine.
> Wie sieht die Stromversorgung aus? Netzgekoppelt? Dann kommen von da
> auch Störungen rein.

Die DA-Wandler sind mit R2R aufgebaut. Sicherlich ein gewisses Problem. 
Einen systematischen Drift würde ich dem R2R Netzwerk dennoch nicht 
zuschreiben. Auch thermisches einwirken usw. spielt sicher eine Rolle. 
Aber im µS Bereich? Der systematische Drift macht sorgen. Würde der 
Sinus um +-1 µs schwanken ok. Aber er entfernt sich kontinuierlich ca. 
20 µs die Stunde. Irgendwie muss das doch bedeuten das entweder falsch 
gemessen wird und der Messfehler sich aufsummiert, oder der Takt von 
einem Controller schneller interpretiert wird als vom anderen. Deswegen 
auch mein anfänglicher Tipp auf die Diskriminatoren welche den Takt 
auswerten.

Zwei µC sind notwendig da die Referenzen räumlich von einander getrennt 
werden müssen. Dabei sollten die generierten Signal auf +-1µS genau 
laufen.

von Klaus D. (kolisson)


Lesenswert?

Ergänzung ...an Autor: CS (Gast)

Wenn du Interesse hast das ganze auf einem Prozessor mit den
3 Latches laufen zu lassen kann ich dir gern die Software heraussuchen
und eine grobe Schaltskizze machen.
Ich müsste dann allerdings auch noch ein wenig in der Software
kommentieren, da es bei mir an sowas immer mangelt.

Software ist in Bascom mit Assembler für die Ausgabe.
Aus Gründen der Geschwindigkeit ist die  Tabelle für jeden Kanal
aber nur $FF lang.

Er kann Sinus , Dreieck und Rechteck mit einstellbarem Duty.
Zudem kann die Phase der beiden Kanäle in 1/255zigtel Schritten
eingestellt werden.

Bedienung läuft über terminalprogramm.

Klaus

von Klaus D. (kolisson)


Lesenswert?

CS schrieb:
> Der Takt ist ein sauberer Sinus. Keine Glitches, Störimpulse oder
> sonstiges überlagert. Wird an einen zweiten Oszilloskop mit geschnitten.

Das ist doch unschön. Wenn du einen Fehler suchst würde ich diese
Fehlerquelle mal zunächst ausschliessen und einen integrierten
Quarzoscillator einsetzen. der Schmitttrigger im Atmel hat auch eine
Drift.

Klaus

von spess53 (Gast)


Lesenswert?

Hi

>- Beide At-Megas arbeiten mit dem selben Takt ( aus einer Quelle )
>- Beide At-Megas führen identischen Quellcode aus
>- Beschaltung beider At-Megas ist komplett identisch

Da fehlen noch die Fuses.

MfG Spess

von Michael D. (etzen_michi)


Lesenswert?

Kommt mir auch ein wenig komisch vor.

Kannst du den Datenstrom zu den DAC`s messen?
Kannst du den Punkt wann die Spannung wieder Steigt messen?

Ich vermute mal auf einen unterschiedlichen Temperaturdrift der DAC`s 
wodurch die Zeiten gleich sind aber die Spannungen sich verschieben

 Hab ein wenig mit dem Abschicken gebraucht .. hat sich ja schon 
erledigt

von Timm T. (Gast)


Lesenswert?

Klaus De lisson schrieb:
> der Schmitttrigger im Atmel hat auch eine
> Drift.

Das würde aber nur Schwankungen ergeben, keine kontinuierliche 
Verschiebung. Denn Takte dazuerfinden oder weglassen kann der 
Schmitttrigger wohl kaum.

Fuses auf internen Taktgeber überprüfen. Wobei dann eigentlich die 
Verschiebung stärker sein müsste.

Ansonsten mal mit Kältespray die AVRs, die DACs und die OPVs testen, ob 
sich da eine Änderung ergibt.

von Simon K. (simon) Benutzerseite


Lesenswert?

Es ist bisher völlig offen, wie du die Mikrocontroller synchronisiert 
hast.
CKOUT?
Mein Tipp liegt irgendwo in die Richtung.

von Axel G. (axelg) Benutzerseite


Lesenswert?

Simon K. schrieb:
> Es ist bisher völlig offen, wie du die Mikrocontroller synchronisiert
> hast.
Er schrieb doch: Ein Sinus für beide.

von Ulrich (Gast)


Lesenswert?

Laufen denn die µC überhaupt mit dem externen Takt ?  Ohne umstellen der 
Fuses wird nur der interne Takt genutzt, auch wenn ein externer Takt 
anliegt.
Bei einem externen 8 MHz Takt könnte es eventuell passieren das man eine 
nicht vorgesehene, und nicht perfekte Synchronisation des internen 
Taktes auf den externe bekommt - das könnte die so geringe Drift 
erklären.

Wie schon geschrieben, sollte die Aufgabe auch 1 µC erledigen können, 
auch schon ein etwas kleinerer.

von Zielfahnder (Gast)


Lesenswert?

Eine Veröffentlichung des Maschinencodes, der auf den AVRs läuft 
(BASCOM-Compilat?) bspw. zur Kontrolle auf tatsächliche 
"Interrupt-Freiheit" (oder doch ein "versteckter" 
Timer/IOHandler/Scheduler?) sowie eine schematische Darstellung des 
Versuchsaufbaus, die "im Bild" anstelle von aneinandergereihten 
"Lesungen zum Verdrahtungsplan" u.a zweifelsfrei erkennen läßt, welches 
Taktsignal (z.B. Frequenz, Pegel, Wellenform) auf welchem Weg (z.B. 
Leitungswege, galvanisch oder kapazitiv) die AVRs erreicht, wäre gewiß 
sinnvoller, als hier weiter mit "Bleiguß in Glaskugeln" 
herumzuphantasieren.

;-)

von Michael R. (mexman) Benutzerseite


Lesenswert?

Timm Thaler schrieb:
> Klaus De lisson schrieb:
>> der Schmitttrigger im Atmel hat auch eine
>> Drift.
>
> Das würde aber nur Schwankungen ergeben, keine kontinuierliche
> Verschiebung. Denn Takte dazuerfinden oder weglassen kann der
> Schmitttrigger wohl kaum.

Doch, da hat Klaus schon recht.... aber die beschriebene Drfit von
"knapp 90°" halte ich dafuer doch zu gross.

CS sollte wirklich mal das tun, was ihm hier schon mehrfach empfohlen 
wurde:

1. Kein Sinus sondern Rechteck als Takt
2. Selektiv Temperatureinfluesse pruefen
3. Schaltung posten
4. Assemblerlisting posten
5. Fuses posten



gruss

Michael

von Klaus D. (kolisson)


Lesenswert?

Danke Mexman,
Ich finde auch, dass man bei merkwürdigen Fehlern zunächst
alles optimieren sollte was man mit einfachen Mitteln kann.

Zudem kann TO ja auch einfach seinen Lookuptable mal abweckselnd
mit 00 unf ff füllen. Dann wäre ein oscillografieren am MSB auch simple.

Klaus de Lisson

von Simon K. (simon) Benutzerseite


Lesenswert?

Axel Gartner schrieb:
> Simon K. schrieb:
>> Es ist bisher völlig offen, wie du die Mikrocontroller synchronisiert
>> hast.
> Er schrieb doch: Ein Sinus für beide.

Ulrich schrieb:
> Laufen denn die µC überhaupt mit dem externen Takt ?  Ohne umstellen der
> Fuses wird nur der interne Takt genutzt, auch wenn ein externer Takt
> anliegt.

Das meinte ich.

von Klaus D. (kolisson)


Lesenswert?

Klaus de Lisson

p.s.
Zudem könnte ja auch sein Sinusgenerator thermische Offsetdrift haben,
die dann von dem einzelnen CPU verschieden beantwortet würde.

von Peter R. (pnu)


Lesenswert?

CS schrieb:

> Das Signal läuft kontinuierlich über die Zeit. In 10 Stunden ist es um
> knapp 90° "gewandert". Bei runden 1,2 kHz ca. 200 µs.
>

Das sind also in 10 Stunden 1/4 Schwingung bei 1200 Hz.

also eine relative Abweichung von 1 zu  (4 x 1200 x 10 x3600) = 
(127,8 EXP 6)

Es kann sich also wirklich nur um ein gelegentliches "Stolpern" im 
Programmablauf handeln, z.B. dass sich einer der beiden Kontroller wegen 
geringerer Störsicherheit einen peak einfängt.

Ohne Bild vom Aufbau, Schaltbild , Code usw. wird das nichts.

Wenn Du weiter herum-geheim-nistest, mach den Dreck alleene.

So ist jeder getippte Buchstabe umsonst.

von Simon K. (simon) Benutzerseite


Lesenswert?

Es ist meiner Meinung nach höchst unwahrscheinlich, dass der Prozessor 
"stolpert". Das Problem werden wohl einfach die falsch gesetzten 
Fusebits sein.

von Michael R. (mexman) Benutzerseite


Lesenswert?

Simon K. schrieb:
> Es ist meiner Meinung nach höchst unwahrscheinlich, dass der Prozessor
> "stolpert". Das Problem werden wohl einfach die falsch gesetzten
> Fusebits sein.

Hallo Simon,
Du meinst also, beide uC laufen auf internem Oszillator und 
nicht-synchron?
Dann waere das aber ungefaehr wie 6 Rchtige im Lotto: Die internen 
Oszillatoren sind dermassen daneben, da sind <0.03ppm m.E. nicht drin!

Oder hast Du da bessere Erfahrungen gemacht?

Ich habe bisher mit dem internen Oszillator nicht mal eine RTC basteln 
koennen, die bei Austausch des uC nicht mindestens 10  Minuten in der 
Woche falsch ging!


Gruss
Michael

von Udo S. (urschmitt)


Lesenswert?

Michael Roek schrieb:
> Du meinst also, beide uC laufen auf internem Oszillator und
> nicht-synchron?

Könnt ihr nicht lesen?
im ersten beitrag schreibt der TO:
CS schrieb:
> Wenn man nun zwei dieser Schaltungen aufbaut und mit dem selben externen
> Takt beispielsweise aus einem Sinusgenerator speist,

von Jörg H. (idc-dragon)


Lesenswert?

Was ich zum Thema Präzision noch anmerken wollte:

CS schrieb:
> Code:
>
> Do
>
>    For J = 1 To 630 Step 1
>
>       Porta = Buffer(j)
>
>    Next
>
> Loop

Ich weiß nicht was Bascom für einen Code ausspuckt, aber vermutlich 
werden für die äußere Schleife ein paar Extra-Takte anfallen. Der 
erzeugte Sinus hat also kleine Plateaus, die Samples werden dort nicht 
gleichmäßig erzeut. Ergibt einen gewissen Klirrfaktor. Keine Ahnung ob 
das für die Anwendung relevant ist, aber ich hebe mal vorsichtshalber 
den Finger.

Jörg

von Ulrich (Gast)


Lesenswert?

Solange man bei AVR die Fuses nicht verstellt, läuft der mit dem 
internen Takt, unabhängig davon ob man zusätzlich einen externen Takt 
anlegt. Wenn alles so wäre wie anfangs beschrieben sollten die beiden µC 
synchron laufen und es gäbe keine Problem.

Um den weiter aktiven internen Takt auszuschließen sollte der TO endlich 
mal verraten was in den Fusebits der beiden µC steht.

von CS (Gast)


Lesenswert?

Hallo zusammen,

Jörg H. schrieb:
> Ich weiß nicht was Bascom für einen Code ausspuckt, aber vermutlich
> werden für die äußere Schleife ein paar Extra-Takte anfallen. Der
> erzeugte Sinus hat also kleine Plateaus, die Samples werden dort nicht
> gleichmäßig erzeut. Ergibt einen gewissen Klirrfaktor. Keine Ahnung ob
> das für die Anwendung relevant ist, aber ich hebe mal vorsichtshalber
> den Finger.

Sehr richtig! Direkt nach dem R2R Netzwerk ist dies, wenn auch minimal, 
noch zu sehen. Die Op-Stufe sowie ein nachgelagert Tiefpass filtern das 
Signal dann aber soweit, dass dieses Plateaus nicht mehr merklich zu 
registrieren sind. Dennoch danke für den Hinweis.

Die Fuses stehen selbstverständlich auf externen Takt. Benutzt man das 
interne RC-Glied ist an Synchronität nicht zu denken. Den Takt auf ein 
Rechteck umzuschalten ist zwar im Testaufbau möglich, im späteren 
Einsatz jedoch nicht da hier ein stabiler Oszillator mit 0.003 ppm/Tag 
den Takt erzeugt.
Nachdem die Stellen Takt, LSB des µC, Ausgang R2R Netzwerk gemessen 
hatte, konnte ich den Fehler eingrenzen. Eindeutig erzeugte der µC den 
Drift. Da ich mir nicht vorstellen konnte, wie die Hardware des µC dies 
bewerkstelligen soll und wie die Diskussion gezeigt hat, hier auch 
keiner :D, ist der Code in Assembler implementiert worden. Sie da, der 
Drift ist nicht mehr vorhanden. Mein Tipp ist nun der Compiler, bzw. 
irgendwelchen ungewollten Sprünge die sich bei µC A von B unterscheiden.

Leider sitze ich gerad vor einem anderen PC auf welchen die Software des 
µC nicht gespeichert ist. Ich werde die Tage den Basic Code posten. 
Vielleicht fällt euch etwas auf was ich übersehen hab. Das Statement

"Disable Interrupts"

findet sich aber definitiv im Code :D


Ich möchte mich an der Stelle bei allen hier für die Anregungen und 
Hinweise bedanken.


MFG CS

von MarioT (Gast)


Lesenswert?

CS schrieb:
> ist der Code in Assembler implementiert worden. Sie da, der
> Drift ist nicht mehr vorhanden. Mein Tipp ist nun der Compiler, bzw.
> irgendwelchen ungewollten Sprünge die sich bei µC A von B unterscheiden.

Wenn man Baskom einmal in HEX wandelt und auf beide µC spielt?
Wer glaubt daran?

von Martin (Gast)


Lesenswert?

Wenn du einen definiert laufenden Sinus produzieren möchtest, schmeiß 
den ganzen Basic-Kram weg und nimm eine Assemblerschleife. Such mal nach 
"miniDDS" von Jesper Hansen.

von Düsentrieb (Gast)


Lesenswert?

cS, evtl sottest mal erklären, wozu das ganze sein soll....
evtl gibt zb mit DDS , einfachere und bessere möglichkeiten...

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
Noch kein Account? Hier anmelden.