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

Обсуждаем контроллеры компании Atmel.
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

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

Сообщение Мастер Ломастер »

demonchik писал(а):то есть так будет верно:

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

typedef struct _mytab  {
                        char *_ffname;
                        char *_flink;
                        //void(*pFunction)(void);
                        } MY_TAB;

char ffname[];
char flink[];

 MY_TAB listing[2]={ffname,flink};
так будет не верно, даже если вы добавите размерность в массивы! массив listing у вас состоит из двух структур типа MY_TAB, вы же инициализируете только первую.
битва с дураками проиграна, победители торжествуют. слава победителям!
Аватара пользователя
demonchik
Встал на лапы
Сообщения: 94
Зарегистрирован: Вт апр 07, 2009 13:39:13
Откуда: одесса
Контактная информация:

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

Сообщение demonchik »

Мастер Ломастер писал(а):
demonchik писал(а):то есть так будет верно:

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

typedef struct _mytab  {
                        char *_ffname;
                        char *_flink;
                        //void(*pFunction)(void);
                        } MY_TAB;

char ffname[];
char flink[];

 MY_TAB listing[2]={ffname,flink};
так будет не верно, даже если вы добавите размерность в массивы! массив listing у вас состоит из двух структур типа MY_TAB, вы же инициализируете только первую.

да. я в коде после первой компиляции заметил. спасибо)))
радиоэлектроника - жизнь моя...
Аватара пользователя
rs39
Открыл глаза
Сообщения: 53
Зарегистрирован: Сб май 07, 2011 14:35:24
Откуда: Россия

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

Сообщение rs39 »

ChipKiller писал(а):
rs39 писал(а):А запретить прерывания на момент измерения (обращения к датчику) нельзя разве?
... а если используется динамическая индикация?
rs39 писал(а):Либо функцию измерения повесить на само прерывание.
.. ну да и на 12-ти битном режиме измерения получим прерывание продолжительностью более 750ms :))

Ну тогда остается наверное драйвер какойньть лепить на отдельной микре-регистре. Библиотека в таком случае врят-ли поможет..
Аватара пользователя
ChipKiller
Сверлит текстолит когтями
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

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

Сообщение ChipKiller »

rs39 писал(а):Ну тогда остается наверное драйвер какойньть лепить на отдельной микре-регистре. Библиотека в таком случае врят-ли поможет..
... какой драйвер и зачем ?????? Что можно сделать и как, написал здесь http://radiokot.ru/forum/viewtopic.php?f=20&t=50271 недостающие пару функций пишутся за 10-20 минут (прерывания запрещаются на момент приема/передачи бита, а далее вновь разрешаются )
Аватара пользователя
demonchik
Встал на лапы
Сообщения: 94
Зарегистрирован: Вт апр 07, 2009 13:39:13
Откуда: одесса
Контактная информация:

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

Сообщение demonchik »

всем котам МЯУ!!!! вот решил подключить дисплей к тому же порту SPI где у меня висит карта памяти. c карточкой и дисплеем получалось работать отдельно. но совместно - проблемы- CVAVR просто зависает. использовал дисплей 3310 нокии и стандартные библиотеки для работы с FAT, и контроллер ATmega32. в чем может быть мой затык?
но заметил что контроллер отпускает CS после окончания сеанса передачи с карточкой - то что мне надо...
радиоэлектроника - жизнь моя...
Аватара пользователя
ChipKiller
Сверлит текстолит когтями
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

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

Сообщение ChipKiller »

demonchik писал(а):... c карточкой и дисплеем получалось работать отдельно. но совместно - проблемы- CVAVR просто зависает.
... возможно оба Ваших устройства пытаются "ответить" одновременно...
e_c_c
Родился
Сообщения: 4
Зарегистрирован: Пт дек 12, 2008 19:52:44

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

Сообщение e_c_c »

Может кто нибудь поделится таблеткой для CVAvr 2.04.09a, в гугле меня не забанили, но инет сильно ограничен провайдером организации, поэтому , если не трудно,скинте на мыло е_с_с{@}mail.ru

p/s спасибо ,решено.
Аватара пользователя
demonchik
Встал на лапы
Сообщения: 94
Зарегистрирован: Вт апр 07, 2009 13:39:13
Откуда: одесса
Контактная информация:

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

Сообщение demonchik »

всем МЯУ!!! :)) Хлопцы, подскажите, правильно ли обьявлять функцию так

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

char  *link_down(unsigned char *path,unsigned short int pfile)
{
    i=strlen(path);
        // append the subdirectory name to the path
        if (path[i-1]!='/') strcatf(path,"/");
            strcat(path,listing[pfile].ffname);
return path;
}

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

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

Сообщение ARV »

ну, во-первых, это у вас не объявление, а реализация функции. это просто замечание по терминологии, не критично. объявление - это когда в хидере написано char *link_down(unsigned char *,unsigned short int );

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

Мой уютный бложик... заходите!
Аватара пользователя
demonchik
Встал на лапы
Сообщения: 94
Зарегистрирован: Вт апр 07, 2009 13:39:13
Откуда: одесса
Контактная информация:

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

Сообщение demonchik »

ARV, места достаточно - побольше выделю байт. пока не критично. в функции есть смысл - она обьединяет строки и возвращает полученный путь. а лучше присвоить локальной строке и её возвращать?
радиоэлектроника - жизнь моя...
Аватара пользователя
demonchik
Встал на лапы
Сообщения: 94
Зарегистрирован: Вт апр 07, 2009 13:39:13
Откуда: одесса
Контактная информация:

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

Сообщение demonchik »

вот если вызываю функцию без присваивания ldwn(path); - нет ошибок. делаю так text=ldwn(path); - получаю:
Error: sd_lcd.c(251): the expression must be a modifiable lvalue
радиоэлектроника - жизнь моя...
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

demonchik писал(а):ARV, места достаточно - побольше выделю байт. пока не критично. в функции есть смысл - она обьединяет строки и возвращает полученный путь. а лучше присвоить локальной строке и её возвращать?
ваша функция НЕ ОБЪЕДИНЯЕТ и ВОЗВРАЩАЕТ РЕЗУЛЬТАТ, а ДОПИСЫВАЕТ К ПЕРВОЙ СТРОКЕ ВТОРУЮ и возвращает адрес ПЕРВОЙ.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
demonchik
Встал на лапы
Сообщения: 94
Зарегистрирован: Вт апр 07, 2009 13:39:13
Откуда: одесса
Контактная информация:

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

Сообщение demonchik »

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

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

Сообщение ARV »

чтобы ответить, что неправильно, надо видеть чуть поболее, чем тот кусочек кода. что вы показали... что такое text и как вы его потом используете - не ясно. повторяю, ваша функция ВСЕГДА ВОЗВРАТИТ то же самое, что получит в параметре path - нет никакого смысла писать text=ldwn(path); потому что text всегда будет равен path. то есть можно сделать так:

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

ldwn(path);
text = path;

и это будет то же самое абсолютно.

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

Мой уютный бложик... заходите!
Аватара пользователя
demonchik
Встал на лапы
Сообщения: 94
Зарегистрирован: Вт апр 07, 2009 13:39:13
Откуда: одесса
Контактная информация:

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

Сообщение demonchik »

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

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

Сообщение ARV »

demonchik писал(а):спасибо, ARV. то есть могу и не писать return path и не объявлять функцию как возвращающую строку? она будет менять глобально объявленную переменную. вроде так?
глобальную или нет - это я не знаю, но менять она будет ТУ, что получает в параметре.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
awawaw
Родился
Сообщения: 2
Зарегистрирован: Пн июл 04, 2011 01:31:21

Повторяющаяся ошибка в CV AVR

Сообщение awawaw »

Вообщем нужна помощь.
При компиляции возникает ошибка: Linker error: the program has no 'main' function.
При этом в ранее рабочих программах эта ошибка тоже возникает.
После переустановки CV AVR ошибка исчезает. Версия 2.05.2
Помогите советом, недоело переустанавливать.
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

Re: Повторяющаяся ошибка в CV AVR

Сообщение Мастер Ломастер »

пользуйтесь легальными компиляторами
битва с дураками проиграна, победители торжествуют. слава победителям!
awawaw
Родился
Сообщения: 2
Зарегистрирован: Пн июл 04, 2011 01:31:21

Re: Повторяющаяся ошибка в CV AVR

Сообщение awawaw »

Тоесть демо версия это не легально? Или я ошибаюсь и у меня не демо версия. Когда скачивал, было сказано что демо, или что-то в этом роде. Извините за. стиль, пишу с телефона.
Zmey191
Родился
Сообщения: 2
Зарегистрирован: Пн июл 04, 2011 16:12:15
Контактная информация:

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

Сообщение Zmey191 »

Народ, вопрос по работе с типом float, звиняйте, если было. Поиском искал - похожего не нашел((

Суть в том, что не хочет уменьшаться значение одной переменной типа float на значение другой:

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

void main(void)
{       
float flZar,d,em;
...
flZar=(float)(1);
while(1)

      if (nNewSec==1)        //условие от таймера
      {                       
        d=(float)1/(3600*em);
        nNewSec=0;
        flZar=(float)(flZar-d); //каждый раз нужно заново вычислить d и уменьшить на него flZar
      };                                 
                                     
      sprintf(str,"%03d:%02d %f",min,sec,flZar);

      lcd_clear();     
      lcd_gotoxy(0,0);
      lcd_puts(str);      //выводим на LCD
};


Каждый раз при условии от таймера надо уменьшать значение flZar на расчитанное d. Дык вот, не хочет уменьшаться и всё тут! Само по себе d расчитывается нормально. Как я только не пытался. Строчка sprintf(str,"%03d:%02d %f",min,sec,flZar-d); отображается корректно, значит дело в приравнивании?
CodeVision 2.05.0 (пробовал на 1.25.9), симулирую в шПротеусе 7.8 (пробовал разные). На LCD вместо моего числа получается "-INF".
Люди добрые, дапамажыте советом, а то совсем замучался, да и работа стоит...
проект и схему прилагаю, ногами прошу сильно не бить, т.к. только учусь
Вложения
Desktop.rar
(125.48 КБ) 164 скачивания
Ответить

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