mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Berechnung mit "pow" --- C


Autor: Stephan Schwarz (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was magst Du vorhaben?

Was willst Du berechnen?

Glaubst Du, daß die Funktion delay_ms ein float-Argument hat?

Autor: Stephan Schwarz (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
*****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.

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Stephan Schwarz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Stephan Schwarz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.