Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Переход с AVR на ARM
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Страницы: 1, 2
Wano
Людиии HELP.
Что за примудрости в Keil. Мигал я светодиодами на платке. Вот стандартная фирмовая запись обработчика прерывания:

long timeval;

/* Timer Counter 0 Interrupt executes each 10ms @ 60 MHz CPU Clock */
void tc0 (void) __irq {
++timeval;
T0IR = 1; // Clear interrupt flag
VICVectAddr = 0; // Acknowledge Interrupt
}

Пытаюсь внешнюю переменную timeval из головной программы изменить, а ничё не выходит. Зато сравнивать могу. Неужели тут уже критические секции мудрить надо как в вижуале?
GetSmart
Может оптимизатор возомнил из себя слишком умного и перемудрил. Попробуйте объявить переменную так:

volatile long timeval;

А мигает то с нормальной скоростью?

Цитата
Неужели тут уже критические секции мудрить надо как в вижуале?

А вы что думали? Прерывание может произойти в любой момент. Сосбсно в любом проце так. Если будете просто обнулять переменную (записывать в неё любое число), то без проблем. Запрещать прерывания не надо. А если в команде попытаетесь её прочитать, что-то добавить например и записать обратно, то учтите что она могла уже измениться.
Wano
Агааааааа volatile long timeval; прокатило. О как. biggrin.gif
e-tarasov
Люди помогите разобраться с примерами от атмела от их либов голова кругом идет. Может книгу какую нибудь посоветуете.
beer_warrior
Ручками, ручками. Пока не лезть в USB и прерывания, все достаточно просто - главное помнить:
1.Переключение преиферии
2.Подачу тактовой на каждый блок.
3.Отдельные пары регистров, для enable/disable.
Playnet
http://troosh.pp.ru/arm/

не находится... Если у кого сохранил, просьба скинуть...

И еще.. Вроде, были ARM, стали SAM... Что произошло и что с совместимостью?
SpiritDance
Были RM стали Smart ARM, смена названия исключительно маркетоидная на мой взгляд.
vxzxc
ARM - 32bit
AVR - 8bit
не значит ли это, что при переходе с AVR на ARM памяти потребуется больше?
т.е. например, есть проект на IAR C под mega128(128кбайта flash + 32кбайта ОЗУ внешнее)
пусть и flash, и ОЗУ занято полностью
переносим проект под ARM, например sam7(128 flash, 32 ОЗУ)
и вот вопрос: хватит ли памяти у ARM'а, или памяти надо заведомо больше (как по flash так и/или по ОЗУ)?

есть ли возможность мудрить с выравниванием данных? но видимо лучше этого не делать
IgorKossak
Цитата(vxzxc @ Oct 16 2006, 08:41) *
ARM - 32bit
AVR - 8bit
не значит ли это, что при переходе с AVR на ARM памяти потребуется больше?
т.е. например, есть проект на IAR C под mega128(128кбайта flash + 32кбайта ОЗУ внешнее)
пусть и flash, и ОЗУ занято полностью
переносим проект под ARM, например sam7(128 flash, 32 ОЗУ)
и вот вопрос: хватит ли памяти у ARM'а, или памяти надо заведомо больше (как по flash так и/или по ОЗУ)?

Собирал один и тот же тестовый пример (dhrystone) для AVR, ARM и ARM(Thumb). В последнем случае расход флеш был наиболее экономный. По ОЗУ ситуация чуть хуже, но я не делал ручной оптимизации данных, т. е. не заменял int на short и т. д.
Цитата(vxzxc @ Oct 16 2006, 08:41) *
есть ли возможность мудрить с выравниванием данных? но видимо лучше этого не делать

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