-
Thread
Gleichspannungsanteil von Signal entfernen-VHDL
ERROR <= unsigned(OUT_SCALED(6 downto 0)); -- keep fractional part by taking remainder of integer division DATA_OUT_TEMP <= OUT_SCALED(20 downto 7); -- divide by 128 end if; end process DC_BLOCK_PROCESS; end ARCH; [/vhdl]
-
Thread
Sinusimplementierung nach Cody und Waite
0.15625 L=-11.45242628 M = 480.1488517 N=38.55864669 [/c] kostet nur 3 Multiplikationen und 1 Division. Es ist offenbar so, daß niemand die Suchfunktion dieses Forums benutzt und deshalb immer wieder die bereits gelösten Probleme nach Jahren wieder auftauchen. W.S.
0.15625 > L=-11.45242628 > M = 480.1488517 > N=38.55864669 > kostet nur 3 Multiplikationen und 1 Division. ...und hat den offenkundigen Nachteil, dass man dividieren muss.
-
Thread
Signale verarbeiten und ausgeben
Ergebnis beide Zeiten mit 1,33.. multiplizieren; 400 bzw 266µs ( Multiplikation ist leichter als Division, deshalb 1,3333) Dann Impulse mit diesen neuen Zeiten ausgeben. Dann wird die Frequenz auf 3/4 gesenkt und das Tastverhältnis bleibt erhalten. 266 und 400 einem Zwischenspeicher übergben, der
-
Thread
Binärzahlen berechnen in C
das Bild oben vorgaukelt. Natürlich könnte man sagen, dass diese Shifts ja quasi genau diese Divisionen sind, aber formal "korrekt" müsste es so aussehen: [c] for (i=0; i<8; i++) { if ( zahl != ((zahl/2)*2) ) // wenn bei der Division ein Rest auftreten wird ergebnis = 1;
Bild oben vorgaukelt. > Natürlich könnte man sagen, dass diese Shifts ja quasi genau diese > Divisionen sind, aber formal "korrekt" müsste es so aussehen: > [c] > for (i=0; i<8; i++) > { > if ( zahl != ((zahl/2)*2) ) // wenn bei der Division ein Rest > auftreten wird > ergebnis
-
Thread
Problem mit Division
Braucht er eine Mathe-Lib für die Division? #include<math.h> ?
verstehe, wenn es solche Basisprobleme gibt, wie kann es sein das alles funktioniert bis auf die Division. Olaf
-
Thread
Deterministischer Pseudozufall
könntest du dir mal XTEA anschauen, das ist eine sehr kompakte Chiffre mit 64 Bit Blocklänge die ohne Division oder Multiplikation auskommt. Allerdings muss die Verschlüsselung mehrere Zyklen durchlaufen, damit die Ausgabe genügend zufällig aussieht. Der empfohlene Wert (für Verschlüsselung) sind 32 Iterationen
-
Thread
NEHMT AVR-GCC
vieleicht helfen kann. Man braucht nur Gedult und NICHT VERGESSEN ---->RTFM. Liebe Grüsse Division
@ division: wie hast du ponyprog eingebunden?
-
Thread
Probleme nach Optimierung
...oder man hat einen GCC 4.3.0-2 (debian), der optimiert schon mal uint32_t Operationen (z.B. division) weg...
-
Thread
Bei Assembler bleiben oder auf C umsteigen?
Laufzeitbibliothek gleich mit am Start hast. In Assembler sitzt Du erst mal dabei, Deine ultimative Divisionsroutine zu debuggen.
-
Thread
Benötigte Rechenleistung bestimmen/abschätzen
20MHz Takt --> 800 Takte zwischen zwei Samples. Wenn man es klug anstellt (2**n Samples --> Division=Bitshift usw) sollte das imho klappen. Ein Versuch ist es auf jeden Fall wert.
-
Thread
Atmega 2-Kanal Rechteckgenerator gesucht
höherem Takt mit einer gröberen Auflösung leben. Ferner wird das Funktionssignal effektiv durch Division aus dem Prozessortakt erzeugt, bestimmt durch Vorteiler (prescaler) und oberer Zählgrenze. Du mußt also Takt und/oder Teiler Variieren um den gewünschte Funktionsfrequenz anzunähern. Ein Senken der
-
Thread
"Simpler" Quadrocopter - Einstieg, aber wie?
benutzt und musste dauernd Berechnungen optimieren, weil der 8bitter einfach ewig für jede 32bit Division gebraucht hat (ist ja logisch). Bin dann auf 32bit umgestiegen und konnte dann die PID-Formeln mehr oder weniger einfach 1:1 aus dem Tabellenbuch abschreiben.
-
Thread
Int to float riesiger Speicherbereich
double und die 3 complex typen vergessen... wo ist überhaupt dein problem bei der floatingpoint-division? 73
Frequenzen z.B. in Hz an. Quotienten nahe 1 kannst du immer mit einer Reihenentwicklung deiner Division, die du nach dem liniearen Glied abbrichst, erschlagen. Mit Float bekommst du deine Zahlen schon von der Genauigkeit her nicht mehr dargestellt.
-
Thread
Atmega168: PCINT2 wird von INT0/1 gestört
. 5 Bits in ein Byte, > weil ich es so später bequem in ASCII dekodieren kann. Eine Division/Modulo-Operation mit 8 oder einer anderen Zweierpotenz ist wesentlich schneller als mit 5 oder 7, da der Compiler hier einfach Bits schieben kann. Das kostet ordentlich, was Du da machst. Deshalb mein Vorschlag
sowieso für die Katz (und ein BO wäre mir bei Testzwecken mehr oder minder egal). > Eine Division/Modulo-Operation mit 8 oder einer anderen Zweierpotenz ist > wesentlich schneller als mit 5 oder 7, da der Compiler hier einfach Bits > schieben kann. Das kostet ordentlich, was Du da machst. Deshalb
-
Thread
Tacho und Kilometer
Karl-Heinz, wie war das mit der Definition von |circ|: [c]unsigned char circ;[/c] somit wird die Division als 8 Bit durchgeführt, das Ergebnis ist auch 8 Bit. Natürlich stimmt dein Beispiel, und ich ziehe auch erst die Multiplikationen vor die Division, solange ich keine Datentyp Überlauf erhalten.
PULSE_TURN 12 ist ein int. Damit wird hier unsigned char durch int dividiert. Und damit als int Division ausgeführt. Du musst immer die Datentypen beider Operanden berücksichtigen. Auch numerische Konstanten haben einen Datentyp.
-
Thread
Umrechenfehler bei Float nach int
Mantisse gerechnet werden, dafür braucht die Anpassung des Exponenten ein paar Takte zusätzlich. Bei Division gibt es keine DIV-Befehle, sodaß hier die Ausführungszeiten ebenfalls fast gleich sind. > Dass die Ausgabe eines floats durch zusätzliche Bibliotheken den > Speicher dann noch zusätzlich aufbläht
-
Thread
aus 8Bit einen 10Bit Wert machen
bestimmt NICHT immer abrunden, wenn wir die Daten in 8 Bit quetschen wollen, also bestimmt KEINE Division durch 4. Wir werden das natürlich so machen: LSB 10->8 Bit =============== 00 abrunden 01 abrunden 10 aufrunden 11 aufrunden Das heisst: Die 8 Bit-Werte
-
Thread
Hilfe bei Programmierung in Mplab
------------------------------------------ ADC-Ergebnis = 0 - 4095 normiert auf 0 - 100 durch Division des ADC- Ergebnisses durch 41 (4095/100 = 41 aufgerundet). ; DIV16_8 - siehe www.piclist.com/techref/microchip/math/div/16by8lz.htm ;Divident: f_divhi:f_divlo, Ergebnis in
---------------------------------------- > ADC-Ergebnis = 0 - 4095 normiert auf 0 - 100 durch Division des ADC- > Ergebnisses durch 41 (4095/100 = 41 aufgerundet). > ; > DIV16_8 - siehe www.piclist.com/techref/microchip/math/div/16by8lz.htm > ;Divident: f_divhi:f_divlo, Ergebnis
-
Thread
Eingabe und Berechnung mit Modulo
noch ein wichtiger Zusammenhang. "+" Addition, "-" Subtraktion, "*" Multiplikation und "/" Division sind bekannt. "%" Modulo auch, aber wie ist der Modulo über die anderen Rechenoperatoren definierbar ?
ziffernweise von Hinten nach Vorne: nextchar2: Zeichen=Zahl%10 (Modulo) Zahl=Zahl/10 (Integer-Division) Ausgabe Zeichen (als ASCII +$30 ... oder auch "0") Ist Zahl>0 ? goto nextchar2 MfG
-
Thread
Digitaler PID Regler frage zur Formel
Ta++; delay_m(1); } else { Ta = 1; // Damit keine Division durch 0 entsteht. } esum = esum + e; //Integration I-Anteil y = Kp*e + Ki*Ta*esum + Kd/Ta*(e – ealt); //Reglergleichung ealt = e; } Bitte den code nicht auf Syntax prüfen
-
Thread
[WARNING] Intel Skylake/Kaby Lake processors: broken hyper-threading
Teil der Adressbits, nimmt also Fehlerkennung in Kauf. Peinlicher war freilich der bekannte Divisionsfehler von Intels Pentium. Der überhaupt erst dazu führte, dass Buglisten öffentlich wurden. Davor waren sie nur per NDA zu erhalten. Peinlich deshalb, weil der nicht durch unglückliches Zusammenspiel
-
Thread
1 Byte in dual 7 Segment Anzeige übersetzen
im Beispiel geht das schon. Schwierig wird die Division, wenn der Divisor variabel ist. Ich verwende dafür einen IP-Core der pro Bit einen Takt braucht. Duke
chris schrieb im Beitrag #5166495: > Ich dachte, Divisionen sind in VHDL zu vermeiden Divisionen durch Zweierpotenzen gingen schon immer (ist ja einfach: Bits abschneiden = anders verdrahten, wobei dieses simple Verfahren nur für positive Zahlen korrekt
-
Thread
[AVR Assembler] Wie rechnet man x^Kommazahl?
+ atan(1/x) = pi/2 anzuwenden um das zu interpolierende Intervall zu beschränken — trotz blöder Division.
/x) = pi/2 anzuwenden um das zu > interpolierende Intervall zu beschränken — trotz blöder > Division. Ja... den Gedanken, atan(1/t) zu verwenden, hatte ich auch schon, aber so richtig schmeckt mir das nicht. Erstens ist das Verfahren dann nicht mehr universell, und zweitens expodiert der
-
Thread
Attiny 4313 - Änderung des clock prescalers ohne Effekt
the write procedure is not interrupted. The Application software must ensure that a sufficient division factor is chosen if the selected clock source has a higher frequency than the maximum frequency of the device at the present operating conditions. The device is shipped with the CKDIV8 fuse programmed
-
Thread
PIC16F mit 10 Multiplizieren und Dividieren
Zahl noch 2x links-schieben (= dann ist Zahl= Zahl *8) und das Zwischenergebnis draufaddieren. Division /10 ist deutlich komplizierter...
herauslöst, ist sie erheblich komplizierter zu lösen. Z.B. für eine Zahlenausgabe braucht man gar keine Division /10, da ist die Subtraktionsmethode am schnellsten und codesparendsten.
-
Thread
Frage zu Bascom RND()
ich kann mir nicht wirklich vorstellen, dass der Hersteller so etwas einfaches wie eine Modulo-Division an dieser Stelle versaut hat.
-
Thread
Problem mit Zähler
besser über 8 oder 16 Werte mitteln dann kann das der Compiler ggf. in einen Schift anstelle einer Division umsetzen.
ist arg Böswillig im Interupt! Uart ausgaben dauern je nach Baudrate extrem lange, ebenso die Division und Modulo mit nicht 2er Potenzen... Außerdem solltest du deine Arrays/Zähler überprüfen auf das gleiche Problem was du eben schon hattest mit dem zurücksetzen.
-
Thread
Blutiger Anfänger braucht Rat (ARM,Linux,Roboter, JVM)
Somit ist die Verarbeitung von Fließkommazahlen sehr schnell. Insbesondere gibt es auch Hardware Division und Quadrat-Wurzeleinheiten. Verarbeitung von double ist etwas langsamer als float.
-
Thread
Steuerungsausfall nach Abnahme
entschieden, daß Bugs in geringem Umfang zu den Eigenschaften von Software gehören (ging um StarDivision).
-
Thread
16Bit Variable - überlauf abfangen?
Division. Aber Deine Lösung ist unzweifelhaft eleganter. ;-) Gruss, Jan
schon der Compiler rein, wenn es möglich ist. > Also meinte > ich nicht Division. Aber im Kontext der Aufgabenstellung ist das logisch gesehen zunächst eine Division. Also schreib auch Division hin und überlass es dem Compiler sich was zu überlegen, wie man die Dinge schnell
-
Thread
Verzweigungen
r28, 0 ldi r28, 0b10000000 mov r30, r25 ;Lade Divident in Divisionsregister r30 ldi r31, 2 ;Lade Divisor in Divisionsregister r31 rcall division ;dividiere die zwei zahlen mov Schwellwertleft, Ergebnis ;bringe errechneten
sbrc r28, 0 ldi r28, 0b10000000 mov r30, r26 ;Lade Divident in Divisionsregister r30 ldi r31, 2 ;Lade Divisor in Divisionsregister r31 rcall division ;dividiere die zwei zahlen mov Schwellwertmiddle, Ergebnis ;bringe errechneten
-
Thread
Hashfunktion oder Trick für Lookup-Tabellen gesucht
Binärbaums? Vom Ablauf her ja, nur wird hier nicht als Baum gespeichert, sondern als normales Array. Division durch 2 (>>1) ist ja kein Aufwand. > Wen man dann noch den Binärbaum so entartet Kann er hier nicht, denn die Daten sind fix.
> Vom Ablauf her ja, nur wird hier nicht als Baum gespeichert, sondern als > normales Array. Division durch 2 (>>1) ist ja kein Aufwand. > >> Wen man dann noch den Binärbaum so entartet > > Kann er hier nicht, denn die Daten sind fix. Kommt drauf an wie man die Struktur im Speicher interpretiert
-
Thread
Knobelei: Zufallsgenerator
neugierig, ob das in einen ATtiny13 überhaupt reinpassen würde, schließlich werden ja Divisionen/Modulo-Operationen benötigt. Keine Angst, der Gleitkommakram wird komplett vom Compiler aufgedröselt, schreibt sich so halt nur einfacher hin. ;-) Immerhin, ist derzeit nur zu 75 % ausgelastet, ich
-
Thread
Inline Assembler- Bits spiegeln
ein Compiler den Code nach Möglichkeiten abscannt, Algorithmen durch LUTs zu ersetzen? Eine Division durch 10 — kein Problem: Speicher hat man ja bekanntlich wie Heu! Also eine LUT her, damit man ein paar grottige Ticks spart. Noch ein LUT für den nächsten Shift oder das mod 10 gefällig?. Ja klar
-
Thread
Fixpoint-Arithmetik in "C"
nach den geeignetsten Faktoren und Divisoren, mit denen man mit Integer-Multiplikation und Integer-Division ohne allzugroße Verluste von 512 auf 500 kommt und umgekehrt. Das ist meine Lösung zum Umwandeln der 10Bit Nachkommastellen nach Dezimal und zurück. Wahrscheinlich gibts auch andere Verfahren,
Die Umwandlung der Vorkommastellen geht schneidet sonst die obersten 6 bits ab. 5. Die Division macht folgende Beispiele falsch 8191.999 (007FFFFF) / 0.006 (00000007) = 2097151.999 sollte :1.1983725E+06 ERROR 131071.999 (07FFFFFF) / 0.124 (0000007F) = 0.009 sollte :1.0568325E+06 ERROR
-
Thread
24bit Subtraktion für binär zu ASCII (für Ausgabe am LCD)
schnellen Antworten. > In dem Link: http://www.mikrocontroller.net/topic/48511#new > ist eine Divisionsroutine drin 32bit durch 32bit. Das ist doch > eigentlich dasselbe, wenn ichs dividiere, wie wenn ich so oft > subtrahiere bis der Carry entsteht...? Das kommt drauf an. Die Division kriegst du auch
SBCI R19, 0x0F ; höchstwertigen Bits > Ja, das ist alles. Jetzt vergleich mal mit der Division. Du kannst viele Subtraktionen machen in der Zeit die eine Division benötigt. Und da du weist, dass du für eine Ziffer nie mehr als 10 Subtraktionen benötigen wirst, ist die Subtraktionsmethode
-
Thread
Frequenz Gyro Integration
ich den Wert finde, der dem in der Tabelle am nähsten ist. Und dann habe ich ja immernoch eine Division (Gegenkathete/Ankathete)...
-
Thread
Strommessung PWM Strategie
; TIM_TimeBase_InitStructure.TIM_Period = PWM_PERIOD; TIM_TimeBase_InitStructure.TIM_ClockDivision = 0; TIM_TimeBase_InitStructure.TIM_RepetitionCounter = 3; TIM_TimeBaseInit(TIM1, &TIM_TimeBase_InitStructure); TIM_UpdateRequestConfig(TIM1, TIM_UpdateSource_Global); TIM_SelectOutputTrigger
-
Thread
MQTT unterbrechungsfrei senden
hast aber kein Problemchen beim Programmieren (z.B. wie man eine double precision floating point division auf einer 8 Bit CPU hinkriegt könnten Dir hier viele sofort erklären), sondern Du hast ein Infrastruktur-Problem. Dir steht kein Datenkanal mit ausreichend geringer Latenz und gleichzeitig hoher Zuverlässigkeit
-
Thread
Wo ist in meiner Berechnung der Fehler?
ganze wesentlich > schneller und kleiner, Nicht automatisch, z.B. auf ATmega328: uint32_t Division: ca. 615 Cycles float Division: weniger als 500 Cycles
Johann L. schrieb im Beitrag #7671868: > Nicht automatisch, z.B. auf ATmega328: > > uint32_t Division: ca. 615 Cycles > float Division: weniger als 500 Cycles und was ist mit flash und sram Verbrauch, manchmal ist es nicht die Geschwindigkeit die bremst, sondern das der SRAM ausgeht oder weniger
-
Thread
Ogg Vorbis
Kleinserien recht teuer. Solange ich noch im 16 bzw. 24 Integer Operationen auskomme und die Divisionsoperationen in Grenzen halten, werde ich wohl vorerst aus fertigungstechnischen (Kosten) Gründen beim AVR bleiben.
-
Thread
STM32 HAL_SPI Problem: MOSI immer HIGH
100; htim3.Init.CounterMode = TIM_COUNTERMODE_UP; htim3.Init.Period = 0; htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; if (HAL_TIM_PWM_Init(&htim3) != HAL_OK) { Error_Handler(); } sMasterConfig.MasterOutputTrigger
-
Thread
ATmega328 CLKDIV8 geht nicht
bits will be reset to “0000”. If CKDIV8 is programmed, CLKPS bits are reset to“0011”, giving a division factor of 8 at start up. This feature should be used if the selected clocksource has a higher frequency than the maximum frequency of the device at the present operat-ing conditions. Note that any
bits regardless of the CKDIV8Fuse setting. The Application software must ensure that a sufficient division factor is chosen ifthe selected clock source has a higher frequency than the maximum frequency of the device atthe present operating conditions. The device is shipped with the CKDIV8 Fuse programmed
-
Thread
AVR C implizite Typkonvertierung, fehlerträchtig oder falsch?
höherwertigen Bytes des Rückgabewerts von millis() enthält. Sowohl die Schiebeoperation als auch die Division durch 65536 optimiert der Compiler zu - nichts. In jeder Optimierungsstufe außer O0 - da kopiert er die Daten ein bißchen im Kreis herum. > Für Menschen die den AVR nicht von innen und aussen kennen
-
Thread
Ultraschallsensor und ATmega 2560
wie viel Rechenzeit wiegen dieser Zeile bei jedem Schleifendurchlauf drauf geht. Du hast da eine Division und eine Multiplikation bei jedem Schleifendurchlauf. Besser so: > if (getUSTimePerCM() - lastChecked >= 60*1000/58) { Der Unterschied ist, dass in diesem Fall die Multiplikation und die Division beide vom Compiler vorberechnet werden können. Die Kosten zur Laufzeit sind 0. 60*1000/58 = 1034. Das würde ich in eine definition auslagern, um dem Ausdruck einen sprechenden Namen zu geben
-
Thread
Zweipolige Trennung mit Verpolschutz
Photovoltaic Driver, z.B. FDA217. https://www.digikey.de/de/products/detail/ixys-integrated-circuits-division/FDA217/4573270
-
Thread
VHDL vs. Schltplan
allerdings sofort lesbaren HDL Code...< gilt nicht für mich :-). Wenn ich mir vorstelle, eine 32-Bit Division in HDL zu erstellen; oh je. Ich meine, ich hab` nie Informatik oder Elektrotechnik studiert. Ist VHDL (HDL?) wegen der Ausbildung im Studium so populär? Gruß Alf
-
Thread
LED Blinken zur Datenflusskontrolle
so schnelles Blinken, i = 5 -> fünffach so schnelles Blinken. Im Grunde wird hier übrigens eine Division durchgeführt, und zwar Max-Stand/i. Und jetzt kommt der Clou: Du verwendest als Inkrementationsschritt die DataInCount-Variable aus dem PZEUD-Task! Damit bist Du praktisch fertig. Eine gesonderte
-
Thread
attiny asm: 8x8bit signed multiply
immer lassen sich solche "Abkuerzungen" dann in die uebrige Projektumgebung einpassen. Z.B. die Division im ternaeren Zahlensystem. > Das ist die Sorte Problem, ueber die man > beim Besuch der sanitaeren Anlagen nachdenken kann. Da sollte man sie dann aber auch belassen. Wenn du einen anderen
-
Thread
Micropython rp2040
Ja, für so etwas sollte man einen besseren/passenderen µC nehmen. Der RP2040 hat keinen Divisions-Befehl sondern nur eine etwas spezielle Implementation für Division eingebaut. Die braucht für 32Bit-Wort ÷ 32Bit-Wort genau 8 Zyklen. Man kann während der Wartezeit zwar noch etwas anderes machen,