Forum: Mikrocontroller und Digitale Elektronik Suche: Generator für mehrere digitale Signale


von Moritz G. (mbydq2)


Lesenswert?

Liebes Board,

ich suche etwas, kann es Google aber nicht klar machen. Es ist zumindest 
kein elektrischer Generator oder Inverter.

Ich suche eine AVR SW die aus einem ATmega (Arduino) einen 
Digitalsignalgenerator (engl. digital pattern generator) mit mehreren 
Kanälen macht.
Das müssen schon tausende vor mir gewollt und realisiert haben.
Ich mag aber keinen Rechteckgenerator, keine PWM, keinen 
Funktionsgenerator, keinen Sinusgenerator, keine DDS, sondern einfach 
Pin an/aus/hochohmig. Es braucht auch nichts einlesen.
Ich brauche es um Steuersequenzen als Stimuli an Schaltungen zu geben. 
Später werden die Stimuli dann von den fertigen Geräten selbst erzeugt, 
vorher möchte ich Teile aufbauen und mit statischen Sequenzen anregen.
Mögliche Realisierung: Ich möchte eine Datei per Terminalprogramm an den 
uC schicken, dann den Taster kurz betätigen oder den Ext-Interupt 
elektrisch auslösen und der Inhalt der Datei wird abgespielt. (Die ganze 
Datei wird übertragen aber der uC speichert sie nicht im Textformat.)
Dazu soll die Datei aus drei Befehlen bestehen: Time-base, set <time> 
<pin> <state>, end-of-file
Das dürfte ausreichend beschreiben was ich suche.

Hat jemand so etwas schon gesehen oder kann einen effektiven Suchstring 
empfehlen?

Vor 20 Jahren hätte man so etwas mit dem Parallelport gemacht.

: Verschoben durch User
von Frank G. (frank_g53)


Lesenswert?

Moritz G. schrieb:
> Hat jemand so etwas schon gesehen oder kann einen effektiven Suchstring
> empfehlen?

Pattern Generator?
https://www.ikalogic.com/scanaquad-logic-analyzer-signal-generators/

von Wolfgang (Gast)


Lesenswert?

Moritz G. schrieb:
> Das dürfte ausreichend beschreiben was ich suche.

Sicher?

Ganz spontan fallen mir dazu als weitere Fragen ein:
 - wieviele Kanäle
 - welcher minimale Flankenabstand
 - wie umfangreich sind die Pulsformen (Flankenanzahl, Sequenzdauer)

von Jakob (Gast)


Lesenswert?

Und wenn du es mit einem AVR machen willst, schickst du
die begrenzte Anzahl von Zuständen von 8 Ports
in sein SRAM, gibst grob die Taktfrequenz vor und los gehts.

von Moritz G. (mbydq2)


Lesenswert?

Wolfgang schrieb:

>  - wieviele Kanäle
>  - welcher minimale Flankenabstand
>  - wie umfangreich sind die Pulsformen (Flankenanzahl, Sequenzdauer)

"aus einem ATmega (Arduino)"

Das Ganze ist ohne Anspruch. Einfach ein paar bits zu vorgegebener Zeit 
setzen. Pulse von 10us Dauer sind völlig ausreichend und ohne ASM 
machbar.
Wenn ich nichts finde schreibe ich es am WE selbst.
Ich werde einfach einen Port nehmen damit es Gleichzeitigkeit gibt und 
eine Serie von 24 bit "Befehlen" im 2KB SRAM speichern. Immer wenn der 
Zählerstand im "Befehl" erreicht ist wird das Byte an den Port 
geschrieben.
Ganz simpel.

von Wolfgang (Gast)


Lesenswert?

Moritz G. schrieb:
> Wenn ich nichts finde schreibe ich es am WE selbst.

Das könnte schon längst fertig sein.
Der größte Aufwand wird wohl der Interpreter für deine Textdatei ...

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Moritz G. schrieb:
> Ich werde einfach einen Port nehmen damit es Gleichzeitigkeit gibt und
> eine Serie von 24 bit "Befehlen" im 2KB SRAM speichern. Immer wenn der
> Zählerstand im "Befehl" erreicht ist wird das Byte an den Port
> geschrieben.
> Ganz simpel.

 Warum hast du es dann nicht schon längst gemacht ?

 Ohne eigene Ideen, ohne entsprechendes Wissen, unfähig selbst
 danach zu googeln, aber ganz simpel ?

 LOL.

von Moritz G. (mbydq2)


Lesenswert?

Wolfgang schrieb:

> Das könnte schon längst fertig sein.

Ja, aber erst mal einen Arduino aus dem Keller holen, die SW 
installieren und damit klar kommen ...
Und wer kommt schon auf die Idee, dass es das nicht tausendfach zum 
Runterladen gibt?

> Der größte Aufwand wird wohl der Interpreter für deine Textdatei

Nicht mehr als andere Teile. Bei 3 (zeiteinheit, @t set p w, eof) 
Befehlen muss man keine Erfahrung im Schreiben von Parsern haben. An die 
Vorlesung erinnere ich mich auch nicht mehr. Einen Baum/Graph der 
Sprache werde ich wohl nicht brauchen.

von Thomas (kosmos)


Lesenswert?

also wenn die Signale zeitlich zueinander immer gleich bleiben und nur 
die Frequenz steigt oder fällt dann wäre das vielleicht per 
Abgespeicherten Pulsformen etwas.

Wenn um eine Motoranwendung geht vielleicht gleich soetwas kaufen
https://www.aliexpress.com/item/Automotive-Signal-Sensor-Signal-Simulation-Tool-for-reverse-engineering-testing-and-repair-create-custom-waveforms/32668804090.html?

von Moritz G. (mbydq2)


Angehängte Dateien:

Lesenswert?

Hier die erste funktionstüchtige Version.
Trotz der wenigen Befehle und des grundsätzlich einfachen Prinzips, war 
das Einlesen von der Seriellenschnittstelle und der Umwandlung von 
Buchstaben zu interner Darstellung für mich nicht leicht.
Man kann es auf viele Arten machen, vermutlich bin ich bei der 
Textverarbeitung einen unguten Mittelweg gegangen.
Vom Arduino Framework und seiner Dokumentation bin ich nicht überzeugt 
worden. Die Nutzung von C++ macht die Funktionsweise undurchsichtig und 
benötigt dynamische Speicherverwaltung. Ich konnte keinen SW Mechanismus 
als Ersatz für die Output Compare Unit finden.
Das Arduino Programm ist jedoch leicht zu installieren, seine GUI leicht 
zu benutzen und die eingebaute Terminalfunktion praktisch.
Ich würde mir im Nachhinein raten es nicht zu benutzen.

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.