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
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.
DImi schrieb: > (count*343)/100 Alle deine Größen sind Integers. Warum sollten bei der Verrechnung irgendwelche Fließkommazahlen raus kommen?
Wenn es dann funktioniert, erfasst du die Länge des Tastendrucks geteilt duch die Durchlaufzeit der Main-Schleife. "Interessantes (gähn)" Projekt!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.