Например TDA7294

Форум РадиоКот • Просмотр темы - Нескольно простых вопросов о программировании AVR на Си.
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Вт апр 23, 2024 23:17:29

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 1459 ]     ... , , , 30, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Пт фев 03, 2017 18:10:27 
Друг Кота
Аватар пользователя

Карма: 27
Рейтинг сообщений: 33
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Сообщений: 6296
Откуда: Ukraine
Рейтинг сообщения: 0
c2n, спасибо :)
и какой же талант писателя в тебе сохнет...., эх.... :))

_________________
Tell Me The Truth


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Пн фев 13, 2017 20:20:41 
Друг Кота
Аватар пользователя

Карма: 27
Рейтинг сообщений: 33
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Сообщений: 6296
Откуда: Ukraine
Рейтинг сообщения: 0
как известно размер массива при инициализации можна не указывать
Код:
char arr[] = {0,5,56,7,78,7};

компилятор сам его вычислит
а почему такой фокус не проходит с двумерными массивами ?
тоесть почему не допускается запись
Код:
char file_name[] [] = {         
   "kapitan.wav",
   "markiza.wav",
   "razb.wav",
   "casablan.wav"
};

а вот запись такого вида компилятор с радостью принимает
Код:
char file_name[][15] = {     
   "kapitan.wav",
   "markiza.wav",
   "razb.wav",
   "casablan.wav"
};

_________________
Tell Me The Truth


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Пн фев 13, 2017 20:35:54 
Собутыльник Кота
Аватар пользователя

Карма: 29
Рейтинг сообщений: 645
Зарегистрирован: Сб май 14, 2011 21:16:04
Сообщений: 2694
Откуда: г. Чайковский
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Если не ошибся, то вот так
Код:
char file_name[] [] = {         
   {"kapitan.wav"},
   {"markiza.wav"},
   {"razb.wav"},
   {"casablan.wav"},
};

_________________
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Пн фев 13, 2017 21:20:49 
Друг Кота
Аватар пользователя

Карма: 27
Рейтинг сообщений: 33
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Сообщений: 6296
Откуда: Ukraine
Рейтинг сообщения: 0
компилятор выдает
Цитата:
array type has incomplete element type

_________________
Tell Me The Truth


Вернуться наверх
 
Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Пн фев 13, 2017 21:21:34 
Друг Кота
Аватар пользователя

Карма: 86
Рейтинг сообщений: 1018
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4875
Откуда: Минск
Рейтинг сообщения: 0
FreshMan писал(а):
тоесть почему не допускается запись
Код:
char file_name[] [] = {         
   "kapitan.wav",
   "markiza.wav",
   "razb.wav",
   "casablan.wav"
};


А это массив 2x2 или 1x4? Или 4x1? Или ещё любой другой размерности, но просто ещё неполный?


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Пн фев 13, 2017 21:42:46 
Друг Кота
Аватар пользователя

Карма: 27
Рейтинг сообщений: 33
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Сообщений: 6296
Откуда: Ukraine
Рейтинг сообщения: 0
это массив где хранятся имена wav файлов
и все

_________________
Tell Me The Truth


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Пн фев 13, 2017 21:47:19 
Друг Кота
Аватар пользователя

Карма: 86
Рейтинг сообщений: 1018
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4875
Откуда: Минск
Рейтинг сообщения: 0
Но Вы его объявляете двумерным, а размерность не указываете. Как компилятор догадается, сколько под каждого измерение выделять? Те же "casablan.wav" и "razb.wav" требуют разного числа байтов для хранения.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Пн фев 13, 2017 21:52:31 
Друг Кота
Аватар пользователя

Карма: 27
Рейтинг сообщений: 33
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Сообщений: 6296
Откуда: Ukraine
Рейтинг сообщения: 0
в том ведь и вопрос
почему в одномерном массиве размерность можна не указывать а в двумерном уже так не сойдет ?

_________________
Tell Me The Truth


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Пн фев 13, 2017 21:56:51 
Друг Кота
Аватар пользователя

Карма: 86
Рейтинг сообщений: 1018
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4875
Откуда: Минск
Рейтинг сообщения: 0
Потому что в одномерном одно измерение. И char x[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12} - это однозначно вектор из 12 элементов

А вот char x[][] может быть и 1x12, и 2x6, и 3x4, и 4x3, и 6x2, и 12x1. Как компилятору понять, что Вы от него хотите? Остаться неопределённым может только одно (первое) измерение, оно может быть вычислено компилятором по общему количеству элементов + размерностям других измерений.

Скажем, char x[][3] = {1, 2, ....N} - тут компилятор однозначно понимает, что это массив из нескольких групп по 3 char-а. Вычислить, сколько групп понадобится, несложно. А просто char[][] - непонятно, сколько групп по сколько элементов имеются в виду.

P.S. Если так уж приспичило в данном конкретном случае (со строками), то объявляйте это не как массив массивом char, а как массив строк:
Код:
    char *file_name[] = {
       "kapitan.wav",
       "markiza.wav",
       "razb.wav",
       "casablan.wav"
    };

Это вполне себе одномерный массив строк (точнее - одномерный массив указателей на char). Его ещё и const можно сделать при необходимости.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Вт фев 14, 2017 13:05:04 
Встал на лапы

Зарегистрирован: Вс мар 01, 2009 20:41:19
Сообщений: 125
Рейтинг сообщения: 0
Код:
struct sText
{
   char *text;
};

struct sText ArrayText[] =
{
   { .text = "12345"},
   { .text = "123"},
   { .text = "1465445"}
};

#define ARRAY_SIZE(x)         (sizeof(x) / sizeof((x)[0]))

Зато можно так, ...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Вт фев 14, 2017 13:14:08 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1289
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4510
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
И чем Ваш пример отличается от обычного одномерного массива указателей ? Для чего этот гемор со структурами ?

Добавлено after 1 minute 33 seconds:
Код:
char* ArrayText[] =
{
   "12345",
   "123",
   "1465445"
};
:dont_know:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Пн фев 27, 2017 19:54:48 
Сверлит текстолит когтями
Аватар пользователя

Карма: 10
Рейтинг сообщений: 111
Зарегистрирован: Ср июл 25, 2012 21:40:09
Сообщений: 1193
Откуда: Самара
Рейтинг сообщения: 0
Свежий!
Вот эта "превед" воспринимается как 'п' 'р' 'е' 'в' 'е' 'д' '\n' где \n = 0
Так что твои массивы строк это уже как бы двумерные массивы.
В голом си нет понятия строка.
Я выходил из положения - определял через typedefы строки, и этот свой тип загонял в массив. Изврат конечно, но начальнику понравилось, а компилятору - не очень. 8 килограм прошивки и 512 байт еепрона скушалось моментально.

Оптимизировал потом под конечную длинну строки, и жЫть стало легче. И вывод на ИКран стал более равномерным, без переодических залипаний.

Лучше разбери механизм переменная-указатель. Даст бонус к быстродействию кода.
Керниган-Ритчи в помощь)))

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Пн фев 27, 2017 22:02:57 
Друг Кота
Аватар пользователя

Карма: 86
Рейтинг сообщений: 1018
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4875
Откуда: Минск
Рейтинг сообщения: 0
c2n писал(а):
Вот эта "превед" воспринимается как 'п' 'р' 'е' 'в' 'е' 'д' '\n' где \n = 0
Вы немножко путаете. '\n' и 0 - это совсем разные вещи. Ну а "превед" - это массив из 'п' 'р' 'е' 'в' 'е' 'д' '\0', а уже '\0' и просто 0 - одно и то же.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Вт фев 28, 2017 10:19:53 
Сверлит текстолит когтями
Аватар пользователя

Карма: 10
Рейтинг сообщений: 111
Зарегистрирован: Ср июл 25, 2012 21:40:09
Сообщений: 1193
Откуда: Самара
Рейтинг сообщения: 0
А. Да. Напутал)))) строка завершается не '\n', а '\0'
Надеюсь и с этой оплошностью всеравно идея ясна.
По сути строка "превед" в массиве хранится как указатель на некоторый адрес в прошивке, и не более того. Да и вообще - использование безразмерных массивов - тупо жрет память, т.к. компилятор начинает нарезать все свободное пространство под такие безобразия. Некоторые компиляторы умеют ограничивать сами себя, а некоторые - жрут все подряд.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Вт фев 28, 2017 18:30:32 
Потрогал лапой паяльник
Аватар пользователя

Карма: 20
Рейтинг сообщений: 121
Зарегистрирован: Вс янв 19, 2014 22:41:55
Сообщений: 353
Рейтинг сообщения: 0
c2n писал(а):
[...] - использование безразмерных массивов - тупо жрет память, т.к. компилятор начинает нарезать все свободное пространство под такие безобразия.

А что вы имеете ввиду под безразмерными С массивами? Пример можно?

_________________
Одновременным нажатием LIGHT и POWER, РП Sangean ATS-909X (ver 1.29) превращается в ATS-909XR! ;-)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Пн мар 13, 2017 18:05:13 
Грызет канифоль

Зарегистрирован: Сб янв 03, 2015 21:03:24
Сообщений: 266
Рейтинг сообщения: 0
поиск не помог а именно:

на каком ресурсе можно почитать о языке C для AVR но полную версию языка со всеми возможными вариантами . Наподобие ресурса arduino.cc php.org и др. где указанны примеры, полный перечень аргументов, пояснения и тп. Потому что например открываю , официальный ресурс C (наверно разновидность ATMEL) на котором хочу детально прочитать про sleep его режимы, как пользоваться и тд и что я вижу
http://www.atmel.com/webdoc/avrlibcrefe ... sleep.html

Код:
set_sleep_mode(<mode>);
какие такие моде ? это что секретная информация ? почему не указанны все варианты модов с примерами и т.д. короче какойто непонятный ресурс.

Вот есть вприроде ресурс про C для AVR c полным описанием ?


Последний раз редактировалось alex68md Вт мар 14, 2017 15:10:03, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Пн мар 13, 2017 21:20:56 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 2
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
alex68md писал(а):
Вот есть вприроде ресурс про C для AVR c полным описанием ?
ну вот как бы я старался: http://www.simple-devices.ru/index.php? ... &Itemid=10

на английском почти то же самое: http://nongnu.org/avr-libc/user-manual/

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

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Вт мар 14, 2017 17:49:41 
Грызет канифоль

Зарегистрирован: Сб янв 03, 2015 21:03:24
Сообщений: 266
Рейтинг сообщения: 0
забыл линк на атмел (наверно единственно официальный ресурс?) кинуть. обновил предыдущее сообщение. как видим сайт очень и очень неполный несмотря на то что с притензией на оф. ресурс по языку для их процессоров.

ARV можно и английский. спасибо. сейчас посматрю ваши линки

Добавлено after 2 hours 37 minutes 42 seconds:
получается у каждого компилятора свой язык...

ARV, а если я в ардуиновский компилятор подсуну код с _BV(x), он его поймет?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Вт мар 14, 2017 19:24:09 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
alex68md писал(а):
если я в ардуиновский компилятор подсуну код с _BV(x), он его поймет?
должен по идее, ведь ардуино компилирует тем же самым AVR-GCC, о котором я все и писал... а если не поймет, просто добавьте в самом начале своего файла #define _BV(x) (1<<(x)) и после этого уже проблем не будет

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

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Ср мар 15, 2017 09:00:40 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 20
Рейтинг сообщений: 648
Зарегистрирован: Пт май 31, 2013 17:14:38
Сообщений: 2081
Откуда: Украина, Винница
Рейтинг сообщения: 0
К вопросу о двумерных массивах. Вспомнилась лекция по С из ютюба, где лектор рассказывает о том, что в итоговом коде не существует массивов размерностью больше 1. Любой многомерный массив переводится в строку и хранится в таком виде в памяти. А если нашаманить с указателями то можно получить интересные эффекты :))) .

К вопросу о среде. Я агитирую за IAR. Изначально привык к среде и переход на стмки был не так ужасен. Кроме того, в один прекрасный момент, Вы захотите попробовать С++, а в avr-gcc его поддержка не полная. Кроме того, в другой прекрасный момент, Вы захотите запустить пошаговое исполнение кода в Proteus. И опа! А ваша 7я студия с ее gcc не может нормально сгенерировать elf файл, надо откатиться на 6ю. Потом Вы решите, а ну его, этот Proteus. Есть же JTAG! Покупать фирменный 3-й айс за 200 у.е. для хобби как-то не ок. Нагуглите 1-й айс, самодельный, ну или купите за 10 у.е. И тут снова засада - 7я студия не поддерживает такое, только 4я.

Но купив за 20 у.е. стмовскую дискавери Вы получаете отладочную плату, программатор, джитаг-отладчик. Вот Вам и Атмел. :)))

P.S. Когда писал одну прожку под stm, мне ядро исключение кидало, когда я по невнимательности, через указатель, выходил за пределы своего массива. Это к вопросу о надежности кода. А чего стоят точки останова исполнения по изменению ячейки памяти :love: . Тебе исключение с жалобой на ячейку памяти, а ты туда брекпоинт и сидишь, ждешь - кто же попытается ее изменить.

Добавлено after 16 minutes 44 seconds:
alex68md писал(а):
получается у каждого компилятора свой язык...

Это Вам по молодости так кажется. Вы просто еще не разбираетесь в хидерах, макросах и директивах компилятора. Язык у всех один С или С++. А вот надстройки над этим языком в виде макросов и директив уже индивидуальны. Макросы можно легко переносить в собственный хидер. А директивы, как правило, имеют полные аналогии - будь то иаровкое __interrupt_vector или студиевское ISR(...).
Читайте, смотрите лекции по С. Тогда Вы поймете какие "костыли" применяются для адаптации С к авр, откуда берутся названия регистров в компиляторе и т.п.
Можно и по другому выразиться - создавая новый проект в среде, Вы не получаете чистый лист. Вы получаете заготовку. С хидерами. В которых что-то уже определено, при помощи того же С.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 1459 ]     ... , , , 30, , , ...  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 42


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y