CodeVision AVR в вопросах и ответах

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
Frensis
Вымогатель припоя
Сообщения: 607
Зарегистрирован: Вс июн 08, 2008 14:26:20
Откуда: г. Астрахань
Контактная информация:

Сообщение Frensis »

Lakshmi писал(а):
Frensis писал(а):To ARV:
Допустим, мы объявили целочисленную константу i:
const int i=10;
Меня всего лишь навсего интересует вопрос, куда сохранится константа i в памяти МК?

Скомпилируйте и посмотрите листинг на АСМе и в симуляторе - например VMLAB - что где лежит.

Если бы я знал как это сделать...
Аватара пользователя
Lakshmi
Первый раз сказал Мяу!
Сообщения: 28
Зарегистрирован: Пн сен 01, 2008 21:56:44
Откуда: Балашиха

Сообщение Lakshmi »

Frensis писал(а):Если бы я знал как это сделать...

Вот по шагам расписано как использовать CVAVR и VMLAB даже с картинками.

Запускаете любой проект из примеров CVAVR и добавляете туда константу.
andrew_pan
Родился
Сообщения: 4
Зарегистрирован: Чт сен 11, 2008 18:11:12

Ребус CVAVR и Timer1

Сообщение 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);
};
}

Все начинает работать - в чем прикол?
Аватара пользователя
tych
Э...
Сообщения: 2792
Зарегистрирован: Ср апр 04, 2007 08:39:14
Откуда: Москва
Контактная информация:

Re: Ребус CVAVR и Timer1

Сообщение tych »

andrew_pan писал(а):Все начинает работать - в чем прикол?

Возможно в даташите !
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
andrew_pan
Родился
Сообщения: 4
Зарегистрирован: Чт сен 11, 2008 18:11:12

Re: Ребус CVAVR и Timer1

Сообщение andrew_pan »

tych писал(а):
andrew_pan писал(а):Все начинает работать - в чем прикол?

Возможно в даташите !

А может кто-нибудь объяснит? Инициализации одинаковые - и в том и в другом случае.
Аватара пользователя
Барсик
Друг Кота
Сообщения: 3459
Зарегистрирован: Ср сен 27, 2006 16:18:57

Сообщение Барсик »

andrew_pan, Кроме того, что Вы написали, надо ещё задать режим таймера, установить регистр маски прерываний таймера, и разрешить прерывания вообще.
В курсе, что в CodeVisionAVR можно вызвать автоматический генератор программ и просто расставить галки в настройках таймера?
Ваша проблема обсйждалась здесь же, в "мелких вопросах" с 28 июля по 4 августа.
andrew_pan
Родился
Сообщения: 4
Зарегистрирован: Чт сен 11, 2008 18:11:12

Сообщение andrew_pan »

Барсик писал(а):andrew_pan, Кроме того, что Вы написали, надо ещё задать режим таймера, установить регистр маски прерываний таймера, и разрешить прерывания вообще.
В курсе, что в CodeVisionAVR можно вызвать автоматический генератор программ и просто расставить галки в настройках таймера?
Ваша проблема обсйждалась здесь же, в "мелких вопросах" с 28 июля по 4 августа.

Да, я в курсе.
Начальный код делался с помощью Wizard Cvavr и все нужные галки стоят. Перывания разрешены (#asm (sei)).
Повторяю - все инициализации одинаковые.
Вопрос поему таймер начинает работать после добавления в код функции delay? Насколько я знаю delay работает через WDT. Но какая связь с timer1?
Аватара пользователя
Барсик
Друг Кота
Сообщения: 3459
Зарегистрирован: Ср сен 27, 2006 16:18:57

Сообщение Барсик »

Все настройки таймера1 - в студию! В смысле, приведите строки из Вашей программы, относящиеся к настройкам таймера1.
andrew_pan
Родился
Сообщения: 4
Зарегистрирован: Чт сен 11, 2008 18:11:12

Сообщение andrew_pan »

Барсик писал(а):Все настройки таймера1 - в студию! В смысле, приведите строки из Вашей программы, относящиеся к настройкам таймера1.

Код в прилагаемом файле.
Если раскомментировать delay_ms(), то начинает работать.
Пробовал CVAVR 1.25.6 и еще 2.03free - результат одинаковый.
Вложения
Gen.c
(3.37 КБ) 642 скачивания
Аватара пользователя
Тихан
Потрогал лапой паяльник
Сообщения: 346
Зарегистрирован: Пн апр 14, 2008 19:57:20
Контактная информация:

Сообщение Тихан »

Вопросик есть: если например фьюз не за прогиный ещё ATMEL'ам,а
я сниму галку этого фьюза в CVAVR, то есть хочу его стереть(а он уже стёрт) и прошью , то небудет никакого глюка?а то я как то сомневаюсь...
Аватара пользователя
Паятель
Модератор
Сообщения: 3174
Зарегистрирован: Пт июл 21, 2006 03:08:05
Откуда: Пенза

Сообщение Паятель »

Не будет.
Если долго мучиться, что-нибудь... сломается.
Аватара пользователя
Тихан
Потрогал лапой паяльник
Сообщения: 346
Зарегистрирован: Пн апр 14, 2008 19:57:20
Контактная информация:

Сообщение Тихан »

Пасибо!!!
Аватара пользователя
Степаныч
Открыл глаза
Сообщения: 68
Зарегистрирован: Ср июн 20, 2007 18:46:54
Откуда: Красноярск
Контактная информация:

Сообщение Степаныч »

Добрый день!У меня не много глуповатый вопрос как CVAVR организовать переход к началу программы т.е. как в конце программы организовать безусловный переход к началу программы(или может лучше сказать организовать бесконечный цикл)? Например в асме насколько я помню прописывается RJMP (метка куда хочешь перейти) а как это сделать в CVAVR но только чтоб просто программа заработала сначала??
IN GOD WE TRUST
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Сообщение ARV »

бесконечный цикл в Си орагнизуется одинм из 4-х более-менее разумных способов:
1. в начале ставите метку, например m1:, а в конце делаете goto m1 - это вам и будет аналог rjmp

2. for( ; ; ){ операторы }
3. while(1) { операторы }
3. do { операторы } while (1);

операторы в фигурных скобках будут выполняться бесконечно
Последний раз редактировалось ARV Пн сен 15, 2008 17:17:11, всего редактировалось 1 раз.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
chuchxe
Родился
Сообщения: 8
Зарегистрирован: Вс сен 14, 2008 23:18:09

Сообщение chuchxe »

Степаныч писал(а):Добрый день!У меня не много глуповатый вопрос как CVAVR организовать переход к началу программы т.е. как в конце программы организовать безусловный переход к началу программы

Наверно так

Код: Выделить всё

metka:   начало программы

программа

goto metka;


и в хелпе почитайте: Non-local Jump Functions
Всем СПАТЬ !
Аватара пользователя
Степаныч
Открыл глаза
Сообщения: 68
Зарегистрирован: Ср июн 20, 2007 18:46:54
Откуда: Красноярск
Контактная информация:

Сообщение Степаныч »

Спасибо за подсказку goto мне очень помог! :)
KIP
Первый раз сказал Мяу!
Сообщения: 36
Зарегистрирован: Ср июл 09, 2008 11:48:16
Откуда: Обнинск

Сообщение KIP »

Вопрос к знатокам: каким образом реализует данный компилятор СИшную команду деления?
KIP
Первый раз сказал Мяу!
Сообщения: 36
Зарегистрирован: Ср июл 09, 2008 11:48:16
Откуда: Обнинск

Сообщение KIP »

Frensis писал(а):Если бы я знал как это сделать...


В симуляторе MVLAB просто кликнете курсором на эту переменную в коде, и появится табличка с адресом ячейки памяти и числом.
chuchxe
Родился
Сообщения: 8
Зарегистрирован: Вс сен 14, 2008 23:18:09

Сообщение chuchxe »

KIP писал(а):Вопрос к знатокам: каким образом реализует данный компилятор СИшную команду деления?

Позырьте в АСМ листинге после компиляции - файл .LST
Всем СПАТЬ !
KIP
Первый раз сказал Мяу!
Сообщения: 36
Зарегистрирован: Ср июл 09, 2008 11:48:16
Откуда: Обнинск

Сообщение KIP »

chuchxe писал(а):
KIP писал(а):Вопрос к знатокам: каким образом реализует данный компилятор СИшную команду деления?

Позырьте в АСМ листинге после компиляции - файл .LST


Посмотрю
А вопрос возник от сомнения, надо ли заменять деление смещением, или CVAVR сам сделает? Пока всё изучаю на теории и в симуляторах-там деление после компиляции проходит быстро.
Ответить

Вернуться в «AVR»