BF256A Konfusion

formatting link

Die genplot.exe muß ich dir schuldig bleiben. Die braucht libgd und die habe ich auf meiner Windoze-compile-VM nicht drauf.

XL

Reply to
Axel Schwenke
Loading thread data ...

Axel Schwenke schrieb:

Hier [1] inkl. genplot.exe und ohne Abhängigkeiten von MSVC-Runtime- Bibliotheken oder gar Cygwin. In der Tat muss man dort etwas am Code schrauben, da der verwendete gd-Aufruf, um das GIF zu erzeugen so unter Windows nur mit MSVC 6.0 funktioniert. Ist zum Glück eine FAQ bei gd.

Christian

[1]
--
Christian Zietz  -  CHZ-Soft  -  czietz (at) gmx.net
WWW: http://www.chzsoft.de/
 Click to see the full signature
Reply to
Christian Zietz

Am 04.01.2011 14:49, schrieb Christian Zietz:

Vielen Dank, nach einigen Installationsorgien kann ich nun auch die Doku lesen. Muss ich mal bei Gelegenheit in PDF umwandeln.

Michael

Reply to
Michael Rübig

Am 04.01.2011 22:56, schrieb Michael Rübig:

...

Kein ps2pdf installiert? Komisches System ;-)

formatting link

Falk

Reply to
Falk Willberg

Michael Rübig schrieb:

Installationsorgien? Üblicherweise dürfte sich das auf die Installation von Ghostscript und GSView beschränken, sofern man das nicht eh auf dem System hat. Ich habe aber die Doku als PDF mal mit in den Download gepackt.

Christian

--
Christian Zietz  -  CHZ-Soft  -  czietz (at) gmx.net
WWW: http://www.chzsoft.de/
 Click to see the full signature
Reply to
Christian Zietz

Erinnert mich daran, wie ich als Neunjähriger oder so ein Sicherheitsschli0ß zerlegt habe und dann so gedacht habe, man könnte die Stiftpaare doch mehrmals unterbrechen, um Hauptschlüssel und sowas zu machen. Damals dachte ich noch, das würde nur über das Schlüsselprofil geregelt. Wird halt auch schon seit den 20ern oder so mit mehrfach geteilten Stiftstapeln gemacht...hat mir nur keiner gesagt :)

-ras

--
Ralph A. Schmid

http://www.dk5ras.de/ http://www.db0fue.de/
 Click to see the full signature
Reply to
Ralph A. Schmid, dk5ras

horst-d.winzler schrieb:

Ui, gleich kommt noch der Horizontalfrequenzoszillator mit Reaktanzröhre ;-)

Hier noch ein Artikel bezüglich Ansteuerung dieser Kondensatoren:

formatting link

--
mfg Rolf Bombach
Reply to
Rolf Bombach

Am 05.01.2011 21:51, schrieb Rolf Bombach:

Reaktanzstufe bitte in Gegegentaktschaltung ausführen. ;-)

Jetzt wäre nur noch zu klären, woher solche Kondensatoren hoher Güte billig zu bekommen wären?

--
mfg hdw
Reply to
horst-d.winzler

Hi,

Falls es noch jemand interessiert: Ich habe die Überläufe gefunden. Da die Koeffizienten ziemlich krumme Zahlen sind (0,83), habe ich, um mit Integer rechnen zu können, z.B. mit

106 multipliziert und anschließend durch 128 geteilt (Der AVR kann nicht dividieren). Dabei kommen Zwischenwerte raus, die in ein Short nicht reinpassen und dann geht natürlich nichts mehr. Das sind pro Sample 3 Multiplikationen, die ich in long durchführen muss. Ich werde morgen am Feiertag mal versuchen, das zu optimieren. Ich bin überzeugt, dass da noch was rauszuholen ist.

Ich habe hier in Excel gesehen, dass die Zwischenwerte yv(0..4) Werte bis zu 12000 annehmen können, auch wenn der Eingang sich unter 127 bewegt. 12000 * 106 passt halt nicht in ein short rein.

Michael

Reply to
Michael Rübig

Am 05.01.2011 22:02, schrieb Michael Rübig:

Du hast sicher einen Ringmodulator "erfunden". ;-)

--
mfg hdw
Reply to
horst-d.winzler

In dem Alter wollte ich auch den Brückengleichrichter erfinden, weil ich nur den Einweggleichrichter kannte und den reichlich ineffektiv fand. Es ist mir damals aber nicht gelungen, obwohl ich längere Zeit mir mehreren Dioden rumüberlegt habe. Michael

Reply to
Michael Rübig

Am 04.01.2011 23:01, schrieb Falk Willberg:

Vielen Dank, erspare ich mir weitere Installationen.

Michael

Reply to
Michael Rübig

Am 05.01.2011 22:00, schrieb Michael Rübig:

So, jetzt läufts. Interessanterweise optimiert der GCC eine Division durch 128 bei signed Zahlen nicht zu Schiebeoperationen. Die Folge waren ewige Rechenzeiten. Klar, Schieben geht bei negativen Zahlen nicht ohne Vorkehrungen. Ich habe das jetzt manuell gelöst und habe Rechenzeiten von weniger als 40µs pro Sample erreicht, habe also nur eine Auslastung des µC von ca. 10% bei 2000Samples/sec.

Michael

Reply to
Michael Rübig

Hallo Michael,

Michael Rübig schrieb:

ich habe mir zwar jetzt nicht die Struktur Deines digitalen Filters angesehen, aber was in dem Link zu sehen war, die Koeffizienten wurden wieder nur als float angegeben, wobei man bei uCs und DSPs meist in integer rechnet. Es gibt zwar DSPs mit FPU (z.B. shark), aber die verbrauchen viel Strom. Vor einiger Zeit hatte ich selbst nach Software gesucht, die die Filterkoeffizienten gleich in integer ausgibt, konnte aber keine finden, so als wenn sämtliche Autoren irgendwelcher Veröffentlichungen niemals ein digitales Filter funktionsfähig in C realisiert haben ;-). Das hat mich sehr gewundert, da ja fast jeder heutzutage mit digitalen Filtern zu tun hat. Ich habe mir dann selbst eine eigene Vorgehensweise zur Entnormierung float --> integer erstellt, weiter unten zeig ich sie mal.

Das ist merkwürdig, daß ein C-Compiler keinen arithmetischen Shift kann, ich kenne das anders, evtl. stimmt da was nicht. Was in GNU C bei mir nicht geht, ist die Shift-Konstante als negative Zahl, sie muß IMHO unsigned sein.

Wenn man ein IIR-Filter in der Praxis realisiert, stößt man schnell auf bestimmte Probleme, z.B. numerische Instabilität. Große Grenzzyklen verhindert man durch Sättigung der Addierer, kleine Grenzzyklen durch Betragsschneiden der Multiplizierer im Rückkoppelungszweig.

Der Bedarf an Wortlänge in integer läßt sich auch nicht leicht abschätzen. Wenn man bei einem Tiefpaß z.B. die Grenzfrequenz nahe an 0 oder Abtastfrequenz/2 legt, übersteigt man schnell 32 Bit, bei einem schmalbandigen Bandpaß wird es wohl auch so sein.

Für ein "rezeptartiges", schnelles Vorgehen beim Entwurf bin ich von einer standardmäßigen IIR-Struktur 1. oder 2. Ordnung ausgegangen:

x o---o-------------------o-------------------. | | | \|/ \|/ \|/ | | | .-|--. .-|--. .-|--. | | | | | | | b2 | | b1 | | b0 | '-|--' '-|--' '-|--' | | | \|/ \|/ \|/ |+ |+ |+ .-|--. .----. .-|--. .----. .-|--. .----. | | | | +| | | | +| | | | y |add |--->|1/z |--->|add |--->| 1/z|--->|add ---->| V '-o-o '-|--' '----' '-|--' '----' '----' '----' | |- |- | /|\ /|\ | | | | .-|--. .-|--. | | | | | | | a2'| | a1'| | '-|--' '--|-' | /|\ /|\ | | | | '--------------------o---------------------------------' (created by AACircuit v1.28.6 beta 04/19/05

formatting link

y/x = V * (b0 + b1*z^-1 + b2*z^-2) / (1 + V*a1'*z^-1 + V*a2'*z^-2)

mit: z^-1 = 1/z Verzögerung um 1 Taktperiode a1',a2' = Integerkoeffizienten a1 = V*a1' Koeffizient in float, -2

Reply to
Winfried Salomon

Prust. Ein arithmetischer Shift rundet Richtung -oo, eine Integerdivision Richtung 0. Wenn das Vorzeichen des Dividenten nicht vorab bekannt ist, kann man auch bei Kenntnis des Divisors das eine nicht durch das andere ersetzen.

--
David Kastrup
Reply to
David Kastrup

Hallo David,

David Kastrup schrieb: [.....]

ich kann momentan nicht verstehen, was Du meinst. Bei einem arithmetischen rechts-Shift von Zahlen im 2er-Komplement wird nichts gerundet, eher rechts abgeschnitten. Links wird dann das Vorzeichen-Bit aufgefüllt (sign-extension). Integerdivision macht man in Echtzeit wohl eher nicht, das kostet ja bald mehr Rechenzeit als Radizieren, deshalb hat Michael ja auch Shifts verwendet und ich auch. Das Runden von

2er-Komplementzahlen ist nichttrivial und wir riskieren bei dem Thema eine Megadiskussion. Bei 2 verschiedenen GNU-C-Compilern wird das bei mir richtig gemacht, ansonsten wären die IMHO defekt.

mfG. Winfried

Reply to
Winfried Salomon

Nenn es halt abgeschnitten, wenn es dich glücklicher macht. Jedenfalls ist -1/2 == 0, und -1 >> 1 == -1.

Wer dem Compiler vorwirft, daß er das nicht als gleich betrachte, hat etwas nicht verstanden.

--
David Kastrup
Reply to
David Kastrup

Wieviel ist denn viel? Ich frag deshalb weil ich mich gewundet habe das mein SH7262 hier ueberhaubt nicht warm wird und nur der Spannungsregler der aus 5V die

3.3V und die 1.2V macht wird gerade so eben lauwarm. Ich hatte irgendwie mehr erwartet.... Ich glaub am meisten Saft verbraucht mein Oled fuer die Titelanzeige.

Olaf

Reply to
Olaf Kaluza

Hallo David,

David Kastrup schrieb: [.....]

ich habe jetzt mal den GNU-C-Compiler angeworfen um herauszufinden, was Du meinst. Ich nehme mal 1 Beispiel in signed char:

negative Zahl:

-2 --> 11111110 1 rechts-Shift

-1 --> 11111111 noch 1 rechts-Shift . .

-1 --> 11111111 und n weitere rechts-Shifts

positive Zahl:

2 --> 00000010 1 rechts-Shift 1 --> 00000001 noch 1 rechts-Shift . . 0 --> 00000000 und n weitere rechts-Shifts

n=1,2,3.....

Bei einer Division /2 kommt in beiden Fällen 0 heraus, beim arithmetischen Rechtsshift nicht. Damit hast Du IMHO den Grund gefunden, warum der Optimizer die Division nicht durch einen Shift ersetzt. Dieser Effekt ist mir noch garnicht aufgefallen, man muß ihn berücksichtigen als Fehlerquelle. Mit einem Compiler hat das natürlich nichts zu tun, sondern mit der Zahlenoperation.

Ich habe Michael's Problem anders verstanden, nämlich daß obiger rechts-Shift überhaupt nicht richtig durchgeführt wird, das muß der Compiler aber können, meiner macht's jedenfalls richtig. Der von Dir erwähnte Effekt kommt bei sehr kleinen Signalem im Vergleich zur Wortlänge zum Tragen, er müßte IMHO einen entsprechenden Offset erzeugen.

mfg. Winfried

Reply to
Winfried Salomon

Am 07.01.2011 16:21, schrieb Winfried Salomon:

Ich hatte die Optimierung aus. Das war wohl der Grund.

Wie realisiert man Sättigung bei Gefahr von einem Überlauf? Ich kann natürlich mit long Addieren (oder Multiplizieren) und feststellen, ob das zu groß war und dann auf 16 Bit abschneiden. Aber das dauert ewig. Besser wäre es, nach der Addition/Subtraktion die Status-Bits auszuwerten und zu entscheiden, ob ein Überlauf statt fand. In Assembler kein Problem, aber wie mache ich das in einer Hochsprache?

Ansonsten hatte ich mit solchen Problemen noch nicht zu tun. Das ganze scheint im Moment sehr gut zu funktionieren. Selbst wenn das Störsignal Faktor 10-20 größer ist als das Nutzsignal und die AGC deshalb ziemlich weit zudreht, wird DCF77 hier immer noch gut dekodiert, auch wenn das Signal dann nur noch 5-10LSB Amplitude hat.

Ich habs mal in Excel angeschaut und gesehen, dass ich da noch Luft habe (zumindest bei weißem Rauschen + Nutzsignal am Eingang)

Ist ja übel, mein Thundebird zitiert Deine Zeichnung kaputt. Kann man das irgendwie abstellen? Dein Original ist lesbar.

Reply to
Michael Rübig

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.