Forum: Mikrocontroller und Digitale Elektronik signal generator


von Peter ". (piotred)


Lesenswert?

Hallo leute,

ich bin neu hier und wußte nicht, ins welche forum ich meinen beitrag 
schreiben sollte..

s geht um folgendes:

ich soll per software-programmierung einen signal generator 
programmieren. dabei gibt s mehrere anforderungen:

1. verschiedene signalverläufe (also zeitmäßig)
2. eine zeitspanne soll variabel einstellbar sein
3. muß über den rx-ausgang ausgegeben werden

um nochmal alles genauer zu erläutern:

ich habe einen 4bit schalter mit dem ich 16zustände generieren könnte. 
den schalter also einlesen, welche stellung er hat und dann sozusagen 
die bestimmten signalverläufe ausgeben, nachdem ein anderer druck-knopf 
(dahinter muss noch eine entsprell funktion hinterlegt werden) 
aussenden.

wie kann ich dieses nun programmieren?

ich weiß, ich brauche drei funktionen:

1.schalter einlesen und überprüfen
2.signal auf ausgang legen
3.abfragen, ob der drucktaster gedruckt wurde und dann entprellzeit 
beachten

nochmal zu den zeitverläufen:

sollte der drucktaster betätigt werden, muss erst 8ms ein LOW-Signal und 
anschließend min 8ms HIGH-Signal..dieses ist variabel und somit hinter 
dem SWITCH-Schalter abgelegt.

ein beispiel: ist der switchschalter auf 0000, dann liefert er mir die 
zeit 8ms(LOW) und dann 8ms(HIGH). ist er auf 0001, dann 8ms (LOW) und 
16ms(HIGH). 0010 = 8ms+24ms usw.

ich hoffe, einer von euch kann mir helfen..

von Hans (noch einer) (Gast)


Lesenswert?

> wie kann ich dieses nun programmieren?

Die Frage ist ein bisschen zu allgemein gehalten. Google nach "direct 
digital synthesis" und ansonsten, diskutiere die Details doch erst 
einmal mit deinem Professor/Lehrer statt uns deine Hausaufgaben machen 
zu lassen.

von Maxim (maxim) Benutzerseite


Lesenswert?

Hoffentlich programmierst du in Assembler, denn das würde die 
Zeitberechnung erleichtern.

Ich würde das so umsetzen:

Du Programmierst zwei Schleifen (Unterprogramme):
a) Signal auf HIGH und 8ms warten
b) Signal auf LOW und 8ms warten

Nun wird in einer Hauptschleife der Taster abgefragt. Ist er gedrückt, 
so wird der aktuelle Zustand des 4-Bit-Schalters eingelesen und in einen 
temporären Register (bspw. R17) kopiert. Dann wird zuerst das 
Unterprogramm b) aufgerufen. Ist es abgearbeitet, wird das Unterprogramm 
a) in einer Schleife aufgerufen. Dabei dekrementiert der uC das 
temporäre Register R17 nach jedem durchlauf um ein 1 und überspringt die 
Schleife, sobald der Wert 255 (0 minus 1) beträgt, vorausgesetzt, du 
verwendest einen 8-Bitter.

von piotred (Gast)


Lesenswert?

also, eigentlich programmiere ich in c..dies sieht dann ja anders 
aus..würde ich sagen..

von Maxim W. (Gast)


Lesenswert?

Dann besteht die Schwierigkeit darin, die Zeit von 8ms abzuwarten. Es 
gibt aber die möglichkeit mit dem Befehl "volatile" Assembler-Code in C 
einzufügen. Mehr kann ich dir dazu leider nicht sagen. Jetzt sind die 
C-ler gefragt.

von Peter ". (piotred)


Lesenswert?

also, ich habe mir schon überlegt, dass ich eine schleife mache, die 
meinetwegen meine funktionen alle 2ms aufruft..dies ist schon 
vorgegeben..dann muss ich halt die funktionen schreiben..

den schalter kann ich ja mit hilfe von if-else abfragen oder gibts da 
etwas einfacheres??

und dann in den verschiedenen abzweigungen meine andere funktion 
abfragen..bitte hilfe..

von piotred (Gast)


Lesenswert?

hierbei handelt s sich um einen 8kHz quarz..

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.