Отговори на тема  [ 1 мнение ] 
18F и Hardware Stack 
Автор Съобщение
Ранг: Популярен
Ранг: Популярен
Аватар

Регистриран на: Сря Апр 27, 2005 2:47 pm
Мнения: 349
Местоположение: Varna
Мнение 18F и Hardware Stack
Един интересен проблем на който се натъкнах и за когото трябва да се внимава. По принцип в datasheets на Microchip изрично е споменато, когато се пипа TOS всички прекъсвания трябва да са забранени. Ако рагледаме работата на процесора на теория, това не би трябвало да е необходимо. И аз не го правя, но забелязах следното:
Ако се изпълнява следния код за запазване на стека (в нископриоритено прекъсване):
movff POSTDEC2,TempRegister1
Restore_Stack_Loop:
push
movff POSTDEC2,TOSH
movff POSTDEC2,TOSL
decfsz TempRegister1,F
bra Restore_Stack_Loop
и настъпи високо приоритено прекъсване по време на изпълнение на инструкция movff
Резултатът записан в TOSL или TOSH няма да е този който очакваме (Не съм изследвал проблема в подробности, но за това което пиша съм почти напълно обеден).
Едното решение е да се добавят инструкции bcf INTCON,GIEH след push и bsf INTCON,GIEH след последния movff.
Другото и по-добро според мен е movff инструкциите да се заменят с:
movf POSTDEC2,W
movwf TOSH
movf POSTDEC2,W
movwf TOSL
Някой може ли да допълни нещо по въпроса или да ме коригира, ако смята че в нещо греша.
p.s. Бях чел някъде из форомите за проблем с movff на 18-ки с extended instruction set и по специално movff FS,FD, където FD e WREG,STATUS, BSR и Fast Context Saving.


Пон Сеп 19, 2005 3:32 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 1 мнение ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 1 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни