Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Порт atmega 1280 для ucos
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы
_artem_
Кто нибудь делал?
_artem_
вобшем кое что поправил для 128 порта и вроде бы односекундная мигалка работает. остальное буду на рабочем проекте тестировать.
Но один вопрос все таки гложет - с регистрами EIND для инструкций EICALL и EIJMP (новое в 1280) и старый RAMPZ .
С RAMPZ вроде бы ясно - пиши во флеш в одном месте и не забывай прерывания запрешать и все как будто ок будет, я даже его не использую .

с EIND немного темновато , прочесал код от моего проекта на наличие EICALL и EIJMP... ничего подобного не нашел. То ли их наличие зависит от размера кода то ли от версии компилятора ли? При смене контекста на другую задачу вполне возможно использование данной регистра в другой задаче тоже. Вопрос в том - пихать ли его тоже в стек или нет при смене контекста?
Если кто нибудь знает при каких условиях этот регистр применяется буду признателен за наводку.
_artem_
Ответ от атмеля :

The ATmega1280 or devices with less flash memory does not have the EIJMP instruction, which means that you do not need to store this value for these devices. This is shown in the notes in datasheet on page 423. However to be 100% compatible with the ATmega2560/2561 and devices with bigger flash memories you do need to store this register on the stack for these devices. This is because a ISR might interrupt between writing the address to Z and EIND registers and performing the actual jump. I do not know which current compilers use this instruction, but to be able to utilize the memory completely they will need to do so. So to be compatible I would save the EIND register, even if that gives you a higher memory footprint for your RTOS for these devices.

Спасибо за внимание
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.