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

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
john_rise
Встал на лапы
Сообщения: 136
Зарегистрирован: Пн дек 17, 2007 13:15:43

Сообщение john_rise »

Если переменная применяется хотя бы в одном месте, то компилятор не имеет права её убирать. Ищите причину дальше.
Боишся - не делай. Делаешь - не бойся.
MetEl
Вымогатель припоя
Сообщения: 543
Зарегистрирован: Чт окт 18, 2007 16:45:30
Откуда: из Питера

Сообщение MetEl »

john_rise писал(а):Если переменная применяется хотя бы в одном месте, то компилятор не имеет права её убирать. Ищите причину дальше.

Предположения кончились!
Ума не приложу...
lexmulya
Встал на лапы
Сообщения: 124
Зарегистрирован: Ср авг 29, 2007 10:42:31
Контактная информация:

Сообщение lexmulya »

john_rise писал(а):Если переменная применяется хотя бы в одном месте, то компилятор не имеет права её убирать. Ищите причину дальше.

Это не так! глюков а cvavr хватает, да даже тот же IAR выкидывает следующий код
for(i=0; i<1000; i++){};
так как он считает что этот код "не полезен"
MetEl
Вымогатель припоя
Сообщения: 543
Зарегистрирован: Чт окт 18, 2007 16:45:30
Откуда: из Питера

Сообщение MetEl »

Мои глюки.
C СVAVR.

1)
переменную более 4 символов принял за(похожую) функтцию и спросил а где () ?
2)
Гдето было прописано if(a=b){ля-ля }, так он просто приравнивал а к b и далее у меня был тупейший моразм(с этими переменными)!!! ***!
3) if (a>b>c) не работало, написал так if (a>b){if b>c{};};. Хотя конечно if((а>b)&&(b>c)) нормально работает.
4) Если я а=qwe[1]; то потом в qwe[1] ничего.
Приходится const char(допустим) qwe[]; , а уж потом с ним работать.

И вообще, кокда как. Не стого ни ссего меняется объём хек. файла...

По моему вопросу, просто не понятно какие у него завязки-развязки, что он работает с переменными(которые в обработчике прервываний) только тогда, когда их выводишь на экран...
Как это взаимосвясано!? Почему они сами в обработчике не работают, и обнуляются когда я посмотрел и выхожу из этой функции.
Переменные глобальные.

МК атмега128.

CV AVR 1.25.7 beta 5 standart.

???
MetEl
Вымогатель припоя
Сообщения: 543
Зарегистрирован: Чт окт 18, 2007 16:45:30
Откуда: из Питера

Сообщение MetEl »

Объявил внутри обработчика свои переменные.
Присваиваю глобальным полученные значения, выхожу из обработчика.
И нифига, не присваивается... они сами по себе у себя в обработчике.
Аватара пользователя
mr.Kirill
Мучитель микросхем
Сообщения: 438
Зарегистрирован: Вт сен 25, 2007 19:40:26
Откуда: Челябинск

Сообщение mr.Kirill »

MetEl писал(а):Мои глюки.
C СVAVR.

Скорее в основном ваши глюки, а не CVAVR
1)
переменную более 4 символов принял за(похожую) функтцию и спросил а где () ?

Где Вас учили называть переменные так же как и функции?
2)
Гдето было прописано if(a=b){ля-ля }, так он просто приравнивал а к b и далее у меня был тупейший моразм(с этими переменными)!!! ***!

По синтаксису С должно было быть написано if (a==b), а так разумеется он их приравнял, так что учите синтаксис ;)
3) if (a>b>c) не работало, написал так if (a>b){if b>c{};};. Хотя конечно if((а>b)&&(b>c)) нормально работает.

Опять же - синтаксис! Нет универсального, каждый компилятор по своему такие моменты воспринимает или не воспринимает.
Но все таки с точки зрения программирования, читабельности и восприятия запись if((а>b)&&(b>c)) более правильная.
4) Если я а=qwe[1]; то потом в qwe[1] ничего.
Приходится const char(допустим) qwe[]; , а уж потом с ним работать.

Возможно имелось ввиду qwe[1]=a? А так как у Вас написано конечно ничего не будет в qwe[1], если до этого туда ничего не вносилось
И вообще, кокда как. Не стого ни ссего меняется объём хек. файла...

По моему вопросу, просто не понятно какие у него завязки-развязки, что он работает с переменными(которые в обработчике прервываний) только тогда, когда их выводишь на экран...
Как это взаимосвясано!? Почему они сами в обработчике не работают, и обнуляются когда я посмотрел и выхожу из этой функции.
Переменные глобальные.

МК атмега128.

CV AVR 1.25.7 beta 5 standart.

???

И вообще прежде чем грешить на CVAVR, как в общем и на любой другой софт - проверьте себя! Не думаю что Вы настолько крутые программеры, что пишете совершенно без ошибок и во всех бедах виновен софт.
Лично у меня CVAVR не разу не вызвал нареканий по работе, а работу с ним достаточно долго уже. И реализованные с его помощью проекты работаю "как часы".
Аватара пользователя
tych
Э...
Сообщения: 2792
Зарегистрирован: Ср апр 04, 2007 08:39:14
Откуда: Москва
Контактная информация:

Сообщение tych »

lexmulya писал(а): IAR выкидывает следующий код
for(i=0; i<1000; i++){};
так как он считает что этот код "не полезен"


Есть "прагмы" всякие - типа "но оптимизейшн" и в CVAVR

и есть модификатор volatile - стр 5 часть 2 "Си для МК" под кнопкой Изображение
Последний раз редактировалось tych Ср дек 19, 2007 18:55:53, всего редактировалось 1 раз.
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
MetEl
Вымогатель припоя
Сообщения: 543
Зарегистрирован: Чт окт 18, 2007 16:45:30
Откуда: из Питера

Сообщение MetEl »

mr.Kirill писал(а):Скорее в основном ваши глюки, а не CVAVR

1)
Где Вас учили называть переменные так же как и функции?

2)
По синтаксису С должно было быть написано if (a==b), а так разумеется он их приравнял, так что учите синтаксис ;)

3)
Возможно имелось ввиду qwe[1]=a? А так как у Вас написано конечно ничего не будет в qwe[1], если до этого туда ничего не вносилось!

И вообще прежде чем грешить на CVAVR, как в общем и на любой другой софт - проверьте себя! Не думаю что Вы настолько крутые программеры, что пишете совершенно без ошибок и во всех бедах виновен софт.
Лично у меня CVAVR не разу не вызвал нареканий по работе, а работу с ним достаточно долго уже. И реализованные с его помощью проекты работаю "как часы".


1. нигде.
2. Какого рожна он в ифе делает какието операции, ведь это написано в условии. А он выполняет операцию и сбивает мне переменныю! Вот в чём вопрос!
3. Ну как это не вносилось! Канешно заносилось!
4. Молчать тоже нельзя. Вот я и спрашиваю что сделать или на что обратить внимание. А не читать и учить мне это нахер не нада!

Может функции, поцедуры, прагмы всякие не так обозваны, ретурн какойнить не написал, ещё чегото...
Аватара пользователя
mr.Kirill
Мучитель микросхем
Сообщения: 438
Зарегистрирован: Вт сен 25, 2007 19:40:26
Откуда: Челябинск

Сообщение mr.Kirill »

MetEl писал(а):1. нигде.
2. Какого рожна он в ифе делает какието операции, ведь это написано в условии. А он выполняет операцию и сбивает мне переменныю! Вот в чём вопрос!
3. Ну как это не вносилось! Канешно заносилось!
4. Молчать тоже нельзя. Вот я и спрашиваю что сделать или на что обратить внимание. А не читать и учить мне это нахер не нада!

2. Это вопрос к создателям "языка С" :) Если ты не в курсе, то есть такое понятие "комбинированное условие"...
В if может сначала выполниться какое-то действие, а потом пройти проверка, и все это будет в зависимости от приоритета операций.
3. Просто так оно разумеется не могло пропасть, логично что, где-то что-то не так.
4. Если ты ни читать, ни учить ничего не собираешься тогда о чем вообще с тобой разговаривать?
Может функции, поцедуры, прагмы всякие не так обозваны, ретурн какойнить не написал, ещё чегото...
Это уже к вопросу о невнимательности твоей.
MetEl
Вымогатель припоя
Сообщения: 543
Зарегистрирован: Чт окт 18, 2007 16:45:30
Откуда: из Питера

Сообщение MetEl »

В if может сначала выполниться какое-то действие...

Это здорова!
Это вопрос к создателям "языка С"

Да уж.. надо знать кого любить!
логично что, где-то что-то не так.

Пришлось выдумывать.
4. Если ты ни читать, ни учить ничего не собираешься тогда о чем вообще с тобой разговаривать? Цитата:
Может функции, поцедуры, прагмы всякие не так обозваны, ретурн какойнить не написал, ещё чегото...

Это уже к вопросу о невнимательности твоей.


Не надо со мной разговаривать. Вы советы давайте, а я посмотрю.
Невнимательность? Былобы что читать!

Может время не хватает обработчику...
lexmulya
Встал на лапы
Сообщения: 124
Зарегистрирован: Ср авг 29, 2007 10:42:31
Контактная информация:

Сообщение lexmulya »

Может время не хватает обработчику...Может время не хватает обработчику...

А это легко проверить, в начале прерывания ставь глобальный запрет прерываний, в конце снимай...
MetEl
Вымогатель припоя
Сообщения: 543
Зарегистрирован: Чт окт 18, 2007 16:45:30
Откуда: из Питера

Сообщение MetEl »

обявил в обработчике свои переменные но тип static ( консервируется поле выхода из процедуры).
К примеру static int q;
Потом присваиваю её значение глобальной переменной и выхожу из обработчика.
Странно то! Что два прерывания и два таймера работали и всё нормально, а как решил добавить ещё переменных так началось вот это. Теперь добавил третий таймер и внём только статик. И вот так как в анегдоте... работает и ладно?!
Может чё почитать посоветуетте...

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

Сообщение tych »

MetEl писал(а):Может чё почитать посоветуете...


http://www.radiokot.ru/forum/viewtopic. ... 7893#77893
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
MetEl
Вымогатель припоя
Сообщения: 543
Зарегистрирован: Чт окт 18, 2007 16:45:30
Откуда: из Питера

Сообщение MetEl »

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

Сообщение tych »

А ниже нажимается.
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
MetEl
Вымогатель припоя
Сообщения: 543
Зарегистрирован: Чт окт 18, 2007 16:45:30
Откуда: из Питера

Сообщение MetEl »

Нажимается!
А я бы, вот так написал, тогда - "ссылка под кнопкой Д, см ниже"
:-P

Млин, 1024 раза уже говорили: ну вот на кой, скажите, полностью цитировать предыдущее сообщение, если вы на него отвечаете? Все исправил. В следующий раз просто удалять буду. :evil: Aheir
P.S. Есть вопросы - прошу в личку
Вложения
старый-чайник.jpg
(30.84 КБ) 795 скачиваний
Аватара пользователя
Denis-d20
Открыл глаза
Сообщения: 52
Зарегистрирован: Сб ноя 24, 2007 10:06:53
Откуда: Украина,хмельницкий
Контактная информация:

Сообщение Denis-d20 »

У меня вопрос Как переделать прогу сгенерированную CodeVisionAVR с датчика DS1820 под DS18B20 чего надо поменять?
Аватара пользователя
Krik99
Потрогал лапой паяльник
Сообщения: 375
Зарегистрирован: Вс мар 04, 2007 13:14:25
Откуда: Украина
Контактная информация:

Сообщение Krik99 »

Библиотеку надо соответсвующую поставить, да и при минусе надо от считанного надо отнять 4096. Да и спрашивать его надо так
in=ds18b20_temperature(0);
Вот я с ними наигрался, вот щя думаю даже статью про работу с этими датчиками написать. 8)
Изображение
Аватара пользователя
Denis-d20
Открыл глаза
Сообщения: 52
Зарегистрирован: Сб ноя 24, 2007 10:06:53
Откуда: Украина,хмельницкий
Контактная информация:

Сообщение Denis-d20 »

Да в принципе я все переделал и понял что кчему. Щас проблема отобразить температуру на ЖКИ дело в том, что толи дисплей толи контроллер не понимает float ,и когда значение температуры втаком виде то на дисплее какая-то жуть. Если же беру другой тип переменной все нормально но не отображает десятых.
Аватара пользователя
Denis-d20
Открыл глаза
Сообщения: 52
Зарегистрирован: Сб ноя 24, 2007 10:06:53
Откуда: Украина,хмельницкий
Контактная информация:

Сообщение Denis-d20 »

Отбой сдесятыми уже разобрался решение оказалось проще не бывает:
float temp;
long temp2;
{
temp=ds18b20_temperature(&rom_codes[i][0]);
temp2=temp*10;
sprintf(lcd_buffer2,"t%u=%d.%i\xdfC",j++,(temp2-(temp2%10))/10,temp2%10);
lcd_clear();
lcd_puts(lcd_buffer2);
delay_ms(500);
:idea:
Но нашел другую Ж... Было подключено 3 датчика, при отключении 2х из них контроллер виснет и вообще ничего не показывает если обратно все 3 сажаю все нормально Где могла собака порыться?
Ответить

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