реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Порт atmega 1280 для ucos
_artem_
сообщение Jul 18 2007, 10:17
Сообщение #1


учащийся
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 29-10-05
Из: города контрастов
Пользователь №: 10 249



Кто нибудь делал?


--------------------
Зачем лаять на караван , когда на него можно плюнуть?

Go to the top of the page
 
+Quote Post
_artem_
сообщение Jul 18 2007, 23:47
Сообщение #2


учащийся
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 29-10-05
Из: города контрастов
Пользователь №: 10 249



вобшем кое что поправил для 128 порта и вроде бы односекундная мигалка работает. остальное буду на рабочем проекте тестировать.
Но один вопрос все таки гложет - с регистрами EIND для инструкций EICALL и EIJMP (новое в 1280) и старый RAMPZ .
С RAMPZ вроде бы ясно - пиши во флеш в одном месте и не забывай прерывания запрешать и все как будто ок будет, я даже его не использую .

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


--------------------
Зачем лаять на караван , когда на него можно плюнуть?

Go to the top of the page
 
+Quote Post
_artem_
сообщение Jul 20 2007, 11:08
Сообщение #3


учащийся
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 29-10-05
Из: города контрастов
Пользователь №: 10 249



Ответ от атмеля :

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.

Спасибо за внимание


--------------------
Зачем лаять на караван , когда на него можно плюнуть?

Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd August 2025 - 07:19
Рейтинг@Mail.ru


Страница сгенерированна за 0.01356 секунд с 7
ELECTRONIX ©2004-2016