Hallo Ich frag mich gerade, warum mir die Funktion keine richtigen Werte liefert. Vielliecht hat ja jemand einen Idee? Wenn ich die Variable s_wait als int definiere und auch nur mit ganzen Zahlen reche stimmt das Ergebnis. Aber alle Rechnungen mit double oder float ergeben falsche Zahlen.
Was magst Du vorhaben? Was willst Du berechnen? Glaubst Du, daß die Funktion delay_ms ein float-Argument hat?
*****Was magst Du vorhaben? *****Was willst Du berechnen? Ich muss eine Rechtecksignal generieren das sich nach einer Exponential-Funktion richtet. Start bei 10 Hz Ende bei 500 Hz. Gesamt Laufzeit = 340 Sek. T = wait_s = 1/(10*2^(t/60)). Ich will also einfach einen Pin aus bzw. einschalten und wait_s soll aktuelle berechnet werden. Bisher ist mir dafür keinen einfacherer Lösung eingefallen. *****Glaubst Du, daß die Funktion delay_ms ein float-Argument hat? Ich hab auf deine Frage hin mal in der delay_modi.h mal nachgesehen. Dort ist die Funktion delay_ms definiert. Es sieht mir so aus, alsob tatsächlich die Eingangsparameter als Int definiert sind. *****unsigned short ms;******* Ich kann aber trotzdem ein Fliesskommazahl an die Funktion übergeben, und erhalte dann auch Signal mit den Richtigen Impulsweiten. Wie man im Code sieht, den ich zuvor schon gepostet habe.
Hi,
wie mein Vorredner meinte es wird wohl an der Floatübergabe liegen.
>> delay_ms(0.5);
gibt es so auch nicht.
Die Delay Variante ist auch keine schoene Loesung. Besser waere es ein
Timer im Compare Autotoggle Output Pin Mode. Man schafft so auch
hoehrere Freq. am Ouputpin.
Mfg
Dirk
Bezüglich >> delay_ms(0.5); OK - da scheint schon ein Widerspruch zu sein, aber es funktioniert. Ich suche ja auch nach einer besseren Lösung. Gibt es denn Beispiele-Source zu der "Timer im Compare Autotoggle Output Pin Mode" Lösung? Im Moment hört sich das für mich nach PWM an. right? Also ich halte nun mal fest, dass nicht "pow" bei mir das Problem ist sondern eher die Delayfunktion. Trotz dessen, dass Sie mit der Parameterübergabe 0.5 funktioniert.
Sie funktioniert nicht wirklich. delay_ms(0.5) ist exakt das gleiche wie delay_ms(0) - beim Casting von float nach int erfolgt keine Rundung, sondern ein Abschneiden der Nachkommastellen.
Ok OK *g Aber mein Osziloscop sagt mir was anderes *g Ich werde es gleiche Morgen nochmal mit anderen Werten testen. Mein Impuls ist wirklich exakt 500µS lang. Aber egal. Ihr habt schon recht. Es muss da zu einem konflikt kommen Da aber der Test mit einer beliebigen Kommazahl funktioniert hat, bin ich davon ausgegangen das es mit allen funktioniert. @ Rufus T. Firefly weist du, was der Dirk mit "Timer im Compare Autotoggle Output Pin Mode" meint? evtl.PWM? hab davon noch nix gelesen.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.