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

 
 
> scmRTOS + XMEGA, порт scmRTOS для XMEGA
quarter2
сообщение Jan 19 2011, 14:45
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 22
Регистрация: 23-12-05
Пользователь №: 12 594



Всем доброго времени суток!
Кто-нибудь запускал scmRTOS на XMEGA ?
У меня без проблем scmRTOS работает на atmega128.
Хочу развести плату под atXmega256, но нет уверенности, что scmRTOS сможет работать на этом кристале.
Пробую свои проекты с scmRTOS (работающие на atmega128) откомпилировать (IAR EWAVR 5.50) под Xmega256.
Пока что результаты отрицательные.

Сообщение отредактировал quarter2 - Jan 20 2011, 07:52
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
quarter2
сообщение Feb 8 2011, 15:52
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 22
Регистрация: 23-12-05
Пользователь №: 12 594



Может быть вопрос немного не в тему, но не хочется создавать товый топик.
Как scmRTOS относится к записи данных в EEPROM?
Ведь для корректной записи в EEPROM необходимо отключать прерывания на несколько милисекунд.
Я использую специально для этих целей файл eeprom.s90
Не окажет ли это влияние на работу операционки?

Сообщение отредактировал quarter2 - Feb 8 2011, 15:53
Прикрепленные файлы
Прикрепленный файл  eeprom.rar ( 3.25 килобайт ) Кол-во скачиваний: 24
 
Go to the top of the page
 
+Quote Post
ReAl
сообщение Feb 8 2011, 22:06
Сообщение #3


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Цитата(quarter2 @ Feb 8 2011, 17:52) *
Ведь для корректной записи в EEPROM необходимо отключать прерывания на несколько милисекунд.
Зачем ???


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
quarter2
сообщение Feb 9 2011, 07:48
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 22
Регистрация: 23-12-05
Пользователь №: 12 594



Цитата(ReAl @ Feb 9 2011, 00:06) *
Зачем ???

проблема есть реально, если на время записи в еепром не запрещать прерывание - данные могут записаться некорректно.
после того как начал использовать вышеприведённый файл - проблема устранилась.
вот здесь этот вопрос обсуждается
http://electronix.ru/forum/lofiversion/index.php/t16140.html
http://electronix.ru/forum/index.php?showt...amp;#entry71028
Вот пример записи в еепром из даташита на Atmega128:
Assembly Code Example
in r16, SREG ; store SREG value
cli ; disable interrupts during timed sequence
sbi EECR, EEMWE ; start EEPROM write
sbi EECR, EEWE
out SREG, r16 ; restore SREG value (I-bit)
C Code Example
char cSREG;
cSREG = SREG; /* store SREG value */
/* disable interrupts during timed sequence */
__disable_interrupt();
EECR |= (1<<EEMWE); /* start EEPROM write */
EECR |= (1<<EEWE);
SREG = cSREG; /* restore SREG value (I-bit) */

Сообщение отредактировал quarter2 - Feb 9 2011, 08:17
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Feb 9 2011, 08:34
Сообщение #5


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (quarter2 @ Feb 9 2011, 09:48) *
проблема есть реально, если на время записи в еепром не запрещать прерывание - данные могут записаться некорректно.
Неверно. Прерывания во время записи не мешают.
QUOTE (quarter2 @ Feb 9 2011, 09:48) *
Вот пример записи в еепром из даташита на Atmega128:
Покажите, где тут запрещение прерываний на время записи, где тут миллисекунды запрещенных прерываний?
QUOTE (quarter2 @ Feb 9 2011, 09:48) *
после того как начал использовать вышеприведённый файл - проблема устранилась.
Все вменяемые компиляторы имеют встроенные инструменты делать то же самое без этого файла.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
quarter2
сообщение Feb 9 2011, 09:00
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 22
Регистрация: 23-12-05
Пользователь №: 12 594



Цитата(Сергей Борщ @ Feb 9 2011, 10:34) *
Неверно. Прерывания во время записи не мешают.
Покажите, где тут запрещение прерываний на время записи

The following example shows how this can be used to avoid interrupts during the
timed EEPROM write sequence
/* disable interrupts during timed sequence */
__disable_interrupt();
EECR |= (1<<EEMWE); /* start EEPROM write */
EECR |= (1<<EEWE);
SREG = cSREG; /* restore SREG value (I-bit) */


Есть ни что иное, как запрещение прерываний на время окончания записи в ЕЕПРОМ
Время записи в ЕЕПРОМ в Atmega128 согласно тому же даташиту:

Цитата(Сергей Борщ @ Feb 9 2011, 10:34) *
где тут миллисекунды запрещенных прерываний?

Table 2. EEPROM Programming Time
EEPROM Write (from CPU) = 8.5 ms

Цитата(Сергей Борщ @ Feb 9 2011, 10:34) *
Все вменяемые компиляторы имеют встроенные инструменты делать то же самое без этого файла.


В IAR EWAVR 5.50 в файле eeprom.s90 нет запрещений прерываний на время ожидания окончания записи в ЕЕПРОМ

Сообщение отредактировал quarter2 - Feb 9 2011, 09:06
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Feb 9 2011, 09:35
Сообщение #7


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (quarter2 @ Feb 9 2011, 11:00) *
Есть ни что иное, как запрещение прерываний на время окончания записи в ЕЕПРОМ
Внимательно читайте даташит и включайте голову. Это запрещение прерываний на две команды запуска процесса записи, 4 такта.
QUOTE (quarter2 @ Feb 9 2011, 11:00) *
В IAR EWAVR 5.50 в файле eeprom.s90 нет запрещений прерываний на время ожидания окончания записи в ЕЕПРОМ
В IAR EWAVR 5.50 есть ключевое слово __eeprom. eeprom.s90 пора забыть еще в версии 1.26. Ждать окончания записи можно и с разрешенными прерываниями.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
quarter2
сообщение Feb 9 2011, 10:03
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 22
Регистрация: 23-12-05
Пользователь №: 12 594



Цитата(Сергей Борщ @ Feb 9 2011, 11:35) *
Внимательно читайте даташит и включайте голову. Это запрещение прерываний на две команды запуска процесса записи, 4 такта.

Про пример из даташита - согласен. В примере как раз прерывания отключаются на время запуска процесса записи в ЕЕПРОМ.
Но в файле eeprom.s90 как раз прерывания отключаются на время окончания записи в ЕЕПРОМ:
;----------------------------------------------------------
; ?eewait
;
; Wait for previous eeprom write operation to complete
;
; SIZE: 6 bytes

RSEG CODE:CODE:NOROOT(1)
?eewait:
CLI
SBIS EECR,EEWE ; Loop until previous write is completed
RET
OUT SREG,T0
RJMP ?eewait

Цитата(Сергей Борщ @ Feb 9 2011, 11:35) *
В IAR EWAVR 5.50 есть ключевое слово __eeprom. eeprom.s90 пора забыть еще в версии 1.26.

Неправильно. Все переменные, которые объявлены ключевым словом __eeprom при компиляции для работы с областью памяти ЕЕПРОМ используют файл
eeprom.s90
Цитата(Сергей Борщ @ Feb 9 2011, 11:35) *
Ждать окончания записи можно и с разрешенными прерываниями.

Если бы не наступал на эти грабли - не поднимал бы вопрос. Без запрещения прерываний на время окончания записи есть вероятность некорректной записи данных в область ЕЕПРОМ

Сообщение отредактировал quarter2 - Feb 9 2011, 10:07
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Feb 9 2011, 11:14
Сообщение #9


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (quarter2 @ Feb 9 2011, 12:03) *
Неправильно. Все переменные, которые объявлены ключевым словом __eeprom при компиляции для работы с областью памяти ЕЕПРОМ используют файл
eeprom.s90
Не совсем так - они используют функции из библиотеки. Возможно, источником при компиляции библиотеки является этот самый eeprom.s90. Если вы добавите этот файл в проект, то его функции заменять одноименные библиотечные. Давно не пользуюсь ИАРом для AVR, не могу посмотреть что он там берет из библиотеки. Посмотрел старый проект - использовался компилятор версии 2.28, прерывания мною не запрещались, прерывания шли довольно активно, сбоев при записи не было.
QUOTE (quarter2 @ Feb 9 2011, 12:03) *
Без запрещения прерываний на время окончания записи есть вероятность некорректной записи данных в область ЕЕПРОМ
Прерывания тут не при чем - никогда не держу прерывания запрещенными во время записи и ни разу не нарывался на некорректную запись. Возможно вы используете (хотя бы и на чтение) __eprom-переменные в прерываниях, в этом случае - да, будут проблемы. Но это уже не проблема прерываний, а неверное архитектурное решение.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- quarter2   scmRTOS + XMEGA   Jan 19 2011, 14:45
- - ReAl   Пока туда не лазил. Точнее, по диагонали просмотре...   Jan 20 2011, 07:42
- - SWD   Пытаюсь запустить scmRTOS на ATxmega128A1. Вопросы...   Jan 20 2011, 11:43
- - ReAl   Я веду AVR/GCC порт и потихоньку подхватываю AVR/I...   Jan 20 2011, 16:20
- - SWD   Спасибо, я так и думал, осталось разобраться, как ...   Jan 24 2011, 07:15
|- - ReAl   Цитата(SWD @ Jan 24 2011, 09:15) В файле ...   Jan 24 2011, 16:08
- - SWD   В файле OS_Target_asm.s90 заботливо описаны все RA...   Jan 25 2011, 04:40
|- - ReAl   Цитата(SWD @ Jan 25 2011, 06:40) В файле ...   Jan 25 2011, 08:40
- - SWD   ЦитатаИ это место надо под #ifdef пустить об Xmega...   Jan 25 2011, 11:35
|- - ReAl   Цитата(SWD @ Jan 25 2011, 13:35) Может лу...   Jan 25 2011, 20:19
|- - quarter2   Цитата(Сергей Борщ @ Feb 9 2011, 13:14) Н...   Feb 9 2011, 11:47
- - SWD   Здравствуйте. scmRTOS работает на ATxmega128A1 (с...   Feb 28 2011, 07:48
|- - ReAl   Цитата(SWD @ Feb 28 2011, 09:48) Возникли...   Mar 1 2011, 08:16
- - SWD   Добавил сохранение в контекст RAMPD и RAMPX. Пробл...   Mar 1 2011, 07:37
- - quarter2   Вопрос к разработчикам scmRTOS: 1. почему исходник...   Apr 22 2011, 13:55
|- - ReAl   Цитата(quarter2 @ Apr 22 2011, 16:55) 1. ...   Apr 22 2011, 19:06
|- - _Артём_   Здраствуйте. Попробовал недавно scmRTOS - понравил...   Jan 16 2012, 23:57
- - ReAl   Ой-ой-ой... Мне самому xmega до сих пор как-то не ...   Feb 12 2012, 11:48
|- - _Артём_   Цитата(ReAl @ Feb 12 2012, 13:48) Ой-ой-о...   Feb 12 2012, 14:59
|- - ReAl   Цитата(_Артём_ @ Feb 12 2012, 16:59) Это ...   Feb 12 2012, 17:41
- - a9d   Стмка на порядок дешевле. И там есть свои вкусност...   Feb 12 2012, 15:52
|- - _Артём_   Цитата(a9d @ Feb 12 2012, 17:52) Стмка на...   Feb 12 2012, 16:25
- - a9d   stm8 настолько дешевые, что стоят почти как stm32....   Feb 12 2012, 17:04
|- - _Артём_   Цитата(a9d @ Feb 12 2012, 19:04) stm8 нас...   Feb 12 2012, 17:59
|- - ReAl   Цитата(a9d @ Feb 12 2012, 19:04) В ST кон...   Feb 12 2012, 18:19
- - a9d   Как раз по этому они и умные. Другие не догадалис...   Feb 12 2012, 18:28
- - Anatoly74   Что-то тема порта XMega давно не обсуждалась. Каки...   Mar 29 2012, 06:02
- - Сергей Борщ   QUOTE (Anatoly74 @ Mar 29 2012, 09:02) Уж...   Mar 29 2012, 07:14


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

 


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


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