Страница 227 из 421

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

Добавлено: Чт ноя 08, 2012 13:58:38
hd44780
А мой проект у Вас компилится?

ЗЫ.

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

Скопируйте файлы проекта в нормальный каталог на винте (типа C:\CvAvrTest) и работайте.

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

Добавлено: Чт ноя 08, 2012 15:32:19
mixon46
ваш скомпилировался. и мой тоже. мне бы еще на этом языке научиться писать программы. мне вообще не понятно ничего))

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

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

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

Могу также Ваш или мой код разжевать, объяснить, что там к чему ...

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

Добавлено: Чт ноя 08, 2012 21:50:58
vitalik_1984
ну создал файл. потом появилась кнопочка компиляции. ну выдает ошибку. а вообще походу ничего не понимаю

Вы видимо открыли в архиваторе файл test.c потом архиватор закрыли, папка удалилась.
Создайте новый файл проекта, дайте ему осмысленное имя и сохраните в своей папке.
Когда создадите, скопируйте из файла entitled.c в этот файл.
Можно подключить и этот, конечно, но переименовать нужно.Нажмите сохранить как в меню"файл"
выберите куда и под каким именем.
Далее заходим Project -configure
там нажмите add и выберите свои файл.

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

Добавлено: Пт ноя 09, 2012 00:53:10
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] = date15[a];
}
}

просто массивов будет много и запись со строкой memcpy было бы удобнее всего...

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

Добавлено: Пт ноя 09, 2012 21:47:53
U235
Если данные, которые Вы хотите скопировать, находятся в памяти программ, используйте функцию memcpyf.

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

Добавлено: Ср ноя 28, 2012 12:42:46
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), и сама схема работает по неизвестным мне законам. Если одну из них исключить, то все работает. Не могу понять - в чем ошибка?

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

Добавлено: Ср ноя 28, 2012 16:45:39
BCluster
Какой компилятор? Вывод на экран тож покажите...

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

Добавлено: Чт ноя 29, 2012 07:20:12
Ckfdf
Вот весь проект с исходником и протеусом. Вывод time идет в ПП прерывания, коментариев нет( я как-то не очень дружу с ними). Извиняйте!

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

Добавлено: Чт ноя 29, 2012 07:52:07
U235
Делать вывод в дисплей в прерывании - плохая идея. Вот представьте, что программа в основном цикле выводит температуру - дергает управляющими сигналами дисплея, выставляет данные. И тут приходит прерывание, которое пытается сделать то же самое. И дисплей принимает винигрет.
В прерывании надо установить программный флаг, переменную которая будет показывать, что время обновилось. А в основном цикле проверять эту переменную. Если она установлена - вывести новое время и сбросить переменную.

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

Добавлено: Чт ноя 29, 2012 08:02:33
Ckfdf
Я пробовал! Но как только объявляю unsigned char *time, начинаются чудеса! В протеусе программа не хочет работать! Пришлось, пока, выводить время посимвольно!
Вообще я только начал атмелы изучать, до этого пики программировал.
И еще вопрос - для отладки программы нужен AVRStudio или что-нибудь другое подойдет! Проблема в том, что весит достаточно много, а я занимаюсь этим на работе, в свободное время! За большой трафик пятую точку порвать могут! :(

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

Добавлено: Чт ноя 29, 2012 09:35:39
Goodefine
Ckfdf писал(а): И еще вопрос - для отладки программы нужен AVRStudio или что-нибудь другое подойдет...
Отладчик в студии глючный и убогий. А что, в протеусе отлаживаться никак? Или не умеете просто?

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

Добавлено: Чт ноя 29, 2012 09:59:02
Ckfdf
Если честно, то просто не умею! :oops:
Да и забыл, что можно и там отлаживать. Попробую погонять. Спасибо за направление!

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

Добавлено: Чт ноя 29, 2012 11:39:36
Ckfdf
Большое спасибо Goodefine, разобрался с отладкой в протеусе, настроил таймер.
Но все равно с *text и *time проблема осталась(пока ее обошел, но разобраться хочется), при том поэксперементировал, и выяснил интересную вещь - если не проводить вычислений типа time[0]=(h/10)%10+48, то проблемы нет, но в этом случае выводится не время, а нули, а если произвести вычисления, то абра кадабра получается!

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

Добавлено: Чт ноя 29, 2012 11:59:51
andrey_artemov
Строка символов в массиве должна заканчиваться нулём.
Я думаю у тебя этот ноль забивается результатом вычисления. Нужно просто округлить до нужного количества разрядов...

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

Добавлено: Чт ноя 29, 2012 14:18:07
Ckfdf
Все решилось неожиданно, просто инициализацию *time провел на несколько строк ниже и все заработало. Думаю проблема была в том, что сперва надо было инициализировать переменные s,m,h.
Теперь другой вопрос - подскажите, есть ли команда для смены состояния порта при совпадении 2-х переменных, без опроса состояния порта?

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

Добавлено: Чт ноя 29, 2012 14:56:29
Goodefine
...есть ли команда для смены состояния порта при совпадении 2-х переменных, без опроса состояния порта?
А зачем читать порт чтоб изменить состояние? Делаете проверку на равенство, хоть на фазу луны и меняете

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

if(var1==var2) PORTD=0x36;

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

Добавлено: Чт ноя 29, 2012 15:00:26
ibiza11
Goodefine писал(а):А зачем читать порт чтоб изменить состояние?
Видимо имелось в виду изменение на противоположное значение.
Если AVR, то в некоторых моделях(смотреть в даташите) запись в порт PINx приводит к инверсии.

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

Добавлено: Чт ноя 29, 2012 15:01:52
Gudd-Head
ibiza11 писал(а):запись в порт PINx приводит к инверсии.
Запись лог. "1".

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

Добавлено: Чт ноя 29, 2012 16:28:12
Goodefine
ibiza11 писал(а): Если AVR, то в некоторых моделях(смотреть в даташите) запись в порт PINx приводит к инверсии.
И как это относится к вопросу:
есть ли команда для смены состояния порта при совпадении 2-х переменных, без опроса состояния порта?