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

Добавлено: Вт дек 18, 2007 21:26:08
john_rise
Если переменная применяется хотя бы в одном месте, то компилятор не имеет права её убирать. Ищите причину дальше.

Добавлено: Вт дек 18, 2007 21:48:17
MetEl
john_rise писал(а):Если переменная применяется хотя бы в одном месте, то компилятор не имеет права её убирать. Ищите причину дальше.
Предположения кончились!
Ума не приложу...

Добавлено: Вт дек 18, 2007 22:09:35
lexmulya
john_rise писал(а):Если переменная применяется хотя бы в одном месте, то компилятор не имеет права её убирать. Ищите причину дальше.
Это не так! глюков а cvavr хватает, да даже тот же IAR выкидывает следующий код
for(i=0; i<1000; i++){};
так как он считает что этот код "не полезен"

Добавлено: Вт дек 18, 2007 22:24:18
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.

???

Добавлено: Ср дек 19, 2007 01:02:09
MetEl
Объявил внутри обработчика свои переменные.
Присваиваю глобальным полученные значения, выхожу из обработчика.
И нифига, не присваивается... они сами по себе у себя в обработчике.

Добавлено: Ср дек 19, 2007 08:22:45
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 не разу не вызвал нареканий по работе, а работу с ним достаточно долго уже. И реализованные с его помощью проекты работаю "как часы".

Добавлено: Ср дек 19, 2007 09:10:12
tych
lexmulya писал(а): IAR выкидывает следующий код
for(i=0; i<1000; i++){};
так как он считает что этот код "не полезен"
Есть "прагмы" всякие - типа "но оптимизейшн" и в CVAVR

и есть модификатор volatile - стр 5 часть 2 "Си для МК" под кнопкой Изображение

Добавлено: Ср дек 19, 2007 09:38:55
MetEl
mr.Kirill писал(а): Скорее в основном ваши глюки, а не CVAVR

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

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

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

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

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

Добавлено: Ср дек 19, 2007 10:58:16
mr.Kirill
MetEl писал(а): 1. нигде.
2. Какого рожна он в ифе делает какието операции, ведь это написано в условии. А он выполняет операцию и сбивает мне переменныю! Вот в чём вопрос!
3. Ну как это не вносилось! Канешно заносилось!
4. Молчать тоже нельзя. Вот я и спрашиваю что сделать или на что обратить внимание. А не читать и учить мне это нахер не нада!
2. Это вопрос к создателям "языка С" :) Если ты не в курсе, то есть такое понятие "комбинированное условие"...
В if может сначала выполниться какое-то действие, а потом пройти проверка, и все это будет в зависимости от приоритета операций.
3. Просто так оно разумеется не могло пропасть, логично что, где-то что-то не так.
4. Если ты ни читать, ни учить ничего не собираешься тогда о чем вообще с тобой разговаривать?
Может функции, поцедуры, прагмы всякие не так обозваны, ретурн какойнить не написал, ещё чегото...
Это уже к вопросу о невнимательности твоей.

Добавлено: Ср дек 19, 2007 11:11:19
MetEl
В if может сначала выполниться какое-то действие...
Это здорова!
Это вопрос к создателям "языка С"
Да уж.. надо знать кого любить!
логично что, где-то что-то не так.
Пришлось выдумывать.
4. Если ты ни читать, ни учить ничего не собираешься тогда о чем вообще с тобой разговаривать? Цитата:
Может функции, поцедуры, прагмы всякие не так обозваны, ретурн какойнить не написал, ещё чегото...

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

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

Добавлено: Ср дек 19, 2007 11:48:17
lexmulya
Может время не хватает обработчику...Может время не хватает обработчику...
А это легко проверить, в начале прерывания ставь глобальный запрет прерываний, в конце снимай...

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

***!

Добавлено: Ср дек 19, 2007 18:57:29
tych
MetEl писал(а):Может чё почитать посоветуете...
http://www.radiokot.ru/forum/viewtopic. ... 7893#77893

Добавлено: Ср дек 19, 2007 19:45:58
MetEl
Это вы про кнопку с домиком? Не нажимается.
Я имел ввиду про компилятор, его алгоритмы построения.

Добавлено: Ср дек 19, 2007 19:51:43
tych
А ниже нажимается.

Добавлено: Ср дек 19, 2007 20:02:33
MetEl
Нажимается!
А я бы, вот так написал, тогда - "ссылка под кнопкой Д, см ниже"
:-P

Млин, 1024 раза уже говорили: ну вот на кой, скажите, полностью цитировать предыдущее сообщение, если вы на него отвечаете? Все исправил. В следующий раз просто удалять буду. :evil: Aheir
P.S. Есть вопросы - прошу в личку

Добавлено: Ср янв 30, 2008 19:09:51
Denis-d20
У меня вопрос Как переделать прогу сгенерированную CodeVisionAVR с датчика DS1820 под DS18B20 чего надо поменять?

Добавлено: Ср янв 30, 2008 22:58:14
Krik99
Библиотеку надо соответсвующую поставить, да и при минусе надо от считанного надо отнять 4096. Да и спрашивать его надо так
in=ds18b20_temperature(0);
Вот я с ними наигрался, вот щя думаю даже статью про работу с этими датчиками написать. 8)

Добавлено: Чт янв 31, 2008 12:23:54
Denis-d20
Да в принципе я все переделал и понял что кчему. Щас проблема отобразить температуру на ЖКИ дело в том, что толи дисплей толи контроллер не понимает float ,и когда значение температуры втаком виде то на дисплее какая-то жуть. Если же беру другой тип переменной все нормально но не отображает десятых.

Добавлено: Чт янв 31, 2008 13:12:14
Denis-d20
Отбой сдесятыми уже разобрался решение оказалось проще не бывает:
float temp;
long temp2;
{
temp=ds18b20_temperature(&rom_codes[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 сажаю все нормально Где могла собака порыться?