-
Artikel
AVR Arithmetik
seriellen ASCII-Übertragung an den PC ist diese Umwandlung nötig. Sie ist ähnlich aufwendig wie eine Division, zum Beispiel für eine 32-Bit-Zahl etwa 500–900 Taktzyklen und 10 Register. Mehrere Verfahren werden angeboten: Division /10. Für eine Division pro Dezimalstelle ist nur ein Unterprogramm nötig. Der
: Using the 8-bit AVR Hardware Multiplier (Application Note, pdf, en) Wurzelfunktion Optimierte Division durch 10 Optimierte Division durch 3 Division durch reziproke Multiplikation, Tutorial Math32: Some Useful Assembler Multibyte Maths Subroutines & Macrocalls (oder hier) Elm-Chan's Bibliotheken u.a
-
Artikel
FIFO
Code-Beispiel. FIFO mit C-Präprozessor. Hinweis: viele C-Compiler übersetzen automatisch eine Modulo-Division mit einem Divisor einer 2-er Potenz in Form einer entsprechenden Bitmaskierung. Zum einen erspart man sich dadurch das Bestimmen der entsprechenden Maske, zum anderen hat man dann den 'Bonus', dass
-
Artikel
Festkommaarithmetik
Ziffern? Dazu wird eine MODULO Operation durchgeführt. Diese liefert den Rest einer ganzzahligen Division. 28943 MOD 10 = 3 Nun gehts an die nächste Stelle. Dazu wird die Zahl einfach durch 10 dividiert 28943 / 10 = 2894 Und nun das Spiel von vorn. 2894 MOD 10 = 4 2894 / 10 = 289 289 MOD 10 = 9 289 /
Verfügung stellen. Allerdings ist diese Vorgehesweise durch die Modulo- und anschliessende Divisionsoperation etwas ineffizient. Es werden tatsächlich zwei Divisionen durchgeführt, obwohl nur eine notwendig wäre. Der Optimizer (-Os auf der Kommandozeile von avr-gcc) „erkennt“ diese Situation und setzt
-
Artikel
AVR - Die genaue Sekunde / RTC
Comparewertes ist sehr einfach: Da haben wir ja noch mal Glück gehabt, es gibt keinen Rest bei der Division und die Sekunde ist exakt 256 * 43200 = 11059200 Zyklen lang. Theoretisch. Denn selbst wenn auf dem Quarz eine Frequenz von 11,0592 Mhz aufgedruckt ist, so schwingt er doch auf einer etwas anderen
Und beim nächsten Timerinterrupt wird dann wieder der Comparewert geladen, der das Ergebnis der Division war. Es ergeben sich somit: Exakt so, wie wir es wollten. Das Programm. Nachfolgend nun das C-Programm. Da wir ja alle nicht gerne rechnen, lassen wir das einfach den C-Compiler erledigen. D.h. wir
-
Artikel
Multiplexen
Umkehrung des Multiplexen ist Demultiplexen. FDMA. Recht einfach zu verstehen ist FDMA (Frequency Division Multiple Access, Frequenzmultiplex). Das kennt jeder vom Radio. Es gibt nur ein Übertragungsmedium, die Luft/den Freiraum. Dennoch können viele Radiosender gleichzeitig senden bzw. empfangen werden
hören, ohne von den anderen gestört zu werden. TDMA. Etwas schwieriger ist die Sache bei TDMA (Time Division Multiple Access, Zeitmultiplex). Dieses Verfahren wird bei digitalen Telephonsystemen, Mobilfunk, LCDs, LED-Anzeigen mit vielen LEDs etc. angewendet. Beim digitalen Telephonsystem wird dabei jedem
-
Artikel
Avr-gcc Bugs
code bloat tree-ssa 81533 Constructing an object that can be initialized at at load-time c++ 80929 Division with constant no more optimized to mult middle-end 65082 Wasted cycles when using a register based varible 56439 unnecessary spill for global and local register variables 55181 Expensive shift loop
not have it (ATtiny26) 4.7.0 50931 Support a 24-bit scalar integer mode 4.7.0 50910 Inefficient division by 2 4.7.0 50887 Support ACCUMULATE_OUTGOING_ARGS 4.7.0 50775 Register allocator sets up frame and frame pointer with low register pressure 4.7.0, ra 50616 ICE: lto1.exe: invalid resolution in the
-
Artikel
STM32
ARM-Core hat eine höhere Taktfrequenz und kann gleichzeitig mehr in weniger Takten berechnen Hardware-Division, bei einigen FPU zur effizienten float-Berechnung Mit größerem Flash/RAM verfügbar Code kann direkt aus dem RAM ausgeführt werden, Speicherschutz und privilegierter Ausführungsmodus können "Kernel