Definierbare Anzahl von Impulsen

Fragen zur Software des digitalen Funktionsgenerators und des True-RMS-Messaufsatzes bitte hier stellen.
wAlter
kann c't-Lab-Module umbauen
kann c't-Lab-Module umbauen
Beiträge: 52
Registriert: 02.09.2013, 13:00

Definierbare Anzahl von Impulsen

Beitrag von wAlter »

Hallo Alle,
ich weiß nicht, ob ich der einzige bin, der so eine Funktion für nützlich hält - oder habe ich sie nur übersehen?
Ich kann mir vorstellen, dass zum Austesten von Logikschaltungen eine definierbare Anzahl (von 1 bis 2^16) von Pulsen entweder im PWM- oder im Logikmodus machbar ist.
Trigger zum Start der Pulsfolge könnte ein Tastendruck oder eine Anweisung über den Optobus sein
Wenn ich der einzige bin, der so etwas wünscht, werde ich mich selbst dransetzen. Das wird aber noch einige Wochen dauern, da ich gerade dabei bin mein c't-Lab aufzubauen. Was ich bisher vom DDS gesehen habe gefällt mir. Wenn ich es schaffe die C-Quellen ins Atmel Studio 6 zu ziehen (ich bin sehr unerfahren im Bauen von Make und mit Compileranweisungen), dann kann ich selbst Änderungen einbauen.
Ich hoffe, dass das Thema hier richtig ist.
Grüße
Walter
psclab38
kann c't-Lab-Konstrukteure konstruieren
kann c't-Lab-Konstrukteure konstruieren
Beiträge: 942
Registriert: 25.01.2008, 23:34

Re: Definierbare Anzahl von Impulsen

Beitrag von psclab38 »

Hallo Walter,
wAlter hat geschrieben:ich weiß nicht, ob ich der einzige bin, der so eine Funktion für nützlich hält - oder habe ich sie nur übersehen?
Ich kann mir vorstellen, dass zum Austesten von Logikschaltungen eine definierbare Anzahl (von 1 bis 2^16) von Pulsen entweder im PWM- oder im Logikmodus machbar ist.
Trigger zum Start der Pulsfolge könnte ein Tastendruck oder eine Anweisung über den Optobus sein
Ich denke, im PWM-Modus könnte man sowas einbauen - das Signal wird im Controller erzeugt. Da müsste man im Timerinterrupt die Pulse mitzählen.
Der Logikmode ist da ungeeignet, denn das Ausgangssignal kommt dort vom DDS-Baustein und den kann der uC nicht überwachen.
wAlter hat geschrieben: Wenn ich der einzige bin, der so etwas wünscht, werde ich mich selbst dransetzen. Das wird aber noch einige Wochen dauern, da ich gerade dabei bin mein c't-Lab aufzubauen. Was ich bisher vom DDS gesehen habe gefällt mir. Wenn ich es schaffe die C-Quellen ins Atmel Studio 6 zu ziehen (ich bin sehr unerfahren im Bauen von Make und mit Compileranweisungen), dann kann ich selbst Änderungen einbauen.
Ich hoffe, dass das Thema hier richtig ist.
Das Thema ist hier schon richtig. Der PWM-Code stammt allerdings von Thoralt, den kenne ich jetzt nicht aus erster Hand. Die C-Quellen lassen sich im Atmel-Studio 6.1 übersetzen; das kriegst Du schon hin.

Grüße
Paul
wAlter
kann c't-Lab-Module umbauen
kann c't-Lab-Module umbauen
Beiträge: 52
Registriert: 02.09.2013, 13:00

Re: Definierbare Anzahl von Impulsen

Beitrag von wAlter »

Hallo Paul,
danke, dass Du mir zutraust, den Quellcode ins AS6.1 zu holen. Es sieht so aus, als sei das gelungen. Allerdings ist das Ergebnis noch nicht brauchbar. Ich musste Os (optimize for size) wählen, um auf unter 100% (92,7%) Speicherplatz zu kommen. Nach dem Einschalten zeigt er im Display "?kHz" in der Zeile 2, in der Zeile 1 rennt (scrollt schnell) irgendetwas durch (nur in dem Menüpunkt Frequenzwahl). Das Gerät gibt aber 1kHz am Ausgang aus. D.h. nicht alles ging schief. Es lässt sich auch bedienen und abgesehen von der nicht funktionierenden Beschleunigung des Encoders sieht das gut aus. Der Grund weshalb ich scharf auf den Transfer war, ist halt dass ich die Entwicklungsumgebung am laufen habe und ich daran denke auf den ATMega1284 zu setzen, mit dem ich ein Kennlinienmessgerät für FET gebaut habe, das gute Dienste tut. Franz Thoralt und Joerg Wilke haben sehr gut gearbeitet, sonst wäre ich noch nicht so weit. Ich konnte auch die Stelle sehen wo sie schon die Controller Auswahl ermöglichen. Ich überlege jetzt ob ich schon jetzt dem ATMega32 rausknipsen soll oder die Funktion erst herstellen soll. Manchmal macht die Compileroptimierung was kaputt. Die will ich möglichst weglassen. Im Moment suche ich nach dem Einstatz von "_delay(xy)" um es möglichst loszuwerden. Hilfe wäre noch viel zu früh, da ich gerade angefangen habe und jetzt erst alles sichten muss.
Schade übrigens, dass die JTAG-Anschlüsse benutzt sind. Neben dem STK500, mit dem ich jetzt den Code auf den Prozessor bringe, habe ich noch den JTAGICE3. Mit dem und dem AS6.1 kann man komfortabel debuggen. Eine Kontrollausgabe über die serielle Schnittstelle erlaubt natürlich auch ordentliches Arbeiten.
Soweit der Status.
Grüße
Walter
ps: jetzt geht alles außer der Frequenzanzeige "?kHz". Ich habe Die CPU-Frequenz in der Umgebung unter Toolchain.AVR/GNU C Compiler.Symbols eingetragen. _delay kann erst noch bleiben.
post ps: Das mit dem Fragezeichen vor der Einheit ist die fehlende Bibliothek für die float Ausgabe. Ist so gut wie repariert.
Zuletzt geändert von wAlter am 19.09.2013, 13:35, insgesamt 1-mal geändert.
psclab38
kann c't-Lab-Konstrukteure konstruieren
kann c't-Lab-Konstrukteure konstruieren
Beiträge: 942
Registriert: 25.01.2008, 23:34

Re: Definierbare Anzahl von Impulsen

Beitrag von psclab38 »

Hallo Walter,

wenn die Displaydarstellung nicht korrekt ist, dann hast Du vermulich nicht die "große" vfprintf Bibliothek eingebunden. Die wird gebraucht um Float-Werte darzustellen.

Den JTAGICE3 kann man ganz bequem anklemmen, wenn man auf das TRMSC temporär verzichtet.

Es steht Dir natürlich frei einen anderen Controller aufzulöten, aber dann können andere nicht direkt von Deiner Erweiterung profitieren. Ich weiß aber auch, dass im ATmega32 nicht mehr viel Platz ist.
-Os ist schon lange Pflicht - diese Optimierung macht auch nichts kaputt; der neue avr-gcc 4.7.2 macht aber derzeit den kompaktesten Code.

Grüße
Paul
wAlter
kann c't-Lab-Module umbauen
kann c't-Lab-Module umbauen
Beiträge: 52
Registriert: 02.09.2013, 13:00

Re: Definierbare Anzahl von Impulsen

Beitrag von wAlter »

Hallo Paul,
danke für die schnelle Rückmeldung und den Tip mit dem Anschluss für den Effektivwertwandler. Das macht mich richtig froh. Übrigens, seit die nötigen Bibliotheken eingebunden sind, läuft alles wie im Original. Speicher ist bei 96,1%.
Grüße
Walter
psclab38
kann c't-Lab-Konstrukteure konstruieren
kann c't-Lab-Konstrukteure konstruieren
Beiträge: 942
Registriert: 25.01.2008, 23:34

Re: Definierbare Anzahl von Impulsen

Beitrag von psclab38 »

Hallo Walter,

ich habe mir das mit dem Pulsezählen im PWM-Mode näher angesehen und muß sagen, das funktioniert ganz gut. Ich hab' "mal eben" entsprechende Änderungen für den ATmega32 gemacht. Dabei habe ich gesehen, daß der Code für PWM derzeit nur diesen Prozessor unterstützt. Für andere Chips müßte man die Unterstützung noch nachrüsten, also in erster Linie prüfen ob die Register an der gleichen Stelle wie beim ATmega32 sind.

Die Änderungen lade ich später zu SF hoch.

Grüße
Paul
wAlter
kann c't-Lab-Module umbauen
kann c't-Lab-Module umbauen
Beiträge: 52
Registriert: 02.09.2013, 13:00

Re: Definierbare Anzahl von Impulsen

Beitrag von wAlter »

Hallo Paul,
ich habe zwar mal einen kleinen Orientierungsgang durch den Quellcode gemacht, aber wie schon geschrieben liegt die Softwaremodifikation bei mir zeitlich weiter hinten. Software mache ich nicht ungerne, aber Hardware mag ich halt lieber -vielleicht auch deshalb, weil ich Software etwas weniger gut kann. Ich habe nicht die Einblicke, die mir ermöglichen würden Ergänzungen zu schreiben ohne Kollateralschäden zu produzieren. Das hat die Software nicht verdient. Deshalb ist es sehr schön, dass Du Dir die Möglichkeiten mal angeschaut hast.
Danke!
Grüße
Walter
Benutzeravatar
Bernd_Stein
kann c't-Lab-Module umbauen
kann c't-Lab-Module umbauen
Beiträge: 97
Registriert: 26.10.2012, 09:36
Wohnort: NRW

Re: Definierbare Anzahl von Impulsen

Beitrag von Bernd_Stein »

Hallo zusammen,

das könnte ich jetzt auch gut gebrauchen, da ich eine 32iger Schlitzscheibe habe und die Flanken mit einem ATmega88 per Pin Change Interrupt zählen möchte. Irgendwie werden ztw. welche nicht gezählt.

Jetzt würde ich halt gerne eine gewisse Anzahl von Flanken bzw. Impulsen vorgeben, die in der Frequenz geändert werden können, um zu sehen wann der Pin Change Interrupt versagt.

Im Moment arbeite ich mit Burst On, bei 1kHz mit einer On Time von 1ms und der Waveform -> Logic . Dabei stört mich, dass der Ruhezustand bei ca. 2,50V liegt und nicht auf Low.
c't-Lab DDS Burst 1ms.png
c't-Lab DDS Burst 1ms.png (8.92 KiB) 7080 mal betrachtet
c't-Lab DDS Burst 1ms bei 1kHz.png
c't-Lab DDS Burst 1ms bei 1kHz.png (8.58 KiB) 7080 mal betrachtet

Bernd_Stein
- Halbes 19" Rack
- IFP Nur mit RS232
- PS3-2 Eigenes Layout
- ADA/IO mit AD16-8; IO8-32; DA12-8 (Bauteile); DA16-8 (Bauteile); Out8 (Bauteile); Out8-Netz (Bauteile)
- DDS + TRMSC aufgebohrt auf 250kHz + PM8
- DCG-16 + Bugfix Version D 2x

Bernd_Stein
psclab38
kann c't-Lab-Konstrukteure konstruieren
kann c't-Lab-Konstrukteure konstruieren
Beiträge: 942
Registriert: 25.01.2008, 23:34

Re: Definierbare Anzahl von Impulsen

Beitrag von psclab38 »

Hallo Bernd,

der Logik-Mode ist in Verbindung mit dem Burst-Mode ungeeignet. Der dreht die Amplitude des Logic-Mode für "off" auf 0 und dann bleibt halt der Offset von 2.5V übrig.

Hast Du den PWM-Mode probiert?

Grüße
Paul
Benutzeravatar
Bernd_Stein
kann c't-Lab-Module umbauen
kann c't-Lab-Module umbauen
Beiträge: 97
Registriert: 26.10.2012, 09:36
Wohnort: NRW

Re: Definierbare Anzahl von Impulsen

Beitrag von Bernd_Stein »

Hast Du den PWM-Mode probiert?
Hallo Paul,

schön dass du so schnell geschrieben hast. Freue mich mit diesem c't-Lab damals die richtige Wahl getroffen zu haben, denn die Mühen haben sich bisher gelohnt, da es ja immer noch " aktuell " ist.

Äh - den habe ich gar nicht. Und in meinen Unterlagen taucht zwar die Beschreibung zur [b]DDS-C Firmware[/b] von dir und den anderen dreien auf, aber ich scheine diese nicht zu haben, da ich halt unter Waveform -> Ext habe und nicht PWM.

Würde ja den Hardwareumbau mit einem ATmega1284 usw. machen, aber zur PWM steht nicht das was ich wünsche.

Ich brauche eine Funktion, die mir eine einstellbare Anzahl von Impulsen bzw. Flanken zur Verfügung stellt.

Wenn diese dann noch in der Frequenz einstellbar sind und evtl. sogar noch die Pulszeit einstellbar ist, wäre alles perfekt.
Falls nur Impulse ( ein Impuls hat ja zwei Flanken ) einstellbar wären, wäre das jetzt auch nicht so schlimm.
Wichtig ist halt, dass eine bestimmte Anzahl von Flanken bzw. Impulsen von 1 bis, was halt möglich ist, einstellbar wäre.

Hier finde ich leider auch nicht die DDS-C Firmware :

https://sourceforge.net/projects/dcg-firmware/

Bernd_Stein
- Halbes 19" Rack
- IFP Nur mit RS232
- PS3-2 Eigenes Layout
- ADA/IO mit AD16-8; IO8-32; DA12-8 (Bauteile); DA16-8 (Bauteile); Out8 (Bauteile); Out8-Netz (Bauteile)
- DDS + TRMSC aufgebohrt auf 250kHz + PM8
- DCG-16 + Bugfix Version D 2x

Bernd_Stein
psclab38
kann c't-Lab-Konstrukteure konstruieren
kann c't-Lab-Konstrukteure konstruieren
Beiträge: 942
Registriert: 25.01.2008, 23:34

Re: Definierbare Anzahl von Impulsen

Beitrag von psclab38 »

Hi Bernd,

die letzte Änderung ist von 2012/2013; ich weiss leider auch mehr alles auswendig.

Es gibt eine spezielle DDS-PWM-Firmware und es braucht auch einen Hardware-Umbau für PWM (auf Kosten der Analog-in Funktion). Frequenz/Tastverhältnis/Pulszahl sind einstellbar.

Code, Firmware und Doku findest Du wenn Du auf Sourceforge bei "Browse Source" weitersuchst.

Gruß
Paul
Benutzeravatar
Bernd_Stein
kann c't-Lab-Module umbauen
kann c't-Lab-Module umbauen
Beiträge: 97
Registriert: 26.10.2012, 09:36
Wohnort: NRW

Re: Definierbare Anzahl von Impulsen

Beitrag von Bernd_Stein »

psclab38 hat geschrieben: 12.11.2019, 12:38 Hi Bernd,

die letzte Änderung ist von 2012/2013; ich weiss leider auch mehr alles auswendig.

Es gibt eine spezielle DDS-PWM-Firmware und es braucht auch einen Hardware-Umbau für PWM (auf Kosten der Analog-in Funktion). Frequenz/Tastverhältnis/Pulszahl sind einstellbar.

Code, Firmware und Doku findest Du wenn Du auf Sourceforge bei "Browse Source" weitersuchst.

Gruß
Paul
Ich habe hier alles durchstöbert, aber einen Hinweis, dass die Pulszahl einstellbar sein soll, habe ich leider nicht gefunden.

https://sourceforge.net/p/dcg-firmware/ ... /tree/dds/

Danke für deine Mühe.


Bernd_Stein
- Halbes 19" Rack
- IFP Nur mit RS232
- PS3-2 Eigenes Layout
- ADA/IO mit AD16-8; IO8-32; DA12-8 (Bauteile); DA16-8 (Bauteile); Out8 (Bauteile); Out8-Netz (Bauteile)
- DDS + TRMSC aufgebohrt auf 250kHz + PM8
- DCG-16 + Bugfix Version D 2x

Bernd_Stein
psclab38
kann c't-Lab-Konstrukteure konstruieren
kann c't-Lab-Konstrukteure konstruieren
Beiträge: 942
Registriert: 25.01.2008, 23:34

Re: Definierbare Anzahl von Impulsen

Beitrag von psclab38 »

Hi Bernd,

Du kannst die Frequenz, das Tastverhältnis, die Anzahl der Pulse und die Polarität einstellen, per Menü und per Bus.

Code: Alles auswählen

2013-09-24 
* added: PWM Pulse counting mode (thanks to Walter for the idea) = > OPT 71 / DCC (0 = continuous, max 30000)
* added: PWM Pulse inversion option => OPT 72 / DCP (0 = non-inv, 1 = inv)
         Note for the non-contiuous mode: on the inversion of the polarity one pulse is triggered to clear the PWM Waveform Generator logic
* added: PWM command definition in "SyntaxDDS-C.xls" for DCC/DCP
Die Kurvenform schaut bei 100kHz auch noch annehmbar aus.
1kHz, 10%, non-inv, 7 Pulse
1kHz, 10%, non-inv, 7 Pulse
1kHz, 50%, inv, 5 Pulse
1kHz, 50%, inv, 5 Pulse
Ich hoffe, das hilft Dir weiter.

Gruß
Paul
Benutzeravatar
Bernd_Stein
kann c't-Lab-Module umbauen
kann c't-Lab-Module umbauen
Beiträge: 97
Registriert: 26.10.2012, 09:36
Wohnort: NRW

Re: Definierbare Anzahl von Impulsen

Beitrag von Bernd_Stein »

psclab38 hat geschrieben: 12.11.2019, 20:40 Ich hoffe, das hilft Dir weiter.

Gruß
Paul
Super, danke, das ist was ich meinte.

Mit deinem Text konnte ich sogar in dem 18,0kB und 409 Lines Dokument finden wo es steht.

Wäre toll, wenn du mir noch schreiben könntest, wo ich die HEX-Datei (.hex) und die eventuelle EEPROM-Datei (.eep) finde und ob diese für den ATmega32 oder einen anderen µC-Typ sind.

Ich übe mich immer noch in AVR8ASM, also der Assemblersprache für die 8-Bit-AVR-Mikrocontroller und komme daher mit dem ganzen C-Zeugs gar nicht klar. Kann also nichtmals aus einem C-Quellcode die erforderlichen Dateien zum flashen des µC erzeugen.


Bernd_Stein
- Halbes 19" Rack
- IFP Nur mit RS232
- PS3-2 Eigenes Layout
- ADA/IO mit AD16-8; IO8-32; DA12-8 (Bauteile); DA16-8 (Bauteile); Out8 (Bauteile); Out8-Netz (Bauteile)
- DDS + TRMSC aufgebohrt auf 250kHz + PM8
- DCG-16 + Bugfix Version D 2x

Bernd_Stein
psclab38
kann c't-Lab-Konstrukteure konstruieren
kann c't-Lab-Konstrukteure konstruieren
Beiträge: 942
Registriert: 25.01.2008, 23:34

Re: Definierbare Anzahl von Impulsen

Beitrag von psclab38 »

Hi Bernt,

tut mir leid, dass Du suchen musstest.

Hier sind die Hexfiles:
https://sourceforge.net/p/dcg-firmware/ ... -firmware/

Das für DDS mit dem ATmega32 und PWM mit OC1B heißt: DDSFirmware_PWM.hex

Die Doku findest Du hier:
https://sourceforge.net/p/dcg-firmware/ ... s/dds-doc/
Hier ist die Anleitung dds-german.pdf für den Umbau, in Kapitel 4.1.
Wichtig: Die o.g. Firmware ist für die Variante OC1B kompiliert, also bitte Kapitel 4.1.2 beachten.

Grüße
Paul

PS: Es gibt keine eep-Datei bei der C-Firmware, die Firmware erzeugt sich die Daten beim ersten Start selbst. Mit dem ParamBackupRestore.vi kannst Du Deine bestehende Kalibrierung retten. Speichere sicherheitshalber vor Deinem Update das EEP von dem Controller auf die Festplatte.
Antworten