Gast
#2203175
Hi Leute. Habe vor kurzem ein Programm von einem Atmega32 auf einen Atmega32U4 migriert. Es ging um ein Programm bei dem Zeiten sehr kritisch sind und ich an manchen stellen mit inline assembler arbeiten muss, um eine bestimmte Laufzeit einzuprägen, also Compiler unabhängig machen muss. Leider habe ich gemerkt, dass der Atmega32U4 bei Zugriffen auf die "peripherie" Register (also sowas wie PORTD) mit sts statt wie beim Atmega32 mit out schreibt. sts braucht zwei statt einem Takt. Was ist der Vorteil für eine solche Architektur? Also was bezweckte Atmel mit dieser Entscheidung? Dass alle Register im gleichen Adressraum liegen? In der Instruction Set Summary des Atmega32U4 Datenblattes gibt es den Befehl out immer noch. Habe es noch nicht ausprobiert aber kann ich ihn dann also trotzdem benutzen? Wenn ja muss ich dann die gleiche Registernummer angeben? Warum entscheidet der Compiler sts statt out zu nehmen?