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

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
hd44780
Встал на лапы
Сообщения: 132
Зарегистрирован: Вт июл 14, 2009 09:27:37
Откуда: Донецк, Украина

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

Сообщение hd44780 »

А мой проект у Вас компилится?

ЗЫ.

Судя по пути к файлу, он Вас то ли в каком-то временном файле, то ли в архиве ... Что за каталог Rar$... :shock: ?
Rar закрыли, каталог убился и всё.... А Вы оттуда ещё и компилить хотите.

Скопируйте файлы проекта в нормальный каталог на винте (типа C:\CvAvrTest) и работайте.
Аватара пользователя
mixon46
Говорящий с текстолитом
Сообщения: 1644
Зарегистрирован: Сб фев 18, 2012 15:42:29
Откуда: Курск

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

Сообщение mixon46 »

ваш скомпилировался. и мой тоже. мне бы еще на этом языке научиться писать программы. мне вообще не понятно ничего))
Аватара пользователя
hd44780
Встал на лапы
Сообщения: 132
Зарегистрирован: Вт июл 14, 2009 09:27:37
Откуда: Донецк, Украина

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

Сообщение hd44780 »

mixon46 писал(а):мне бы еще на этом языке научиться писать программы. мне вообще не понятно ничего))


Почитайте какую-нибудь простую книжку по C. c++ не нужен :)) . Под авр писать на С++ - крайне неэффективно - памяти мало и прочие сложности.
Читайте основы языка - синтаксис, операторы, управляющие структуры (if, for, while ...). Они всегда и везде одинаковые хоть для какого проца ...
Файловые операции (типа fopen, fread ..., их Керниган-Ритчи любят :) ) смело пропускайте. Нету их здеся. Их будете учить, когда доживёте до работы с разно-всякими SD картами. Пока Вам до этого далеко.

Можете у меня в личку спрашивать, дабы здесь не оффтопить. Подскажу, помогу.

Могу также Ваш или мой код разжевать, объяснить, что там к чему ...
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

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

Сообщение vitalik_1984 »

ну создал файл. потом появилась кнопочка компиляции. ну выдает ошибку. а вообще походу ничего не понимаю

Вы видимо открыли в архиваторе файл test.c потом архиватор закрыли, папка удалилась.
Создайте новый файл проекта, дайте ему осмысленное имя и сохраните в своей папке.
Когда создадите, скопируйте из файла entitled.c в этот файл.
Можно подключить и этот, конечно, но переименовать нужно.Нажмите сохранить как в меню"файл"
выберите куда и под каким именем.
Далее заходим Project -configure
там нажмите add и выберите свои файл.
palladin2010
Открыл глаза
Сообщения: 54
Зарегистрирован: Чт мар 11, 2010 00:31:44

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

Сообщение palladin2010 »

Приветствую коты!

Есть такая проблема:
имеется

flash unsigned char date15[5][5]={
{0b00100000,0b01111110,0b00111110,0b00111110,0b00111110},
{0b11100000,0b11111110,0b11111110,0b11111110,0b11111110},
{0b11100000,0b11111110,0b11111110,0b11111110,0b11111110},
{0b11100000,0b11111110,0b11111110,0b11111110,0b11111110},
{0b11100000,0b11111110,0b11111110,0b11111110,0b11111110}
};


unsigned char mass[5][5]={
{0b00000000,0b00000000,0b00000000,0b00000000,0b00000000},
{0b00000000,0b00000000,0b00000000,0b00000000,0b00000000},
{0b00000000,0b00000000,0b00000000,0b00000000,0b00000000},
{0b00000000,0b00000000,0b00000000,0b00000000,0b00000000},
{0b00000000,0b00000000,0b00000000,0b00000000,0b00000000}
};



выдаёт ошибку на операцию memcpy(mass, date15, sizeof(mass));
есть ли способ обойти эту проблему без написания алгоритма вида
for (a = 0; a<5; a++)
{
for (i = 0; i < 5; i++)
{
mass[a][i] = date15[a][i];
}
}

просто массивов будет много и запись со строкой memcpy было бы удобнее всего...
Аватара пользователя
U235
Встал на лапы
Сообщения: 135
Зарегистрирован: Вт фев 21, 2012 20:42:26
Откуда: Санкт-Петербург, Россия, Земля

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

Сообщение U235 »

Если данные, которые Вы хотите скопировать, находятся в памяти программ, используйте функцию memcpyf.
А из наших труб идет необычный дым. Стой! Опасная зона! Работа мозга!...
Аватара пользователя
Ckfdf
Первый раз сказал Мяу!
Сообщения: 26
Зарегистрирован: Ср ноя 28, 2012 07:09:50
Откуда: Казахстан, Алматы
Контактная информация:

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

Сообщение Ckfdf »

Приветствую! Пишу программку для терморегулятора на ATtyni2313, возникла проблема

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

int temper,temp;
unsigned char *text="000.0000";  //вывод температуры на диссплей
unsigned char *time="00:00:00";  //вывод на дисплей времени
unsigned char button;           //переменная для опроса кнопок
unsigned char s,m,h;            //переменная для формирования времени
signed char i,j;

При объявлении *text и *time одновременно компилится все нормально, никаких ошибок или предупреждений, но на дисплей выводится корректно только переменная объявленная первой(в данном случае text), и сама схема работает по неизвестным мне законам. Если одну из них исключить, то все работает. Не могу понять - в чем ошибка?
Аватара пользователя
BCluster
Собутыльник Кота
Сообщения: 2512
Зарегистрирован: Пн апр 06, 2009 19:33:29
Откуда: Молдова, Кишинев
Контактная информация:

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

Сообщение BCluster »

Какой компилятор? Вывод на экран тож покажите...
Аватара пользователя
Ckfdf
Первый раз сказал Мяу!
Сообщения: 26
Зарегистрирован: Ср ноя 28, 2012 07:09:50
Откуда: Казахстан, Алматы
Контактная информация:

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

Сообщение Ckfdf »

Вот весь проект с исходником и протеусом. Вывод time идет в ПП прерывания, коментариев нет( я как-то не очень дружу с ними). Извиняйте!
Вложения
Termoregulyator.rar
С исходником и протеусом
(120.19 КБ) 149 скачиваний
Аватара пользователя
U235
Встал на лапы
Сообщения: 135
Зарегистрирован: Вт фев 21, 2012 20:42:26
Откуда: Санкт-Петербург, Россия, Земля

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

Сообщение U235 »

Делать вывод в дисплей в прерывании - плохая идея. Вот представьте, что программа в основном цикле выводит температуру - дергает управляющими сигналами дисплея, выставляет данные. И тут приходит прерывание, которое пытается сделать то же самое. И дисплей принимает винигрет.
В прерывании надо установить программный флаг, переменную которая будет показывать, что время обновилось. А в основном цикле проверять эту переменную. Если она установлена - вывести новое время и сбросить переменную.
А из наших труб идет необычный дым. Стой! Опасная зона! Работа мозга!...
Аватара пользователя
Ckfdf
Первый раз сказал Мяу!
Сообщения: 26
Зарегистрирован: Ср ноя 28, 2012 07:09:50
Откуда: Казахстан, Алматы
Контактная информация:

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

Сообщение Ckfdf »

Я пробовал! Но как только объявляю unsigned char *time, начинаются чудеса! В протеусе программа не хочет работать! Пришлось, пока, выводить время посимвольно!
Вообще я только начал атмелы изучать, до этого пики программировал.
И еще вопрос - для отладки программы нужен AVRStudio или что-нибудь другое подойдет! Проблема в том, что весит достаточно много, а я занимаюсь этим на работе, в свободное время! За большой трафик пятую точку порвать могут! :(
Аватара пользователя
Goodefine
Держит паяльник хвостом
Сообщения: 906
Зарегистрирован: Ср апр 16, 2008 13:22:54
Откуда: Приднестровье, Тирасполь

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

Сообщение Goodefine »

Ckfdf писал(а):И еще вопрос - для отладки программы нужен AVRStudio или что-нибудь другое подойдет...

Отладчик в студии глючный и убогий. А что, в протеусе отлаживаться никак? Или не умеете просто?
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Аватара пользователя
Ckfdf
Первый раз сказал Мяу!
Сообщения: 26
Зарегистрирован: Ср ноя 28, 2012 07:09:50
Откуда: Казахстан, Алматы
Контактная информация:

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

Сообщение Ckfdf »

Если честно, то просто не умею! :oops:
Да и забыл, что можно и там отлаживать. Попробую погонять. Спасибо за направление!
Аватара пользователя
Ckfdf
Первый раз сказал Мяу!
Сообщения: 26
Зарегистрирован: Ср ноя 28, 2012 07:09:50
Откуда: Казахстан, Алматы
Контактная информация:

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

Сообщение Ckfdf »

Большое спасибо Goodefine, разобрался с отладкой в протеусе, настроил таймер.
Но все равно с *text и *time проблема осталась(пока ее обошел, но разобраться хочется), при том поэксперементировал, и выяснил интересную вещь - если не проводить вычислений типа time[0]=(h/10)%10+48, то проблемы нет, но в этом случае выводится не время, а нули, а если произвести вычисления, то абра кадабра получается!
Аватара пользователя
andrey_artemov
Встал на лапы
Сообщения: 136
Зарегистрирован: Сб авг 15, 2009 21:26:50
Откуда: Пенза
Контактная информация:

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

Сообщение andrey_artemov »

Строка символов в массиве должна заканчиваться нулём.
Я думаю у тебя этот ноль забивается результатом вычисления. Нужно просто округлить до нужного количества разрядов...
Аватара пользователя
Ckfdf
Первый раз сказал Мяу!
Сообщения: 26
Зарегистрирован: Ср ноя 28, 2012 07:09:50
Откуда: Казахстан, Алматы
Контактная информация:

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

Сообщение Ckfdf »

Все решилось неожиданно, просто инициализацию *time провел на несколько строк ниже и все заработало. Думаю проблема была в том, что сперва надо было инициализировать переменные s,m,h.
Теперь другой вопрос - подскажите, есть ли команда для смены состояния порта при совпадении 2-х переменных, без опроса состояния порта?
Аватара пользователя
Goodefine
Держит паяльник хвостом
Сообщения: 906
Зарегистрирован: Ср апр 16, 2008 13:22:54
Откуда: Приднестровье, Тирасполь

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

Сообщение Goodefine »

...есть ли команда для смены состояния порта при совпадении 2-х переменных, без опроса состояния порта?

А зачем читать порт чтоб изменить состояние? Делаете проверку на равенство, хоть на фазу луны и меняете

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

if(var1==var2) PORTD=0x36;
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Аватара пользователя
ibiza11
Поставщик валерьянки для Кота
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

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

Сообщение ibiza11 »

Goodefine писал(а):А зачем читать порт чтоб изменить состояние?
Видимо имелось в виду изменение на противоположное значение.
Если AVR, то в некоторых моделях(смотреть в даташите) запись в порт PINx приводит к инверсии.
Ставим плюсы: )
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

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

Сообщение Gudd-Head »

ibiza11 писал(а):запись в порт PINx приводит к инверсии.

Запись лог. "1".
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
Goodefine
Держит паяльник хвостом
Сообщения: 906
Зарегистрирован: Ср апр 16, 2008 13:22:54
Откуда: Приднестровье, Тирасполь

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

Сообщение Goodefine »

ibiza11 писал(а):Если AVR, то в некоторых моделях(смотреть в даташите) запись в порт PINx приводит к инверсии.

И как это относится к вопросу:
есть ли команда для смены состояния порта при совпадении 2-х переменных, без опроса состояния порта?
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Ответить

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