Hallo Sternthaler,

Zitat von
Sternthaler
... meine Lösung hier nur im Prinzip für dich in Frage kommen könnte ... sollte aber nicht allzu schlimm sein da aufzusetzen. Falls überhaupt 'fremder' Source genutzt werden will von dir. ...
Nochmal danke für die schicke CIRperei. Nach den anstrengenden letzten Tagen (Segeln ist auch bei den Kornaten bei Windstärke 8 nicht ganz easy - vor allem wenn mitfahrende Nichtsoganzprofis dabei Genua UND Gross vollständig rausrauschen lassen und nicht wieder selber bergen können. 100 m2 schlackerndes Segeltuch knallt fürchterlich. Aber immerhin sind knapp 10 kn bei achterlichen 8 Bft mit nix mehr als einer Viertel Genua, ok ich gab als Steuermann auch noch Segelfläche, schon ein Erlebnis!) war ich total neugierig, ob ich die interruptgesteuerte Entfernungsmessung hinkriege. Daher hatte ich mir die Sache mithilfe Deines schönen, praktischen Codes leicht gemacht
. Die CIR-module laufen nach Anpassungen und Deinem Kommentar einigermassen auf zwei von meinen drei DME-Kanälen. Port C0 gibt noch keinen Messwert her und die Rechnerauslastung durch die ISR ist mir noch nicht klar. Aber es geht voran.
Code:
irDME-Test nach Adaption des CIR-Codes von Sternthaler, Einarbeiten der Kommentare,
erster Fehlersuche und -behebung.
irDME-Kanal 0 ist inaktiv. Die Kanäle 1 und 2 sind aktiv und werden korrekt
ausgegeben, siehe die nachstehenden Terminalausgabe. Die Messwerte schwanken in
einem deutlichen Bereich. Bei dieser Terminalausgabe ist der ADC/GP2D120 nicht
beschaltet - der schwimmende Eingang führt zu fehlerhaften Angaben.
===========================================================================
Pm168D/20 MHz m168D_10x30.c *libs x30/331 23juni08 0948
Erste ISR für TC0CMPA - für irDME
irPort 12+3+4 irLED 36,0 kHz
Messen im Interrupt
ir12-4 0/ 24/ 15 Isvs 27 Ipwm 0 ADCmm 380
ir12-4 0/ 24/ 5 Isvs 27 Ipwm 0 ADCmm 369
ir12-4 0/ 21/ 2 Isvs 27 Ipwm 0 ADCmm 999
ir12-4 0/ 20/ 2 Isvs 27 Ipwm 0 ADCmm 207
ir12-4 0/ 19/ 3 Isvs 27 Ipwm 0 ADCmm 306
ir12-4 0/ 19/ 2 Isvs 29 Ipwm 0 ADCmm 421
ir12-4 0/ 26/ 14 Isvs 29 Ipwm 0 ADCmm 465
ir12-4 0/ 24/ 18 Isvs 29 Ipwm 0 ADCmm 375
ir12-4 0/ 2/ 18 Isvs 29 Ipwm 0 ADCmm 450
ir12-4 0/ 2/ 16 Isvs 29 Ipwm 0 ADCmm 204
ir12-4 0/ 2/ 17 Isvs 29 Ipwm 0 ADCmm 360
ir12-4 0/ 3/ 15 Isvs 31 Ipwm 0 ADCmm 999
ir12-4 0/ 3/ 17 Isvs 31 Ipwm 0 ADCmm 999
ir12-4 0/ 21/ 15 Isvs 31 Ipwm 0 ADCmm 692
ir12-4 0/ 24/ 15 Isvs 31 Ipwm 0 ADCmm 999
Fazit: ich bin auf dem Weg, aber es wird noch ne Weile dauern, bis es sauber funktioniert. Die Messung der Beleuchtungsstärke habe ich abgehakt, siehe oben.
Wie läuft die CIR mit dem asuro? Gibt es da Rückmeldungen?
Nachtrag 14:00 Uhr: Ich hab mal auf die Schnelle eine Zeitmessung gemacht über 4 sec. Mit initialisierter ISR brauche ich für eine kleine Schleife mit Datenausgabe und 5000 waits rund 4,16 sec, ohne Initialisierung, also ohne ISR, dauert das 3,96 sec. Das heisst ich brauche für die ISR in jeder Sekunde rund 50 ms bzw. 5% der CPUzeit. 6 Iterationen mit je 10 Messwerten und 3 Messkanälen wären je Sekunde rund 27 Messwerte für jeden Kanal. Bei der erreichbaren Genauigkeit ist das fast eine Größenordnung zu viel. Auch hier werde ich nochmal genau nachsehen/-messen/-rechnen.
Lesezeichen