Форум РадиоКот • Просмотр темы - Нескольно простых вопросов о программировании AVR на Си.
Сообщения без ответов | Активные темы
Страница 12 из 75
[ Сообщений: 1499 ]
... , , , , , , ...
Автор
Сообщение
ARV
Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
Добавлено: Пн сен 21, 2015 14:11:14
Ум, честь и совесть. И скромность.
Карма: 98
Рейтинг сообщений: 2121
Зарегистрирован: Чт дек 28, 2006 08:19:56Сообщений: 18460Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
потрудитесь объяснить, как именно не работает. что вы ожидаете получить и что получаете на самом деле?
_________________если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...Мой уютный бложик ... заходите!
Вернуться наверх
Реклама
Pnjom-Penb
Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
Добавлено: Пн сен 21, 2015 14:16:31
Карма: 3
Рейтинг сообщений: 44
Зарегистрирован: Вс авг 30, 2015 03:52:59Сообщений: 469
Рейтинг сообщения: 0
dm211 писал(а):
Почему у меня не работает это?-
Код:
flash int x[4]={100,150,200,250}; k=sizeof (x);
А компилятор какой?
Вернуться наверх
Реклама
WiseLord
Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
Добавлено: Пн сен 21, 2015 15:47:46
Друг Кота
Карма: 86
Рейтинг сообщений: 1035
Зарегистрирован: Чт апр 11, 2013 11:19:59Сообщений: 4903Откуда: Минск
Рейтинг сообщения: 0
Судя по flash , похоже на CodeVision.
Вернуться наверх
dm211
Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
Добавлено: Пн сен 21, 2015 20:50:09
Карма: 5
Рейтинг сообщений: 7
Зарегистрирован: Вс дек 10, 2006 19:26:13Сообщений: 208
Рейтинг сообщения: 0
Да, CV, и не могу получить количество цифр или символов массива.
Вернуться наверх
Реклама
dm211
Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
Добавлено: Пн сен 21, 2015 20:52:29
Карма: 5
Рейтинг сообщений: 7
Зарегистрирован: Вс дек 10, 2006 19:26:13Сообщений: 208
Рейтинг сообщения: 0
ARV писал(а):
потрудитесь объяснить, как именно не работает. что вы ожидаете получить и что получаете на самом деле?
Я хочу получить 4, а получаю-0
Вернуться наверх
Реклама
Siarzhuk
Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
Добавлено: Пн сен 21, 2015 21:01:16
Потрогал лапой паяльник
Карма: 20
Рейтинг сообщений: 121
Зарегистрирован: Вс янв 19, 2014 22:41:55Сообщений: 353
Рейтинг сообщения: 3
dm211 писал(а):
... не могу получить количество цифр или символов массива.
sizeof показывает размер объекта в байтах - т.е. в вашем случае размер массива будет равен sizeof(int) * 4.
Для получения размера в "попугаях" классика рекомендует так:
sizeof(x) / sizeof(x[0])
либо вариант для эстетов:
sizeof(x) / sizeof(*x)
Сермяжные практики, пошуршав по системным™ хидерам, находят тот или иной вариант countof, но чаще не найдя оного определяют его локально примерно так:
#define countof(__a) (sizeof(__a) / sizeof(*(__a)))
т.е. применительно для вашего случая использование будет выглядеть так:
k = countof(x);
_________________ Одновременным нажатием LIGHT и POWER, РП Sangean ATS-909X (ver 1.29) превращается в ATS-909XR !
Вернуться наверх
Реклама
hybroid
Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
Добавлено: Пн сен 21, 2015 21:12:00
Друг Кота
Карма: 45
Рейтинг сообщений: 623
Зарегистрирован: Вс ноя 14, 2010 19:24:26Сообщений: 8007Откуда: Лукалэнд
Рейтинг сообщения: 0
Для эстетов более годный.
Вот только вряд ли это ему поможет, судя по flash.
Вернуться наверх
WiseLord
Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
Добавлено: Пн сен 21, 2015 21:25:05
Друг Кота
Карма: 86
Рейтинг сообщений: 1035
Зарегистрирован: Чт апр 11, 2013 11:19:59Сообщений: 4903Откуда: Минск
Рейтинг сообщения: 0
Да, есть мнение, что
flash в CodeVision "портит" sizeof.
Интересно было бы узнать у автора вопроса, что происходит, если это не flash, а обычный массив. Там работает?
В avr-gcc, кстати, такое у меня вполне корректно отрабатывает:
Код:
static const uint8_t alarmSym[] PROGMEM = { /* Empty rectangle */ 0b11111, 0b00000, 0b00000, // ... много других байтов (кстати, зачем у автора вопроса там int в аналогичном случае?) 0b00000, }; for (i = 0; i < sizeof(alarmSym); i++) ks0066WriteData(pgm_read_byte(&alarmSym[i]));
Здесь PROGMEM не непонятно что, а вполне обычный макрос (pgmspace.h):
#define PROGMEM __ATTR_PROGMEM__, в свою очередь
#define __ATTR_PROGMEM__ __attribute__((__progmem__))
Вернуться наверх
hybroid
Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
Добавлено: Пн сен 21, 2015 23:13:16
Друг Кота
Карма: 45
Рейтинг сообщений: 623
Зарегистрирован: Вс ноя 14, 2010 19:24:26Сообщений: 8007Откуда: Лукалэнд
Рейтинг сообщения: 1
Недавно британские учёные доказали, что CV портит ДНК людей. После длительного воздействия CV на человека - его можно не спасти, он становится дельфином. Единственный выход - быстрейшее избавление от патогена.
Вернуться наверх
Реклама
dm211
Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
Добавлено: Вт сен 22, 2015 05:17:33
Карма: 5
Рейтинг сообщений: 7
Зарегистрирован: Вс дек 10, 2006 19:26:13Сообщений: 208
Рейтинг сообщения: 0
без flash тоже не работает-пробовал. Почему int ?-потому что там цифры
Вернуться наверх
shindax
Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
Добавлено: Вт сен 22, 2015 05:25:45
Потрогал лапой паяльник
Карма: 1
Рейтинг сообщений: 14
Зарегистрирован: Сб сен 19, 2009 07:02:19Сообщений: 378
Рейтинг сообщения: 0
Siarzhuk писал(а):
sizeof показывает размер объекта в байтах - т.е. в вашем случае размер массива будет равен sizeof(int) * 4....
Cогласно "классике" sizeof x и sizeof( x ) - это разные вещи. sizeof( x ) для массива вернёт размер указателя, чем массив собственно и является, а sizeof x - уже размер массива 'x' в байтах, да и то, если это было определено на этапе компиляции.
Как Вы написали, было-бы раньше. Сейчас, наверное, все компиляторы по новым стандартам уже пишут. С некоторых пор, стандарт Си сильно поменяли, как там теперь стало, читать надо. По крайней мере появился запрет на арифметику с указателями. Всё ради хомячков. Глядишь, и тип данных 'массив' введут.
Лично я в данном случае вообще не вижу смысла в sizeof.
Вернуться наверх
WiseLord
Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
Добавлено: Вт сен 22, 2015 06:25:29
Друг Кота
Карма: 86
Рейтинг сообщений: 1035
Зарегистрирован: Чт апр 11, 2013 11:19:59Сообщений: 4903Откуда: Минск
Рейтинг сообщения: 0
dm211 писал(а):
Почему int ?-потому что там цифры
Все они меньше 256, поэтому можно было бы unsigned char обойтись.
Вернуться наверх
dm211
Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
Добавлено: Вт сен 22, 2015 06:42:40
Карма: 5
Рейтинг сообщений: 7
Зарегистрирован: Вс дек 10, 2006 19:26:13Сообщений: 208
Рейтинг сообщения: 0
WiseLord писал(а):
dm211 писал(а):
Почему int ?-потому что там цифры
Все они меньше 256, поэтому можно было бы unsigned char обойтись.
С unsigned char работает
Вернуться наверх
ARV
Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
Добавлено: Вт сен 22, 2015 06:56:02
Ум, честь и совесть. И скромность.
Карма: 98
Рейтинг сообщений: 2121
Зарегистрирован: Чт дек 28, 2006 08:19:56Сообщений: 18460Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
shindax писал(а):
Cогласно "классике" sizeof x и sizeof( x ) - это разные вещи. sizeof( x ) для массива вернёт размер указателя, чем массив собственно и является, а sizeof x - уже размер массива 'x' в байтах, да и то, если это было определено на этапе компиляции.
будьте любезны ссылочку на эту классику - хотелось бы приобщиться к знаниям.
_________________если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...Мой уютный бложик ... заходите!
Вернуться наверх
WiseLord
Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
Добавлено: Вт сен 22, 2015 07:40:45
Друг Кота
Карма: 86
Рейтинг сообщений: 1035
Зарегистрирован: Чт апр 11, 2013 11:19:59Сообщений: 4903Откуда: Минск
Рейтинг сообщения: 0
dm211 писал(а):
С unsigned char работает
CodeVision такой CodeVision...
2 shindax: вот,
почитайте , одни из первых гуглящихся результатов по
sizeof .
Вернуться наверх
Siarzhuk
Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
Добавлено: Вт сен 22, 2015 08:34:02
Потрогал лапой паяльник
Карма: 20
Рейтинг сообщений: 121
Зарегистрирован: Вс янв 19, 2014 22:41:55Сообщений: 353
Рейтинг сообщения: 0
shindax писал(а):
С некоторых пор, стандарт Си сильно поменяли, как там теперь стало, читать надо. По крайней мере появился запрет на арифметику с указателями.
Как так запретили?
Без малого половину функционала языка в печь? [мечтательно] Вот бы Бьярну такую смелость во времена былинные.
_________________ Одновременным нажатием LIGHT и POWER, РП Sangean ATS-909X (ver 1.29) превращается в ATS-909XR !
Вернуться наверх
Pnjom-Penb
Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
Добавлено: Вт сен 22, 2015 19:22:40
Карма: 3
Рейтинг сообщений: 44
Зарегистрирован: Вс авг 30, 2015 03:52:59Сообщений: 469
Рейтинг сообщения: 0
dm211 писал(а):
Да, CV, и не могу получить количество цифр или символов массива.
Однажды читал на одном из форумов, что CV не умеет sizeof. Проверял примеры, иллюстрирующие его "работу", на своем экземпляре - действительно не работает. Правда, не во всех версиях.
P.S. Только не подумайте, что я им пользовался - содержал исключительно ради помощи страждущим.
P.P.S.
Rtmip писал(а):
А еще более подробно можете написать, чтобы не читать по 100 страниц форума военного? Я про то, какие еще "не все его недостатки"(CVAVR) и в чем именно не реализует стандарт?
Rtmip , Вы еще здесь? Как Вам эта прэлесть с sizeof'ом?
Вернуться наверх
prinv
Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
Добавлено: Чт сен 24, 2015 05:46:36
Вымогатель припоя
Карма: 7
Рейтинг сообщений: 58
Зарегистрирован: Чт янв 20, 2011 09:07:08Сообщений: 677Откуда: Пермь
Рейтинг сообщения: 0
Подскажите пожалуйста.
При объявлении в cpp-шном проекте в Atmel Studio 6.2
Код:
#define FIFO( size )\ struct {\ unsigned char buf[size];\ unsigned char tail;\ unsigned char head;\ } FIFO(128) fifo;
получаю warning:
Код:
anonymous type with no linkage used to declare variable '<anonymous struct> fifo' with linkage [enabled by default]
В чём ошибка?
_________________ Никакая контра не уйдёт от нас
Вернуться наверх
WiseLord
Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
Добавлено: Чт сен 24, 2015 06:07:37
Друг Кота
Карма: 86
Рейтинг сообщений: 1035
Зарегистрирован: Чт апр 11, 2013 11:19:59Сообщений: 4903Откуда: Минск
Рейтинг сообщения: 1
Анонимная структура. Попробуйте дать ей какое-нибудь имя - поменять на struct fifo_t { , а дальше как есть.
Вернуться наверх
prinv
Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
Добавлено: Чт сен 24, 2015 06:23:09
Вымогатель припоя
Карма: 7
Рейтинг сообщений: 58
Зарегистрирован: Чт янв 20, 2011 09:07:08Сообщений: 677Откуда: Пермь
Рейтинг сообщения: 0
Большое спасибо, warning пропал
_________________ Никакая контра не уйдёт от нас
Вернуться наверх
Страница 12 из 75
[ Сообщений: 1499 ]
... , , , , , , ...
Кто сейчас на форуме
Сейчас этот форум просматривают: Google [Bot] и гости: 32
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения