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

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

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

Сообщение Аlex »

misterkuk писал(а):Вот как рас во вкладке в браузесе http://mega-avr.ucoz.ru/publ/ds18b20_co ... 5/1-1-0-15
Нет там таких ляпов. Температура читается в переменную temper и идёт дальнейшая работа уже с этой переменной.
Давайте следующую статью...

misterkuk писал(а):А здесь 2 раза будет считываться температура с датчика или 1 раз?
Вы действительно всерьёз приняли мой сарказм ? :)
Это была шутка, не нужно так делать. Ибо такие конструкции не защитят от кривого чтения данных.
Аватара пользователя
serg_svd
Собутыльник Кота
Сообщения: 2560
Зарегистрирован: Ср янв 16, 2008 08:34:04
Откуда: KMV

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

Сообщение serg_svd »

kadenca писал(а):Пытаюсь по UART получить заведомо известную строку и по этой строке выполнить определенное действие.

Аналогичная проблема и у меня. У вас получилось?
"Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа." Ро́берт Ше́кли
Я правильных ответов знаю мало, поэтому не стесняюсь и много спрашиваю.
BEST-83154
Прорезались зубы
Сообщения: 218
Зарегистрирован: Ср дек 02, 2015 15:06:01

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

Сообщение BEST-83154 »

всем привет!
ни у кого не было проблем с автоматической оптимизацие кода?
может я и не в ту сторону смотрю
но вот как пример пишу простою заливку экрана на CodeVisionAVR через шину SPI
и то же самое с той же библиотекой только на Atmel Studio
и на атмел получаю скорость В 2 раза больше с теми же самими настройками SPI
а если ставить больше скорость битами
SPCR=SPR1 SPR0
SPSR=SPI2X
то дисплей уже не работает
кто сталкивался с таким подскажите куда копать!
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

serg_svd писал(а):Аналогичная проблема и у меня. У вас получилось?

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

char reseived_str[MAX_STR_LEN]; // размер буфера больше, чем принимаемая строка

scanf("%" ##MAX_STR_LEN "s", reseived_str);
if(strcmp(reseived_str, "CMD1") == 0){
   // тут делаем, что надо по этой команде
}
так, не? я бы так делал
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
BEST-83154
Прорезались зубы
Сообщения: 218
Зарегистрирован: Ср дек 02, 2015 15:06:01

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

Сообщение BEST-83154 »

так что никто не знает ответа на мой вопрос?
Аватара пользователя
Jack_A
Друг Кота
Сообщения: 6307
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

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

Сообщение Jack_A »

Все знают - если надо макс. быстродействие - пишут на асме, тем самым избавляясь от того, что накрутит компилятор вокруг кода, отрабытывающего необходимый функционал. Во всяком случае, на асме пишут критичные по времени выполнения куски кода. Насчет оптимизации - на этом форуме многократно заявлялось, что наилучший оптимизатор находится между ушей :( Не знаю как в CodeVision AVR, но обычно в компиляторах имеется настройка - оптимизация по скорости - по размеру кода - без оптимизации.
Изображение
andr_lar
Нашел транзистор. Понюхал.
Сообщения: 166
Зарегистрирован: Вт янв 22, 2013 16:31:22

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

Сообщение andr_lar »

Я извиняюсь за возможно тривиальные вопросы.Хочу написать в КодВижене програмку для удобства разбив её на несколько файлов.
Решил освоить эту фичу.Написал простейшую програмку - на одном входе нажимается кнопка - на втором по этой кнопке зажигается светодиод.Прочитал хельп в программе.В основной программе сделал 222.h файл где описал функцию что находится в файле 222.с.
По Configgure Project ->Input Files ->Add 222.c -> OK. Пытаюсь скомпелировать и получаю ошибку c(3):undefined symbol 'outsw'.Тоесть непонятно значение в функции файла 222.с. Пробую подойти с другого конца.Удаляю 222.с из Configgure Project ->Input Files.
В основном файле пишу #include <222.h> #include <222.c> чудо - компиляция без ошибок...Тоесть всё поперёк хелпа...Может я неправильно читаю...? Иду дальше..Компелирую,запускаю в протеусе - работает,смотрю в AVRStudio и..снова не понимаю.Не вижу я в нём присоединённых файлов.Хотя судя по входам-выходам портов отрабатывается но перехода на функцию отработки нет - есть только результат.Некомфортно так отлаживать...У меня такое впечатление что обе программы считают себя "особо умными" и что-то не показывают.Как отключить сиё умничание ?

КодВижен 3.12(с рутрекера) АврСтудио 4.19.
Думал что может студия старовата,скомпелировал программу в КодВижене 2.04 - результат тот-же и для первой и для второй ситуации...
Вложения
111.RAR
(31.32 КБ) 238 скачиваний
С уважением...
Аватара пользователя
WiseLord
Друг Кота
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск
Контактная информация:

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

Сообщение WiseLord »

Ну так естественно. В 222.c (а смотреть на него нужно как на полностью самостоятельный файл) вообще непонятно откуда взявшаяся переменная outsw.

Ничего удивительного тут нет. Компилятор при компиляции не знает, что такое outsw - ни тип, ни значение, - вообще ничего. О чём любезно и сообщает ошибкой.
BEST-83154
Прорезались зубы
Сообщения: 218
Зарегистрирован: Ср дек 02, 2015 15:06:01

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

Сообщение BEST-83154 »

Jack_A писал(а): Не знаю как в CodeVision AVR, но обычно в компиляторах имеется настройка - оптимизация по скорости - по размеру кода - без оптимизации.


да,в CodeVision AVR есть эти настройки,кроме (без оптимизации)
только это не то
по скорости почти ничего не дает
по размеру кода влияет только на размер кода

и что вы предлагаете написать библиотеку на асме ?
это еденеци программистов могут сделать,не говоря уж о таких как я
andr_lar
Нашел транзистор. Понюхал.
Сообщения: 166
Зарегистрирован: Вт янв 22, 2013 16:31:22

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

Сообщение andr_lar »

WiseLord писал(а):Ну так естественно. В 222.c (а смотреть на него нужно как на полностью самостоятельный файл) вообще непонятно откуда взявшаяся переменная outsw.

Ничего удивительного тут нет. Компилятор при компиляции не знает, что такое outsw - ни тип, ни значение, - вообще ничего. О чём любезно и сообщает ошибкой.


Если возможно просьба более подробно обьяснить этот вопрос.В хельпе он рассматривается туманно и я возможно неправильно его понял.Я считал что обьявив глобальную переменную в основном файле "майн" имею её подключённой во всех остальных файлах.Мне её переопределять в подключённых файлах или как ?
И ещё вопрос. Я вместо переменной outsw ставил PORTA.2=0; И получал ту-же ошибку.Но эта конструкция прекрасно работает в основном файле...Может для присоединённого файла *.c необходимы отдельные настройки ?

Добавлено after 6 minutes 35 seconds:
BEST-83154 писал(а):
Jack_A писал(а):

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


Была прекрасная программа Алгоритм Билдер.Делали ребята из Тулы.Графический ассемблер.Гораздо удобнее Код Вижена особенно в отладке - всегда понятно что происходит.И писалось по времени немного более чем Си...Но...к сожалению умерла из-за проблем с маркетингом....А жаль...
С уважением...
Аватара пользователя
WiseLord
Друг Кота
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск
Контактная информация:

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

Сообщение WiseLord »

Компилятор обрабатывает каждый .c файл отдельно. Поэтому любая встречаемая в них переменная должна прослеживаться до её объявления в каждом .c файле, независимо от других файлов.

Точно так же в 222.c компилятор ничего не знает про PORTA.2, так как в нём нет того же #include <tiny26.h>, где это определено.
Аватара пользователя
Jack_A
Друг Кота
Сообщения: 6307
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

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

Сообщение Jack_A »

BEST-83154 писал(а):и что вы предлагаете написать библиотеку на асме ?
это еденеци программистов могут сделать,не говоря уж о таких как я

Я никогда ничего не предлагаю, только высказываю свое мнение. Хозяин - бармен. Программист, если он программист, а не выпускник кружка юных математиков при местном ЖЭС'е, знает ассемблер того камня, с которым работает; а пишет на Си или др. ЯВУ, если для него важнее время написания программы и не нужны предельные параметры быстродействия; в противном случае критичный кусок он пишет на асме, не делая из этого вселенскую проблему. Так что насчет "единиц" кто-то малость не в курсе.
Спойлер" Хороший летчик умеет свободно летать на всем, что может летать и с некоторым трудом - на том, что, вообще говоря, летать не может. " © не помню кто
Изображение
andr_lar
Нашел транзистор. Понюхал.
Сообщения: 166
Зарегистрирован: Вт янв 22, 2013 16:31:22

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

Сообщение andr_lar »

WiseLord писал(а):Компилятор обрабатывает каждый .c файл отдельно. Поэтому любая встречаемая в них переменная должна прослеживаться до её объявления в каждом .c файле, независимо от других файлов.

Точно так же в 222.c компилятор ничего не знает про PORTA.2, так как в нём нет того же #include <tiny26.h>, где это определено.


Тоесть в определении файла необходимо указать #include <tiny26.h> ?
Уточню....Это нужно указать в 222.h или в 222.с ?

И я извиняюсь за возможное непонимание...Если переменная обьявляется в основном файле (где "майн") её нужно переопределять в прилагаемых файлах *.c ?
возможно есть возможность определять все глобальные переменные которые были-бы видны во всех прилагаемые файлах *.c ?
С уважением...
Аватара пользователя
WiseLord
Друг Кота
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск
Контактная информация:

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

Сообщение WiseLord »

А зачем Вам вообще глобальные переменные? Их лучше избегать.
andr_lar
Нашел транзистор. Понюхал.
Сообщения: 166
Зарегистрирован: Вт янв 22, 2013 16:31:22

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

Сообщение andr_lar »

WiseLord писал(а):А зачем Вам вообще глобальные переменные? Их лучше избегать.

Возможно...Но с ними удобнее работать...Особенно если память позволяет...Если возможно проясните те вопросы что я писал..
С уважением...
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

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

Сообщение Аlex »

andr_lar писал(а):Если переменная обьявляется в основном файле (где "майн") её нужно переопределять в прилагаемых файлах *.c ?
Да, но только с квалификаторм extern, который говорит о том, что экземпляр этой переменной уже где-то есть и нужно работать именно с ним, а не создавать новый.


main.c

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

int a;

.........
.........


bla_bla_bla.c

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

extern int a;  // Будет ссылаться на переменную "а" в main.c

........
........

andr_lar
Нашел транзистор. Понюхал.
Сообщения: 166
Зарегистрирован: Вт янв 22, 2013 16:31:22

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

Сообщение andr_lar »

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

Спасибо,завтра попробую (звиняюсь,сегодня гости)....

P.S. я извиняюсь,но #include <tiny26.h> тоже ставить в заголовке присоединённого файла чтоб можно было указать конструкцию вида...PORTA.2=1 ?
С уважением...
Аватара пользователя
WiseLord
Друг Кота
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск
Контактная информация:

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

Сообщение WiseLord »

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

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

Сообщение ARV »

Может быть всё-таки книжки по Си почитать?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
Jack_A
Друг Кота
Сообщения: 6307
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

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

Сообщение Jack_A »

WiseLord писал(а):А зачем Вам вообще глобальные переменные? Их лучше избегать.

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

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