Страница 16 из 421
Добавлено: Вт сен 02, 2008 12:33:57
Frensis
Lakshmi писал(а):Frensis писал(а):To ARV:
Допустим, мы объявили целочисленную константу i:
const int i=10;
Меня всего лишь навсего интересует вопрос, куда сохранится константа i в памяти МК?
Скомпилируйте и посмотрите листинг на АСМе и в симуляторе - например VMLAB - что где лежит.
Если бы я знал как это сделать...
Добавлено: Вт сен 02, 2008 12:43:37
Lakshmi
Frensis писал(а):Если бы я знал как это сделать...
Вот по шагам расписано
как использовать CVAVR и VMLAB даже с картинками.
Запускаете любой проект из примеров CVAVR и добавляете туда константу.
Ребус CVAVR и Timer1
Добавлено: Чт сен 11, 2008 18:26:15
andrew_pan
Понадобилось сделать на mega 88V (PORTD.5) генератор секундных импульсов. Хоть с CVAVR никогда не работал, но думаю - тут все просто. А получилось вот что:
interrupt [TIM1_OVF] void timer1_ovf_isr(void)
{
PORTD.5=!PIND.5;
}
НУ и бесконечный цикл
while (1)
{ };
Включаю - не работает.
Добавляю:
while (1)
{
// Place your code here
PORTC.0=!PINC.0;
delay_ms(300);
};
}
Все начинает работать - в чем прикол?
Re: Ребус CVAVR и Timer1
Добавлено: Чт сен 11, 2008 20:20:37
tych
andrew_pan писал(а):Все начинает работать - в чем прикол?
Возможно в даташите !
Re: Ребус CVAVR и Timer1
Добавлено: Пт сен 12, 2008 09:42:47
andrew_pan
tych писал(а):andrew_pan писал(а):Все начинает работать - в чем прикол?
Возможно в даташите !
А может кто-нибудь объяснит? Инициализации одинаковые - и в том и в другом случае.
Добавлено: Пт сен 12, 2008 14:14:50
Барсик
andrew_pan, Кроме того, что Вы написали, надо ещё задать режим таймера, установить регистр маски прерываний таймера, и разрешить прерывания вообще.
В курсе, что в CodeVisionAVR можно вызвать автоматический генератор программ и просто расставить галки в настройках таймера?
Ваша проблема обсйждалась здесь же, в "мелких вопросах" с 28 июля по 4 августа.
Добавлено: Пт сен 12, 2008 14:25:32
andrew_pan
Барсик писал(а):andrew_pan, Кроме того, что Вы написали, надо ещё задать режим таймера, установить регистр маски прерываний таймера, и разрешить прерывания вообще.
В курсе, что в CodeVisionAVR можно вызвать автоматический генератор программ и просто расставить галки в настройках таймера?
Ваша проблема обсйждалась здесь же, в "мелких вопросах" с 28 июля по 4 августа.
Да, я в курсе.
Начальный код делался с помощью Wizard Cvavr и все нужные галки стоят. Перывания разрешены (#asm (sei)).
Повторяю - все инициализации одинаковые.
Вопрос поему таймер начинает работать после добавления в код функции delay? Насколько я знаю delay работает через WDT. Но какая связь с timer1?
Добавлено: Пт сен 12, 2008 14:43:11
Барсик
Все настройки таймера1 - в студию! В смысле, приведите строки из Вашей программы, относящиеся к настройкам таймера1.
Добавлено: Пт сен 12, 2008 19:00:22
andrew_pan
Барсик писал(а):Все настройки таймера1 - в студию! В смысле, приведите строки из Вашей программы, относящиеся к настройкам таймера1.
Код в прилагаемом файле.
Если раскомментировать delay_ms(), то начинает работать.
Пробовал CVAVR 1.25.6 и еще 2.03free - результат одинаковый.
Добавлено: Сб сен 13, 2008 13:46:55
Тихан
Вопросик есть: если например фьюз не за прогиный ещё ATMEL'ам,а
я сниму галку этого фьюза в CVAVR, то есть хочу его стереть(а он уже стёрт) и прошью , то небудет никакого глюка?а то я как то сомневаюсь...
Добавлено: Сб сен 13, 2008 14:46:36
Паятель
Не будет.
Добавлено: Сб сен 13, 2008 15:37:16
Тихан
Пасибо!!!
Добавлено: Пн сен 15, 2008 17:08:05
Степаныч
Добрый день!У меня не много глуповатый вопрос как CVAVR организовать переход к началу программы т.е. как в конце программы организовать безусловный переход к началу программы(или может лучше сказать организовать бесконечный цикл)? Например в асме насколько я помню прописывается RJMP (метка куда хочешь перейти) а как это сделать в CVAVR но только чтоб просто программа заработала сначала??
Добавлено: Пн сен 15, 2008 17:16:01
ARV
бесконечный цикл в Си орагнизуется одинм из 4-х более-менее разумных способов:
1. в начале ставите метку, например m1:, а в конце делаете goto m1 - это вам и будет аналог rjmp
2. for( ; ; ){ операторы }
3. while(1) { операторы }
3. do { операторы } while (1);
операторы в фигурных скобках будут выполняться бесконечно
Добавлено: Пн сен 15, 2008 17:16:51
chuchxe
Степаныч писал(а):Добрый день!У меня не много глуповатый вопрос как CVAVR организовать переход к началу программы т.е. как в конце программы организовать безусловный переход к началу программы
Наверно так
Код: Выделить всё
metka: начало программы
программа
goto metka;
и в хелпе почитайте: Non-local Jump Functions
Добавлено: Пн сен 15, 2008 18:59:01
Степаныч
Спасибо за подсказку goto мне очень помог!

Добавлено: Вт сен 16, 2008 09:05:50
KIP
Вопрос к знатокам: каким образом реализует данный компилятор СИшную команду деления?
Добавлено: Вт сен 16, 2008 09:23:06
KIP
Frensis писал(а):Если бы я знал как это сделать...
В симуляторе MVLAB просто кликнете курсором на эту переменную в коде, и появится табличка с адресом ячейки памяти и числом.
Добавлено: Вт сен 16, 2008 09:26:13
chuchxe
KIP писал(а):Вопрос к знатокам: каким образом реализует данный компилятор СИшную команду деления?
Позырьте в АСМ листинге после компиляции - файл .LST
Добавлено: Вт сен 16, 2008 09:35:09
KIP
chuchxe писал(а):KIP писал(а):Вопрос к знатокам: каким образом реализует данный компилятор СИшную команду деления?
Позырьте в АСМ листинге после компиляции - файл .LST
Посмотрю
А вопрос возник от сомнения, надо ли заменять деление смещением, или CVAVR сам сделает? Пока всё изучаю на теории и в симуляторах-там деление после компиляции проходит быстро.