Forum: Mikrocontroller und Digitale Elektronik C Kommazahl ausgeben


von DImi (Gast)


Lesenswert?

Hallo zusammen,

ich bräcuhte mal eure fachmänische Hilfe. Ich versuche hier eine 
Variable (count) durch ein Tastendruck(PIND7) zu zählen und dieser Wert 
später als kommazahl auszugeben (result = count*(343/1000)). Leider 
springt das Programm bei der Umrechnung auf "Disassemblyfenster" und 
zeigt "Multiply unsigned"

Hier das Programm:

#include <avr/io.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>

volatile unsigned int count;
volatile float result;


int main(void)
{
  //int32_t result;
  //int32_t a,b=2;

    while(1)
    {
        if(!(PIND&(1<<PD7)))
    {
      count++;
    }

    else
    {
      count = 0;
    }
    result = ((count*343)/100);


    }
}

vielen Dank

Grüße
Dimi

von Rolf M. (rmagnus)


Lesenswert?

DImi schrieb:
> ((count*343)/100);

Da dort nirgends etwas vom Typ float vorkommt, wird die Rechnung in 
unsigned int durchgeführt. Aber warum überhaupt so umständlich? Wenn du 
eh eine float-Berechnung machen willst, kannst du auch einfach
1
result = count * 3.43;
schreiben.

von Wolfgang (Gast)


Lesenswert?

DImi schrieb:
> (count*343)/100

Alle deine Größen sind Integers. Warum sollten bei der Verrechnung 
irgendwelche Fließkommazahlen raus kommen?

von Jakob (Gast)


Lesenswert?

Wenn es dann funktioniert, erfasst du die Länge des Tastendrucks
geteilt duch die Durchlaufzeit der Main-Schleife.

"Interessantes (gähn)" Projekt!

von Sebastian S. (amateur)


Lesenswert?

Ich muss mich leider Jakob anschließen.

Abgesehen davon, dass Du scheinbar große Probleme mit C hast.

Was soll da ganze eigentlich?

Beschäftigungstherapie für einen Mikrokontroller?

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.