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.