Gast
#2252066
Hallo Gemeinde, ich versuche gerade eine Implementierung eines SID-Chips entsprechend der Datenblaetter auf einem Atmega32 (wie sicherlich viele vor mir). Nun habe ich ein Performance-Problem bei der Envelope-Berechnung. Da der SID mit einem sehr weiten Dauernbereich (2ms-8000ms, resp. 6ms - 24000ms) arbeitet, und ich der Kompatibilitaet halber die Registerwerte nicht streichen moechte, komme ich bei der Berechnung unguenstiger Konstellationen (geringe Lautstaerkeveraenderung ueber sehr lange Zeiten) an die Grenzen des 16Bit-Raumes. Loesen kann ich das Problem, in dem ich in den 32Bit-Zahlenraum gehe. Dieses scheint aber bei der Verwendung von mehr als 2 Oszillatoren, SPI-Ansteuerung, Huellkurven und einer DDS-Tastrate von 8kHz nicht mehr zu klappen. Die Wavetables werden im Ram gehalten und sollten nicht allzusehr bremsen. Weiss einer von euch, wie performant die Verarbeitung von 32Bit Integern im Atmega ist? Vielleicht auch im Vergleich zu 16Bit Zahlen? Waehre die Verwendung von Float-Multiplikationen letztlich schneller? Bislang muss der Atmega nur 8- oder 16Bit-Zahlen verarbeiten und eben 3 32Bit-Multiplikationen pro 1/8000s durchfuehren. Getaktet wird mit 16MHz. Ich waere fuer einen Tipp dankbar. Mit Gruss Mike