-
Thread
Touchscreen bauen
ausbauen? Wie könnte man den das an nem Atmel zum laufen bringen? Oder ist das hoffnungslos? Division
-
Thread
floats am Mega16
Besser ist atan2(). Die bestimmt Dir dann auch noch den Quadranten richtig und den Fehler in der Division haettest Du auch nicht gemacht.
-
Thread
Modulo von großer Zahl
der Zahl zu operieren Das lernt halt heute keiner mehr, aber man kann ja nach schriftlicher Division googeln, so schwer zu begreifen ist das nicht. Georg
-
Thread
el Last für einzelne Li Zelle
in den Controller bringt WTF? Du glaubst, der µC wäre überfordert damit, den Strom durch eine Division aus der Spannung zu berechnen? > Mir war eben der > konstante Strom sympatisch, da er die Berechnung und vereinfacht. Das ist doch albern. Genau so eine Entladeschaltung habe ich vor einiger
Axel S. schrieb: >> WTF? Du glaubst, der µC wäre überfordert damit, >> den Strom durch eine >> Division aus der Spannung zu berechnen? > > Nein, ich ;). Ich wollte es einfach simpel halten, > deshalb die Idee mit dem Konstantstrom. Simpel heißt dann eben, fest vorgegeben, nicht einstellbar -
-
Thread
div 8086 nasm
and your result quotient needs to fit in ax - that seems not the case, so get a "Division quotient overflow" https://stackoverflow.com/questions/53915057/overflow-in-division-in-assembly8086/53916372
into AH and AL as AH contais already the result and AL the reminder without actually executing the division). And if your processor is 32 bit (not 16 only) use it.
-
Thread
MNA Knotenpotentialverfahren mit wxMaxima
nur Uq2 und die Widerstände stehen: "U3/Uq1 = .... * Uq2" Ähhh...?!?! Du erhoffst Dir von der Division der rechten Seite durch Uq1, dass das Ergebnis unabhängig von Uq1 wird? Das ist ein Scherz, oder?
[code]Du erhoffst Dir von der Division der rechten Seite durch Uq1, dass das Ergebnis unabhängig von Uq1 wird?[/code] Das ist natürlich nicht möglich. U3 hängt linear von U1 und U2 ab. Hier habe ich mich von der SLiCAP Ausgabe in
-
Thread
Divisions Rest wandeln
sein, 2 Stellen vor dem Komma und 2 danach. Der Ganzzahlige Wert der Rechnung stimmt immer nur der Divisions Rest nicht. Da mache ich irgendwo einen Fehler. Ich erhalte 0xE8 als Divisions Rest und das sind Dezimal 232. Der Fehler legt in der Umrechnung, aber wo? Wie rechne ich es richtig um?
2 Dezimalstellen. Und bei Integerrechnung gilt immer, erst alle Multiplikation, dann die Divisionen (Überlauf beachten !). Was Du einmal an Stellen wegdividiert hast, kannst Du nicht mehr wieder hervorzaubern. Peter
-
Thread
Frage zu Software-SPI
schmerzhaft lernen). Der resultierende Assembler-Code enthält eine Multiplikation und eine (teure) Division Der Code wird wesentlich schneller, wenn man nur eine Klammer setzt: [c] #define A 47.11 #define B 8.15 double y = x * (A / B); [/c] Hier rechnet der Compiler wirklich eine Konstante und
-
Thread
Bit Array in C
wie sie im Zusammenhang am logischten sind. Wenn die Aufgabenstellung dergestalt ist, dass eine Division gefordert ist, dann schreib auch Division. Wenn die Aufgabenstellung sich im Rahmen von Bitpfriemelei abspielt, dann nimm Schieben. Hier haben wir es mit einer Auftailung in Gruppen zu tun, wofür
Johann L. schrieb im Beitrag #2707007: > Denn ein arithmetischer Shift ist eben /keine/ Ganzzahl-Division. Genau das war doch die Aussage meines Posts. "Rundet falsch" aus der Sichtweise einer Division. > Steht ober schon geschrieben das. Richtig, aber Peter Zz bestand darauf, dass das auch bei
-
Thread
Funktionsaufruf aus Interruptroutine OK?
Einfluss habe. > OCR1A += pgm_read_word(&table[second/UPDATE_RATE]); Tststst, ein böse Division. Das sollte man meiden, erst recht in einem Interrupt. MFG Falk
so viel effizienter ist... Ist es. Und wie du siehst geht es gut ohne Division. MFG Falk
-
Thread
Betragsberechnung eines Vectors in C, am16
von den paar Bytes auf dem Stack trägt sein Code auch höchst wahrscheinlich weniger auf, als die Division in deinem Code, die das eigentliche Übel darstellt. AVR können nur schlecht allgemein dividieren. Von daher ist so gut wie jeder Code, der keine derartige Division braucht immer besser. Und von der
-
Thread
Festkommazahlen in Würde Gesperrt
method with any // integral types for a and b and usual C style promotions // performing the division. // If LFRACTIONAL is positive the type TTEMP should be wide enough to // hold a<<LFRACTIONAL. If LFRACTIONAL is negative TTEMP should be // able to keep b<<LFRACTIONAL. // - a floating
-
Thread
UART Baudrate clever runden
Der Präprozessor würde bei der Division gar nicht runden, sondern einfach die Nachkommastellen abschneiden. Nun gibt es den Trick, zum Zähler die Hälfte des Nenners zu addieren. Beispiel: 29/10 würde ohne Runden 2 ergeben. Rechnet man
macht immer noch 1. bringts also nicht. -> Ausweg: Die Rundungskorrektur von 0.5 muss vor die Division gezogen werden i = ( 5 + 0.5 * 3) / 3; oder eben (da wir in den ganzen Zahlen bleiben wollen) i = ( 5 + 3 / 2 ) / 3 3/2 ergibt 1, 5 dazu macht 6, und erst dann durch 3 ergibt 2 mit
-
Thread
mit utoa binär ausgeben, aber mit Anführungsnullen
tatsächlich > besser. Richtig. Allerdings war es hier die Sorge des TO, dass eine Division zu langsam wäre. > sich dann die Frage, ob es sinnvoll ist, den Shift durch eine Division > zu ersetzen, nur weil der Compiler dann eh wieder einen Shift daraus > macht ;-) Das ist sicher
Sinnvoll ist es, sich im Kontext klar zu machen, was die Absicht im Code besser ausdrückt: Shift oder Division und das dann zu benutzen. Aber diese "Division ist zu langsam - nimm doch Shift; das zeigt dann auch noch welch gewaltiger C-Hacker du bist", ich kanns schon nicht mehr hören.
-
Thread
16-Bit-Zahl ausgeben, nur wie?
Ich dividiere doch nicht. Die Division durch 10 macht gcc zur Compilezeit beim Falten der Konstanten. Soweit hab ich das ja alles schon. Es geht wie gesagt darum, bei 16-Bit-Typen ohne 32 Bits auszukommen und bei 32-Bit-Typen ohne
kuriose Sachen erlebt @all das .c-Programm in obigem Anhang verwendet weder Multiplikation noch Division und ist deshalb in den kleinen µC ohne mul-Befehl besonders effektiv, wenn man z.B. den ADC-Wert in eine Spannung umrechnen und ausgeben will.
-
Thread
AVRGCC: Konstanten optimieren
>Schema: >x / 3 >ersetzen durch >(x * (65536/3)) / 65536 d.h. Du *optimierst* von *einer Division* auf *eine Multiplikation und* *zwei Divisionen*? Na dann Mahlzeit!
Schema: >>x / 3 >>ersetzen durch >>(x * (65536/3)) / 65536 > > d.h. Du *optimierst* von *einer Division* auf *eine Multiplikation und* > *zwei Divisionen*? Na dann Mahlzeit! Die eine Division ist konstant und wird bereits vom Compiler erledigt. Die andere Division ist eine Division durch eine 2
-
Thread
16-bit (und mehr) Variable schnell multiplizieren
als 16 bit aufbohren, oder oder... Prescaler8? x*8/45 und x*45/8 sind nicht das selbe Division ist viel langsamer als Multiplikation wegen der Division brauchst du nur bei google oder hier im Forum in der Suche Stichworte wie integer division constant etc eingeben, für die Division durch
vonstatten geht (die Umdrehungsfrequenz kann sich deutlich bei jeder Umdrehung ändern, , und weil eine Division durch eine Konstante wenn man es nicht gerade naiv den Compiler überlässt und die bekannten "Tricks" benutzt kein Problem sein sollte integer division constant etc in google lieferte z.B. http
-
Thread
Frage zu Code
weil eine Division auf in Software gemachert werden muss und dabei auch etwas code benötigt. Divisionen sollte man vermeiden und erst recht mit float. Wir vermuten mal alles das es um ein Atmel geht, richtig?
> Es liegt nicht an der Division... > Wenn ich den Gode so schreibe: > fTemp2 = iGuthaben; > cStunden = fTemp2/3600; wenn der compiler gut optimiert, dann macht er keine Division mehr.
-
Thread
Anfängerfrage zu ISR und dem Timertutorial (GCC)
bregrenzen Besser while( millisekunden > 999 ) millisekunden -= 1000; Divisionen (und damit auch Restbildung) sind auf einem AVR ziemlich teuer. Die willst du nicht wirklich haben, wenn es eine andere Möglichkeit gibt. Und im Regelfall wird praktisch immer eine Subtraktion reichen
-
Thread
16-Bit Multiplikation/Division auf 8-Bit MCU testen
Zufallszahlen richtig rechnet, brauchst du dann bloß noch Sonderfälle abzutesten, also Überläufe, Division durch 0 usw. W.S.
Assemblercode mit dem Simulator durch steppen, um zu sehen. Zu beachten sind da nur Sonderfälle wie z.B. Division durch 0.
-
Thread
Int mit float multiplizieren
Naja eigenklich würde er dan druch fehler rausspringen da division durch 0 nicht möglich ist. Aber er spring ja schon vorherraus und 8000*0.0000000625 ist doch nicht 0 von daher sollte das doch bei diesem Beispeil kein Problem sein oder? ansonsten geb ich periodendauer
-
Thread
PWM Frequenzhochlauf - Endschrittweite wird nicht erreicht
Probleme in den Griff bekommen zu haben. Der Code ist jetzt deutlich einfacher. Statt multiplikation/division verwende ich jetzt Schieberegister. Ich werde das Ganze jetzt mal am Oszi begutachten, ob ich denn wirklich alles gelöst habe. Anbei die Bilder bei einem Hochlauf auf 100Hz.
-
Thread
Gleitkomma Multiplikation auf Atmega8
Regelfall. Denn in der Regel lautet die Aufgabe ja nicht 1000 zu behandelen, sondern x. Wodurch die Division durch 10 relevant wird.
auf Anhieb. Eigentlich sehr einfach, wenn man es mal verstanden hat. Ausgangspunkt ist die Division. Divisionen sind teurer als Multiplikationen. D.h. man möchte es dem µC einfach machen und durch etwas dividieren, was er gut kann. Und das sind nun mal 2-er Potenzen. Durch 2, 4, 8, 16, ... zu dividieren
-
Thread
C, Dezimal -> Ternärzahl
Subtraktion in einen String umzuwandeln, benötigte mein Controller ca. 1.5 mal länger als mit Modulo und Division. Der benötigte Programmspeicher war etwa gleich. Getestet mit einem PIC18 und dem XC8 Compiler von Microchip. Sourcecode hab ich nicht mehr.
Mir fällt gerade auf, das innere, die tatsächliche Division+Modulo, könnte man in eine Schleife packen, aber so ists übersichtlicher :)
-
Thread
[C] XC8 verschwendet Speicher
selber auch machen. Auf Null initialisieren schon, aber meine Werte müsste ich mühsam per Divisions-Gedöhns berechnen, dann ist die Lookup-Table selbst wieder hinfällig. Axel Schwenke schrieb im Beitrag #3434042: > Aber wir wissen > ja nicht, was für ein PIC das ist. PIC16F876 (leider). Hat nur
selber auch machen. > Auf Null initialisieren schon, aber meine Werte müsste ich mühsam per > Divisions-Gedöhns berechnen, dann ist die Lookup-Table selbst wieder > hinfällig. Dann versteh ich das aber nicht. D.h. du hast sowieso ein konstantes Array, oder wie soll ich das verstehen? Wenn es in dem
-
Thread
STM32 Port-Initialisierung
TIM_TimeBaseStructure.TIM_Period = 1000; TIM_TimeBaseStructure.TIM_Prescaler = 0; TIM_TimeBaseStructure.TIM_ClockDivision = 0; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); /* PWM1 Mode configuration: Channel3 */ TIM_OCInitStructure.TIM_OCMode
-
Thread
ADC Werte sind null
TIM_TimeBaseStructure->TIM_Period = 30 - 1; // (1/1Mhz) * 30 = 30 us; 23. TIM_TimeBaseStructure->TIM_ClockDivision = TIM_CKD_DIV1; 24. TIM_TimeBaseStructure->TIM_CounterMode = TIM_CounterMode_Up; 25. TIM_TimeBaseInit(TIM2, TIM_TimeBaseStructure); 26. 27. 28. /* Enable TIM2 Update Interrupt */
-
Thread
GPS-Chip + Bluetooth-Chip + Microcontroller
einem Atmel AVR ausführt. Die Koordinaten sind bei mir als int32_t definiert und da wollte ich Divisionen möglichst vermeiden. Adib.
einem Atmel AVR ausführt. Die Koordinaten sind bei mir als int32_t > definiert und da wollte ich Divisionen möglichst vermeiden. Du musst einfach nur auf Deine Schulkenntnisse zurückgreifen. * Ein n-Eck wird von n Geraden begrenzt. * Eine Gerade wird durch zwei Punkte eindeutig definiert. * Eine
-
Thread
Compilerintelligenz für Teilungsoperation
...gut danke. Anschlussfrage: Wie lange dauert eine nicht optimierte Division?
#2778091: > ...gut danke. > > Anschlussfrage: > > Wie lange dauert eine nicht optimierte Division? Kann man so nicht sagen. Das hängt davon ab, welche Operationen die CPU bereitstellt. Hat die eine Divisionsoperation in Hardware, dann gehts ratzfatz. Wenn nicht, dann muss die CPU das dann
-
Thread
16Bit auf 100 normieren?
Hallo zusammen. Ich habe einen 16Bit Nachkommawert von einer 16Bit Division. Ich möchte den Nachkommawert gern auf 100 oder 1000 normieren. Also für 0 will ich 0 erhalten. Und für 65535 möchte ich 100 oder 1000 bzw. noch besser 99 oder 999 erhalten. Wie bekommt man das
Beitrag #2382618: > Hallo zusammen. > > Ich habe einen 16Bit Nachkommawert von einer 16Bit Division. bei einer 16Bit-Integer-Division? -> also den REST > Ich möchte > den Nachkommawert gern auf 100 oder 1000 normieren. ok > Also für 0 will ich 0 erhalten. > Und für 65535 möchte ich 100
-
Thread
Digital Down Converter Bitbreiten
/235339#2383867 korrekt geantwortet. Pauschal würde ich sagen: Ja, skaliere die 28Bit durch "Division mit 2^14" wieder runter bevor du damit weiterarbeitest. Denn es gilt erstmal: deine Inputsignale sind 14Bit breit mehr an Information wirst du nicht drinnen haben als diese 14Bit. Selbst wenn du nach
-
Thread
Division durch 10
> Die einfache Version mit / und % funktioniert leider nicht. Irgendwie > scheint es bei der Division zu Ungenauigkeiten zu kommen. Ungenauigkeiten? Bei einer Integer Division? Du beliebst zu scherzen. Zeig mal. (Ich lehn mich mal aus dem Fenster und behaupte du hast Flieskomma im Spiel
Karl Heinz Buchegger schrieb im Beitrag #2347757: > Ungenauigkeiten? > Bei einer Integer Division? War früher in der Schule auch immer so. Der Lehrer hat das dann auf "6 setzen!" korrigiert ;-) MfG Klaus
-
Thread
Frequenzgenerator einstellbar
von 0 bis 4000 U/Min regeln kann. Das einzige sinvolle , was mir gerade dazu einfällt, ist: "Division durch Null ist verboten" Gruss k.
-
Thread
Unterschiedliche Ergebnisse bei float und long
anderen Frequenzen mag das aber zu einem werden. Dann müsste man zb mal untersuchen, ob man nicht die Division auf 2 mal aufteilt Ala [c] ticks = ((clk/1000)*time_us/1000)/divider; [/c] Reine Mathematik hat mit den realen Gegebenheiten in einem Computer manchmal nur wenig zu tun.
-
Thread
STM32 Servoansteuerung PWM
TimeBaseInitStruct.TIM_Period = 150; // 10000 = 100 ms 200 = 2ms 50 = 0.5ms TIM1_TimeBaseInitStruct.TIM_ClockDivision = TIM_CKD_DIV1; TIM1_TimeBaseInitStruct.TIM_RepetitionCounter = 0; TIM_TimeBaseInit(TIM1,&TIM1_TimeBaseInitStruct); //TIM_OCStructInit( &TIM_OCInitStruct ); TIM_OCInitStructure.TIM_OCMode
TIM_TimeBaseStructInit (&timBase); timBase.TIM_Prescaler = ((SystemCoreClock / 2 ) / 1000000)-1; timBase.TIM_ClockDivision = TIM_CKD_DIV1; timBase.TIM_CounterMode = TIM_CounterMode_Up; timBase.TIM_Period = 20000; TIM_TimeBaseInit (TIM4, &timBase); TIM_ARRPreloadConfig (TIM4, ENABLE); // Update registers TIM4->
-
Thread
Motor-Drehzahlregelung
reinen P-Regler mit Kp = 1, also vom Rechnen war da nicht die Rede. Allein eine Subtraktion und eine Division + 8 * ADC einlesen brachten das Fahrzeug zum entweichen von der Linie, da zu großes Schwingen auftrat, bzw der Roboter nicht mit dem Messen nachkam (Schnelligkeit überdimensioniert). Weiters habe
Regelungen. Schon heavy meiner Meinung nach. Außerdem brauche ich für das Ausmessen der Linie eine Division um das Verhältnis zu bestimmen. Deshalb meine Skepsis, und da ich schon mal in so einer Situation war und optimieren hab müssen, noch viel mehr.
-
Thread
Belasteter Spannungsteiler
Klammern sind an diesen Stellen nicht zwingend notwendig. Punkt-vor-Strich-Rechnung? Die Division zählt dabei als Punkt-Operation, auch wenn dabei anstelle des Doppelpunkts ein Schrägstrich verwendet wird ;-) Daniel schrieb im Beitrag #3876246: > Toll Max, dann steht dort: 400Ohm = 400Ohm
-
Thread
Berechnung mit cos führt zum Fehler
ja. Da ist eine komplexe Berechnung und am Ende kommt 'nicht definiert' raus. Ich schätze mal: Division durch 0.0 D.h. nächste Frage: wird tatsächlcih durch 0 dividiert? Also aufteilen: [c] float Dividend = sin(h[i]) - sin(B)*sin(DK); float Divisor = cos(B)*cos(DK); Zeitdifferenz =
Da ist eine komplexe Berechnung und am Ende kommt 'nicht definiert' > raus. Ich schätze mal: Division durch 0.0 Der acos könnte auch die Ursache sein. Dividend / Divisor muss im Bereich -1.0 bis +1.0 sein, damit der acos definiert ist. Schon ein ganz klein wenig drüber .... und das Ergebnis ist
-
Thread
Mehrere (20) Signale auf Spannungs-Drops monitoren
verwechselt. Mit analogen Komparatoren wären auch Ansprechgeschwindigkeiten, die sehr vielen Samples pro Division entsprechen, möglich. Wenn man aufzeichnen will, dann haben wir aber schon Abtastraten im Bereich 10 - 200 MHz x 20 Kanäle.
-
Thread
4-wire resistive Touchscreen Schaltung TWI USART-Anbindung ATmega8 Assembler LS-7 LS-8
Momentan messe ich 32x und bilde den Mittelwert. Die _32_ ist der Tatsache geschuldet, da die Division durch 2, 4, 8, 16, 32 usw. in Assembler sich sehr einfach und mit wenigen kostbaren Prozessortakten realisieren lässt. Folgende Variante zur ADC-Messung viel mir ein: Ich messe z.B. 8x und bilde
-
Thread
Verständnisproblem mit PeDas Drehencoder-Routine
Artikel http://en.wikipedia.org/wiki/Arithmetic_shift#Non-equivalence_of_arithmetic_right_shift_and_division soll ein arithmetisches Shift right genau das machen, was der gcc offenbar tut, nämlich _abrunden_ und nicht gegen Null runden (also -1 >> 1 = -1). > Aber nicht mit dem oben gezeigten Code. ASR
-
Thread
[V] Tektronix 2465B + GPIB an Bastler
noch mal genau nachgeschaut, Kanal 3 und 4 haben nur einen Eingangsbereich von 0,5V / 0,1V pro Division, der Trigger/ das Signal muss entsprechend klein gewählt werden, dann gehen auch alle 4 Kanäle. Mir gehen die Koaxkabel aus, darum der Draht bei einem Kanal. Fröhliches Feilschen, dasrotemopped
-
Thread
Division fehlerhaft
return-Wert. Wenn ich aber aber z.B. einfach schreibe "return 95;" dann funktioniert die anschließende Division durch 2. Meine Frage ist also warum die Division nur in dem zweiten Fall funktioniert. Gruß Gustav [c] uint16_t ReadChannel(uint8_t mux) { uint8_t i; uint16_t result = 0;
Code ist habe ich es oben weggelassen. Das Prinzip der Übertragung funktioniert und eine "normale" Division, da ich folgendes probiert habe: [c] return 95 [/c] Funkioniert: die Zahl 95 wird angezeigt [c] return result [/c] Funkioniert: das Ergebnis (95) wird angezeigt [c] return 95/2 [/c] Funkioniert
-
Thread
Frage zum SoftPWM-Artikel
F_CPU/16000000)) [/c] rollen sich einem die Fußnägel hoch. Bei F_CPU < 16MHz kriegt man gar "division by zero", weil der Präprozessor das als INT behandelt. > Hab' ich das dann richtig verstanden, dass die main() allgemein nur > 150mal pro Sekunde abgearbeitet wird, weil die Interruptroutine so
-
Thread
Kettenleitermodell in LT Spice
vereinfachen und dann erstmal testen. Mangelnde Zeitauflösung scheint es jedenfalls nicht zu sein. Division durch Null und sowas checken. LTspice hat auch noch ein lineares RC-Kettenleiter Modell. Vielleicht damit anfangen...
-
Thread
Befehl in C (Bitmanipulation)
"adr" wird um 8 Bits nach rechts geshifted, was gleichbedeutend ist mit einer Division durch 256. Das Resultat wird mit der Konstanten 1 verANDet. Und das Resultat davon wiederum wird nach "unsigned char" gecastet und dann etwas namens "DEECON" zugewiesen. Aufgrund der verANDung
-
Thread
Division ATmega
genau so: als Division ohne Rest, egal auf welcher CPU.
d Die Division d/2 übersetzt der Compiler heutzutage nicht in eine aufwändige Division, sondern ersetzt sie durch einfaches Shift nach rechts. Viele Grüße, Stefan
-
Thread
AVR - nach Interrupt Code überspringen
Interrupt wissen, daß er einen fehlerhaften Code unterbrochen hat? Er könnte z.B. eine Math-Lib (Division), LCD-Lib usw. unterbrochen haben, die fehlerfrei sind. Und woher soll er wissen, wohin er springen soll? Ein Programm besteht ja in der Regel aus vielen Tasks. Die longjump-Lib funktioniert
-
Thread
Byte aus Long entnehmen
Und wenn Du die wegfallende Stelle brauchst, dann nimmst Du statt Geteilt Modulo („Rest“ einer Division, Rechenzeichen %): 123 / 10 = 12 123 % 10 = 3 Grundschule: 123 / 10 = 12 Rest 3 Willst Du die zweite Stelle haben: 123 / 10 % 10 = 2 Und die Dritte: 123 / 100 % 10 = 1
-
Thread
Oszillogramm B6C
nur genau 5 A an ? Das Bild des Oszi zeigt die höhe des Stromes doch ein wenig höher als eine Division an ? Daher hatte ich etwa 7 A genommen. Aber die Höhe des Gleichstromes wäre dann deiner Erklärung nach : Id = 5A/3 =1,67A Ueff = U/sqrt(3) = 100V/sqrt(3) = 57,7V Hast du auch eine Idee