signal generator

#735910
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..
Gast #735919
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.
Persönliche Seite #736059
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.
Gast #736608
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.
#739408
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..

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren