Zitat Zitat von oe9vfj
Hallo Henrik,

ich habe die Frage zwar schon bei Deinem Parallel-Post http://www.mcselec.com/index2.php?op...beitrag&t=1125 auf dem MCSELEC-Forum beantwortet, möchte aber hier noch kurz darauf eingehen, damit andere Tiny45 Anwender beim gleichen Problem dieses umgehen können.
Gemäß Datenblatt von ATMEL http://www.atmel.com/dyn/resources/p...ents/2586S.pdf hat der Tiny45 keine Hardware Mulitplizier ASM Befehle. Im Bascom DAT File für den Tiny45 ist aber der entsprechende Parameter HWMUL=1, d.H. der Compiler geht davon aus, dass der Prozessor HW-Mul unterstützt und bindet die entsprechenden Routinen ein was natürlich auf der Hardware nicht funktioniert.
Ändere im File ATTiny45.DAT die Zeile mit HWMUL auf
HWMUL=0, dann müssten die Multiplizierbefehle für Byte und Word/Integer funktionieren. Da mit der derzeiten Version die HW-Mul Unterstützung für Byte und Word/Integer implementiert ist, aber noch nicht für LONG, wird für LONG die normale bisherige Routine verwendet und daher funktioniert LONG bei diesem falschen Parameter.
Hallo Josef,

jupp bereits dankend gelesen.

allerdings missinterpretierte ich das Datenblatt etwas ...

"Some implementations of the
architecture also provide a powerful multiplier supporting both signed/unsigned multiplication".
and fractional format"

hielt ich für eine Form der Hardwaremultiplikationsunterstützung.

Wie dem auch sei, Dein Tip funktioniert, wenn auch zu dem Preis, daß pro Multiplikation 82 zusätzliche Bytes Code erzeugt werden. Aber selbst wenn per HWMUL = 0 die Unterstützung ausgeschaltet wird, lande ich, sobald die fragliche Variable wieder als LONG dimensioniert wird, bei der ursprünglichen Codegröße.

Wie bei MCS schon sinngemäß geschrieben: Man hat die Wahl zwischen Flash- und Ramverschwendung. .

Viele Grüße
Henrik