AVR studio 6 ignoruje instrukci SEI

Nemáte někdo tušení, proč může AVRstudio6 při simulaci chodu programu pro Atmega48 ignorovat instrukci SEI? Prostě po jejím provedení nic neudělá.
Zkoušel jsem to okecat konstrukcí:

ldi ZL, 0x5f ;načtení adresy SR do Zpointru
ldi r16, 0x80 ;hodnota pro SR
st Z, r16 ;uložení hodnoty do SR

SR měl stále hodnotu 0x0.

V AVR studiu 5 to v pohodě fungovalo, tak nevím, kde je chyba. Zajímavé je i to, že pokud globální přerušení nastavím manuálně, tak se stejně žádná přerušení nevykonají.

Díky za jakoukoli inspiraci.

Už nevím, čí jsem. Když do SR zapíšu hodnotu 0b1111 1111, tak se mi tam objeví 0b0111 1111, když tam pošlu 0b1010 1010, tak to tam zapíše 0b0010 1010. Tu první jedniču tam prostě není možný dostat. Je možný, že umí AVR studio 6 simulovat i výrobní vadu mikroprocesoru? :laughing:

Nevim jak ve verzi 6, ale dřív jejich simulátory neuměly ani zdravý procesory :wink:. Zkrátka to nalej do mcu a uvidíš.

Jo, to ono to fungovat bude, je to jen často používaný kus kódu, ze kterého jsem se rozhodl udělat makro, abych ho nemusel furt dokola opisovat, nebo kopírovat. Snažil jsem se to otestovat v nové verzi AVR studia a ono se to začlo chovat divně, tak mě zajímalo, jestli mají ostatní tytéž zkušenosti.

Budiž to poučení pro ostatní, co si stáhnou AVR studio 6. Pokud se chová divně, nemusí to být nutně chyba na straně uživatele.

Občas se mi stávalo že simulátor (i ve 4) nechtěl povolit přerušení, ignoroval sei. Zjistil sem že to někdy bere jenom pokud je to v main funkci nebo v hlavním loopu ne podprogramu.