Страница 131 из 421
Re: CodeVision AVR в вопросах и ответах
Добавлено: Ср июн 22, 2011 14:54:32
Мастер Ломастер
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, вы же инициализируете только первую.
Re: CodeVision AVR в вопросах и ответах
Добавлено: Ср июн 22, 2011 15:05:44
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, вы же инициализируете только первую.
да. я в коде после первой компиляции заметил. спасибо)))
Re: CodeVision AVR в вопросах и ответах
Добавлено: Ср июн 22, 2011 17:40:51
rs39
ChipKiller писал(а):rs39 писал(а):А запретить прерывания на момент измерения (обращения к датчику) нельзя разве?
... а если используется динамическая индикация?
rs39 писал(а):Либо функцию измерения повесить на само прерывание.
.. ну да и на 12-ти битном режиме измерения получим прерывание продолжительностью более 750ms

Ну тогда остается наверное драйвер какойньть лепить на отдельной микре-регистре. Библиотека в таком случае врят-ли поможет..
Re: CodeVision AVR в вопросах и ответах
Добавлено: Ср июн 22, 2011 19:41:20
ChipKiller
rs39 писал(а):Ну тогда остается наверное драйвер какойньть лепить на отдельной микре-регистре. Библиотека в таком случае врят-ли поможет..
... какой драйвер и зачем ?????? Что можно сделать и как, написал здесь
http://radiokot.ru/forum/viewtopic.php?f=20&t=50271 недостающие пару функций пишутся за 10-20 минут (прерывания запрещаются на момент приема/передачи бита, а далее вновь разрешаются )
Re: CodeVision AVR в вопросах и ответах
Добавлено: Сб июн 25, 2011 19:14:33
demonchik
всем котам МЯУ!!!! вот решил подключить дисплей к тому же порту SPI где у меня висит карта памяти. c карточкой и дисплеем получалось работать отдельно. но совместно - проблемы- CVAVR просто зависает. использовал дисплей 3310 нокии и стандартные библиотеки для работы с FAT, и контроллер ATmega32. в чем может быть мой затык?
но заметил что контроллер отпускает CS после окончания сеанса передачи с карточкой - то что мне надо...
Re: CodeVision AVR в вопросах и ответах
Добавлено: Сб июн 25, 2011 20:47:35
ChipKiller
demonchik писал(а):... c карточкой и дисплеем получалось работать отдельно. но совместно - проблемы- CVAVR просто зависает.
... возможно оба Ваших устройства пытаются "ответить" одновременно...
Re: CodeVision AVR в вопросах и ответах
Добавлено: Вт июн 28, 2011 09:40:35
e_c_c
Может кто нибудь поделится таблеткой для CVAvr 2.04.09a, в гугле меня не забанили, но инет сильно ограничен провайдером организации, поэтому , если не трудно,скинте на мыло е_с_с{@}mail.ru
p/s спасибо ,решено.
Re: CodeVision AVR в вопросах и ответах
Добавлено: Сб июл 02, 2011 19:33:08
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
Re: CodeVision AVR в вопросах и ответах
Добавлено: Сб июл 02, 2011 20:09:07
ARV
ну, во-первых, это у вас не объявление, а реализация функции. это просто замечание по терминологии, не критично. объявление - это когда в хидере написано char *link_down(unsigned char *,unsigned short int );
а во-вторых, вы должны понимать, что "вернуть строку" - это на самом деле означает "вернуть указатель на область памяти, где размещены символы строки". в вашем случае вы возвратите ровно то, что получите в качестве параметра, т.е. указатель path - по логике вещей, он вам и так известен, функция его не меняет, возвращать его - это не имеет смысла. но вот вопрос: достаточно ли места в той области, куда этот указатель указывает, чтобы добавлять туда какие-то символы?
Re: CodeVision AVR в вопросах и ответах
Добавлено: Сб июл 02, 2011 20:19:53
demonchik
ARV, места достаточно - побольше выделю байт. пока не критично. в функции есть смысл - она обьединяет строки и возвращает полученный путь. а лучше присвоить локальной строке и её возвращать?
Re: CodeVision AVR в вопросах и ответах
Добавлено: Сб июл 02, 2011 20:26:02
demonchik
вот если вызываю функцию без присваивания ldwn(path); - нет ошибок. делаю так text=ldwn(path); - получаю:
Error: sd_lcd.c(251): the expression must be a modifiable lvalue
Re: CodeVision AVR в вопросах и ответах
Добавлено: Сб июл 02, 2011 20:31:30
ARV
demonchik писал(а):ARV, места достаточно - побольше выделю байт. пока не критично. в функции есть смысл - она обьединяет строки и возвращает полученный путь. а лучше присвоить локальной строке и её возвращать?
ваша функция НЕ ОБЪЕДИНЯЕТ и ВОЗВРАЩАЕТ РЕЗУЛЬТАТ, а
ДОПИСЫВАЕТ К ПЕРВОЙ СТРОКЕ ВТОРУЮ и возвращает адрес ПЕРВОЙ.
Re: CodeVision AVR в вопросах и ответах
Добавлено: Сб июл 02, 2011 20:32:47
demonchik
ну это я по своему обьяснил (мож по тупому)... но что я делаю неверно? помогите пожалуйста

Re: CodeVision AVR в вопросах и ответах
Добавлено: Сб июл 02, 2011 20:36:39
ARV
чтобы ответить, что неправильно, надо видеть чуть поболее, чем тот кусочек кода. что вы показали... что такое
text и как вы его потом используете - не ясно. повторяю, ваша функция ВСЕГДА ВОЗВРАТИТ то же самое, что получит в параметре
path - нет никакого смысла писать
text=ldwn(path); потому что
text всегда будет равен
path. то есть можно сделать так:
и это будет то же самое абсолютно.
потенциально опасное место я вам показал - в функции нет контроля размеров строки-приемника результата...
Re: CodeVision AVR в вопросах и ответах
Добавлено: Сб июл 02, 2011 20:43:16
demonchik
спасибо, ARV. то есть могу и не писать return path и не объявлять функцию как возвращающую строку? она будет менять глобально объявленную переменную. вроде так?
Re: CodeVision AVR в вопросах и ответах
Добавлено: Сб июл 02, 2011 20:46:20
ARV
demonchik писал(а):спасибо, ARV. то есть могу и не писать return path и не объявлять функцию как возвращающую строку? она будет менять глобально объявленную переменную. вроде так?
глобальную или нет - это я не знаю, но менять она будет ТУ, что получает в параметре.
Повторяющаяся ошибка в CV AVR
Добавлено: Пн июл 04, 2011 01:43:09
awawaw
Вообщем нужна помощь.
При компиляции возникает ошибка: Linker error: the program has no 'main' function.
При этом в ранее рабочих программах эта ошибка тоже возникает.
После переустановки CV AVR ошибка исчезает. Версия 2.05.2
Помогите советом, недоело переустанавливать.
Re: Повторяющаяся ошибка в CV AVR
Добавлено: Пн июл 04, 2011 07:14:06
Мастер Ломастер
пользуйтесь легальными компиляторами
Re: Повторяющаяся ошибка в CV AVR
Добавлено: Пн июл 04, 2011 11:57:48
awawaw
Тоесть демо версия это не легально? Или я ошибаюсь и у меня не демо версия. Когда скачивал, было сказано что демо, или что-то в этом роде. Извините за. стиль, пишу с телефона.
Re: CodeVision AVR в вопросах и ответах
Добавлено: Вт июл 05, 2011 12:50:32
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".
Люди добрые, дапамажыте советом, а то совсем замучался, да и работа стоит...
проект и схему прилагаю, ногами прошу сильно не бить, т.к. только учусь