Forum: PC-Programmierung Pulsecodemodulation in C?!


von Thomas I. (Gast)


Angehängte Dateien:

Lesenswert?

Wir müssen in de Schule einen PCM machen.
Dieser soll über ein in C geschriebenes Programm den Com-Port
ansprechen,an dem ein Tiefpass aus Kondensator (47µF-Elko) und
Lautsprecher hängt.
Entsprechend der Frequenz soll ein Ton ausgegeben werden. Das Programm
und die Schaltung haben wir schon,aber irgendwie funktioniert es
nicht.
Vielleicht habt ihr eine Idee... Das Programm ist im Anhang.

Eigentlich müsste es gehen,denn unser Lehrer hat uns ein Buch gezeigt
da steht ein Visual Basic Code drinnen der funzen müsste... auch das
befindet sich im Anhang.
Also:
es funzt nicht:

Es kommt ein ziemlich konstanter "Ton" (eher ein Rauschen) aus dem
Lautsprecher, egal ob der Wert frequenz verändert wird.

Der code ausm buch is net von mir,der andere schon. Zuerst hab ich mit
den Leuten aus meiner Gruppe den Visual Basic Code in C versucht
umzuschreiben... und jetzt haben wir das Proggi so verändert,wie es
sich logisch anhört,aussieht,wie auch immer =)

Es soll einen Ton entsprechend der Frequenz ausgeben.

Unser Lehrer is ein bissi inkompetetnt und kann uns net helfen =/ (ich
glaub er hats net mal ausprobiert)

Muss man da maybe irgenwie was mit bitweisem verschieben machen? wenn
ja,wie geht das?

von Rufus T. Firefly (Gast)


Lesenswert?

Wenn ich das Programm so richtig überflogen habe, werden auf der
seriellen Schnittstelle nacheinander in binärer Form Werte ausgegeben,
die aus einer Sinustabelle entnommen werden.
Diese heisst in VB Dat, und in C Data[].

Würden diese Werte an einen D/A-Wandler angelegt werden, an dem der
Lautsprecher angeschlossen ist, dann würde das ganze in der Tat
funktionieren, aber auf der seriellen Schnittstelle wird ein Bitstrom
ausgegeben, ein direkt daran angeschlossener Lautsprecher gibt nur
diesen Bitstrom wieder. Das hat aber mit dem eigentlichen Signal rein
gar nichts zu tun, dazu kommt auch, daß die serielle Schnittstelle
zusätzlich zu den Nutzdaten auch noch weitere Bits ausgibt, nämlich das
Start- und ein Stopbit.

Selbst wenn auf der Schnittstelle nacheinander Nullen ausgegeben würden
(der Lautsprecher nach Deutung Eurer Aufgabe also gar nichts ausgeben
sollte), würde ein Signal ertönen, nämlich die Start- und Stopbits der
seriellen Schnittstelle.


Da hat euer Lehrer was ganz ungemein grundlegendes nicht verstanden,
das kann so gar nicht funktionieren.

Aufgrund der Start- und Stopbits wäre auch der Versuch, statt
PCM-codierter Daten ein PWM-codiertes Signal zu erzeugen, annähernd zum
scheitern verurteilt.

Also:
Entweder ihr schließt einen D/A-Wandler an der seriellen Schnittstelle
an (was gar nicht so leicht ist, denn solche Dinger gibt es meines
wissens nach nicht mit einem geeigneten Interface), oder ihr
modifiziert Euer Programm so, daß die Daten auf der
Parallelschnittstelle ausgegeben werden und Ihr schließt an die einen
D/A-Wandler an (da reicht ein Widerstandsnetzwerk), oder aber Ihr
vergesst die ganze Chose und schasst den Lehrer als inkompetenten
Deppen.
Was mag der da für ein komisches Buch haben?

von Thomas I. (Gast)


Lesenswert?

Aha,das is ja interessant...

kA wie das Buch heißt...ich kanns dir morgen schreiben...

Danke erstmal!

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.