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

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

aam писал(а):В соответствии с правилами Си глобальные переменные инициализируются нулями, а локальные ничем не инициализируются и содержат "мусор". Я ХЗ как там CodeVision, но кодить надо по правилам Си.

если уж быть совсем точным, то локальные статические переменные так же инициализируются нулями, а вот автоматические - нет. естественно, это относится к тем переменным, которые не инициализируются явно при объявлении.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
O-LED
Мудрый кот
Сообщения: 1800
Зарегистрирован: Вт окт 05, 2010 01:08:57
Контактная информация:

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

Сообщение O-LED »

так я не против инициализировать, просто я этого не знал, и никаких инициализаций не делал, считая что объявленная ЛЮБАЯ переменная равна нулю. и никогда(хоть опыт у меня мизерный, но уже успел кое чего покодить) у меня проблем не возникало.
Общем на всякий случай буду инициализировать локальные переменные.

зы. Так почему у меня не было проблем?????????????
KIT
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

O-LED писал(а):зы. Так почему у меня не было проблем?????????????
неинициализированная переменная вовсе не так опасна. например, если вы объявили переменные, а затем в программе присвоили им ккое-то значение - ну и что страшного в том, что до этого момента они содержали мусор? проблема появляется тогда, когда переменная ИСПОЛЬЗУЕТСЯ сразу, еще ДО получения какого-то значения.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
odesasha
Прорезались зубы
Сообщения: 237
Зарегистрирован: Пт фев 12, 2010 14:02:22
Откуда: Одесса

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

Сообщение odesasha »

В настройках компилятора есть опция : Clear Global Variables at Startup .
И только, если поставить там галочку происходит обнуление переменных , Тупо заносятся 0=ли по адресам переменных командами ассма . Это жрет код
и делать почти всегда не надо .
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

odesasha писал(а):В настройках компилятора есть опция : Clear Global Variables at Startup .
И только, если поставить там галочку происходит обнуление переменных , Тупо заносятся 0=ли по адресам переменных командами ассма . Это жрет код
и делать почти всегда не надо .

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

Мой уютный бложик... заходите!
Аватара пользователя
odesasha
Прорезались зубы
Сообщения: 237
Зарегистрирован: Пт фев 12, 2010 14:02:22
Откуда: Одесса

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

Сообщение odesasha »

Если следовать стандарту , то счетчики вызова ф-ции надо делать static , но если делать их как глобальные , то hex уменьшается значительно , на кой
мне стандарт , если это СИ CVAVR , а не объектный СИ++ , где классы , ДЛЛ и т.п. И что есть стандарт для 1-кслов пвмяти , не то ли лучше , что дает более компактный код после билда . Это же контроллеры , для пульта , часов, стабилизатора и т.п. Для М128 , еще до какой-то степени можно плевать на размер НЕХ ,
но для тини и м48 думаю это глупо .
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

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

Мой уютный бложик... заходите!
Аватара пользователя
odesasha
Прорезались зубы
Сообщения: 237
Зарегистрирован: Пт фев 12, 2010 14:02:22
Откуда: Одесса

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

Сообщение odesasha »

Мне кажеися , есть смысл разделить задачи и , как следствие , подход к их решению . Если надо поместить проект в малую память , то тут не стоит думать
о какой -либо красоте , а идти на уловки для выполнения задачи и сделать изделие , с кем эта прошивкаи будет жить . Кого волнует на чем вы писали - на АСМ
или на СИ -надо сделать как просили функционально и как вы делали никто не спросит и читать исходник не будет .
Если же , это программный продукт для публикации в качестве наглядно -учебного - тут другое дело и вы правы на все 100% .
О CVAVR :
Надо поставить памятник разработчикам , за такое удобное контроллерно - ориентированное ПО.
Спорить о стандартах а-ля Страуструп глупо - в CV применен лишь синтаксис от СИ - классический Си с его объектностью , модульностью и т.п. здесь в полной
мере не может быть уместен из-за ограниченности ресурсов как по скорости так и по НЕХ .
По мере перехода проектов на чипы уровня М32 и выше , Вам никто не мешает делать модули и объекты по классик принципу - но уверен : при всего 16 Мгц столкнемся с потерей быстродействия , и придем все равно к некрасивому , как по СИ коду.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

odesasha, вы глубоко не правы - это мое твердое мнение!
классический Си не содержит никаких объектных подходов, но это пустяки. я делаю проекты для тини13 на Си с соблюдением (во всяком случае - со старанием соблюсти) все нормы и правила языка - и вы знаете, отлично выходит, не смотря на 1К памяти под код! при этом я использую иногда и несколько файлов-модулей, и все при этом отлично влезает в этот мелкий МК.

на счет "никто исходник читать не будет" - это типичный гастарбайтерский подход: "моя построила и уехала, а русский болвана пусть живет тут". как правило, гастарбайтерский "евроремонт" кончается через месяц после его завершения - то тут отвалится, то там лопнет... так и в тяп-ляпном коде: когда вылезет очередной глюк, вы сами откроете свой исходник и станете ковыряться в нем... и тогда наверняка пожалеете, что он написан через "странное отверстьице"...

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

Мой уютный бложик... заходите!
Аватара пользователя
odesasha
Прорезались зубы
Сообщения: 237
Зарегистрирован: Пт фев 12, 2010 14:02:22
Откуда: Одесса

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

Сообщение odesasha »

А что Вы сделаете , если Вам не хватит , к примеру , 0.5% Flash ?

И еще. Писать "некрасиво" - это что ? Не обнулять без нужды переменные при старте , не применять просто так Static , а добавить глобал.счетчик
как выяснилось не писать объявления типа под одним загословком для экономии кода HEX ( Фичи CVAVR ).
Для 1к тяп-ляп не успеет показаться , особенно , если программист один на весь поселок ( это не Киев ) и фирма запрещает общение для сохранения коммерческой
тайны.
Сильно Майкрософт обсуждает по миру свои коды ? Как и все другие .
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

некрасиво - это значит писать программы:
- без четко видимой структуры
- с нарушением общепринятых правил
- с расчетом на "подразумеваемые" фичи и тонкости какого-то конкретного компилятора
- с бесчисленными глобальными/локальными переменными без необходимости
- без разделения на модули
- в вынесением в хидеры определения переменных, функций и т.п. вещей
- с переменными типа f, e, m1 и т.п. вне операторов цикла
- с многочисленными goto или даже с применением к месту и не к месту longjmp
- с бесконечными принудительными приведениями типов с целью "чтоб работало"
- с мыслью в голове "это никто не увидит"...

много чего можно еще сказать - тут уже все на гране личной религии... но вот что однозначно, так это утверждение, что соблюдение стандартов еще никому не мешало - так это факт.

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

кстати, на счет исходников от майкрософта. они время от времени дают примеры кода для своих систем - вы на них посмотрите, как они оформляются... любую работу надо делать так, как для музея, чтобы не было стыдно даже перед самим сабой!

но я никого не принуждаю - упаси бог! спасение утопающих - дело рук самих утопающих. хотите погружаться в болото беспредела в коде - ваше право.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
odesasha
Прорезались зубы
Сообщения: 237
Зарегистрирован: Пт фев 12, 2010 14:02:22
Откуда: Одесса

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

Сообщение odesasha »

Так что Вы , все-таки сделаете , если Вам не хватит , к примеру , 0.5% Flash ?
Не вспомните ли фичи , но оговорите это , для просмотра другими ?
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

odesasha писал(а):Так что Вы , все-таки сделаете , если Вам не хватит , к примеру , 0.5% Flash ?
Не вспомните ли фичи , но оговорите это , для просмотра другими ?
случаи бывают всякие.
иной раз приходится применять именно фичи, и оговаривать это - факт. однако, сам код при этом я стараюсь делать МАКСИМАЛЬНО СВОБОДНЫМ от фич - использую только то, что принято. я пользуюсь WinAVR и юзаю некоторые их возможности. боюсь, что в плане фич не сущестует двух 100% совместимых компиляторов, но тем не менее 99,99% кода я пишу не в расчете на фичи, а в расчете на стандартные возможности.

отказ от обнуления статических локальных и глобальных переменных - это отсутупление от стандарта. в некоторых случаях приходится с этим бороться именно при помощи фич, например, когда надо после сброса по WDT сохранить содержимое некоторых глобальных переменных прежними... но обратите внимание: это не норма, это - исключение! исключения только подтверждают правила.

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

Мой уютный бложик... заходите!
Аватара пользователя
odesasha
Прорезались зубы
Сообщения: 237
Зарегистрирован: Пт фев 12, 2010 14:02:22
Откуда: Одесса

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

Сообщение odesasha »

ARV писал(а):- с расчетом на "подразумеваемые" фичи и тонкости какого-то конкретного компилятора

О каких еще других , кроме win avr и СVavr идет речь ,форум по СVavr и только о нем . Я думаю , что к появлению достойной
альтернативы проекты на 1-8 к-словных процах вряд-ли кому-то будут еще нужны ( как сейчас С51 или 52 ).
Обычная задача , имея изделие , со всеми запасами корпусов ,платами , комплектующими доработать в плане расширения возможностей функционал , при этом никто
не будет заново закупать , заказывать все . Чип уже стоит , надо поменять прошивку ( точнее написать заново , но сделать ее лучше - нет ни исх . и другого чего - только
привязка к заранее купленным печаткам ( схеме ) .
Типичная задача по обновлению прошивки , только с нуля - не к чему добавлять .
Вот об этом я и пишу . Работа - это не учеба , а жизнь и она вносит свои коррективы в желаемое.

Для инфы : версия V2.04.4а делает на 0.5-1 % меньше хек чем V2 .0.3 ( с другими не сравнивал , думаю , что еще хуже ) .
Аватара пользователя
odesasha
Прорезались зубы
Сообщения: 237
Зарегистрирован: Пт фев 12, 2010 14:02:22
Откуда: Одесса

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

Сообщение odesasha »

ARV писал(а):
на месте шефа вашей фирмы я бы просто смотрел в результат работы программиста, и, если бы он мне не понравился чисто внешне (даже без вникания в суть)


Поэтому , мы с Вами и не шефы , (как мне показалось , глядя на время нахождения в форуме - шефу обычно некогда )
Нормальному ШЕФУ надо результат . Он не лезет в тонкости - для этого есть подчиненные .Его задача все организовать и добиться выхода под производство .
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

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

Мой уютный бложик... заходите!
Аватара пользователя
odesasha
Прорезались зубы
Сообщения: 237
Зарегистрирован: Пт фев 12, 2010 14:02:22
Откуда: Одесса

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

Сообщение odesasha »

Если на СИ не выходит ( что редко ) - пихаем проект ASMатику . Единственное - до фига уходит времени на писанину и там уже помочь друг другу нечем .
Аватара пользователя
demonchik
Встал на лапы
Сообщения: 94
Зарегистрирован: Вт апр 07, 2009 13:39:13
Откуда: одесса
Контактная информация:

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

Сообщение demonchik »

хлопцы! как бороться с CVAVR?
создаю массив функций

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

void function_1(int a);
void function_2(int b);

void(*MENU[2])(int) = {func_1, func_2};


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

void func_1(int a)
{
printf ("Kode= %d \n\r",a);
}

void func_2(int b)
{
printf ("Kode= %d \n\r",b);
}

потом вызываю где нужно

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

int choice=1, number=21;
(*MENU[choice])(number);

в этом случае все работает. данные шлются в USART. но только пытаюсь в func_1 и func_2 сделать вывод на LCD nokia 3310 ничего не выводит. Может проблема в том, что внутренние функции в func_1 и func_2 не могут передавать значения? и поэтому то ничего и не выводится... печально как то...
помогите, пожалуйста.
радиоэлектроника - жизнь моя...
Аватара пользователя
odesasha
Прорезались зубы
Сообщения: 237
Зарегистрирован: Пт фев 12, 2010 14:02:22
Откуда: Одесса

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

Сообщение odesasha »

А где в этом примере видно сам индикатор от 3310. Я так понял , что он тина i2c , или что иное?
Если я не ошибаюсь , эти ф-ции ( printf ) только для аппаратного UART в составе контроллера , и как сюда попал LCD 3310 не совсем из Вашего текста понятно .
Аватара пользователя
demonchik
Встал на лапы
Сообщения: 94
Зарегистрирован: Вт апр 07, 2009 13:39:13
Откуда: одесса
Контактная информация:

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

Сообщение demonchik »

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

то есть подпрограммы по указателю не работают с вызовом, допустим, печатания строки на дисплей даже
радиоэлектроника - жизнь моя...
Ответить

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