Например TDA7294

Форум РадиоКот • Просмотр темы - Вопросы по С/С++ (СИ)
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Вт апр 23, 2024 12:14:41

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


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



Начать новую тему Ответить на тему  [ Сообщений: 7588 ]     ... , , , 246, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Чт янв 26, 2017 14:38:55 
Друг Кота
Аватар пользователя

Карма: 86
Рейтинг сообщений: 1018
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4875
Откуда: Минск
Рейтинг сообщения: 0
Код:
*((uint8_t*)&wav_header)
*((uint8_t*)&wav_header + 5)
*((uint8_t*)&wav_header + 30)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Чт янв 26, 2017 17:19:51 
Друг Кота
Аватар пользователя

Карма: 27
Рейтинг сообщений: 33
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Сообщений: 6296
Откуда: Ukraine
Рейтинг сообщения: 0
WiseLord, насколько я понимаю то wav_header является сам по себе указателем на нулевой байт структуры ?
как правильно понимать (uint8_t*)&wav_header) ? :dont_know:

_________________
Tell Me The Truth


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Чт янв 26, 2017 17:42:37 
Друг Кота
Аватар пользователя

Карма: 86
Рейтинг сообщений: 1018
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4875
Откуда: Минск
Рейтинг сообщения: 0
wav_header - структура
&wav_header - указатель на неё
(uint8_t*)&wav_header - приводим указатель к типу (uint8_t*)
*(uint8_t*)&wav_header - читаем по этому указателю число типа uint8_t
*((uint8_t*)&wav_header + 5 ) - читаем по (этому указателю + 5 байтов смещение) число типа uint8_t


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

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

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Чт янв 26, 2017 18:42:12 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
FreshMan писал(а):
как обратится, считать данные, к примеру, с 0 или 5 или 30 байта данной структуры ?
нахрена иметь структуру, чтобы потом обращаться к ее данным мимо поименованных полей?! ну берите тогда сырой массив, и обращайтесь, если с указателями траблы
или при помощи union совместите массив со структурой и ковыряйтесь там хоть так, хоть эдак
Код:
typedef struct{
   char chunkId[4];
   char format[4];
   char subchunk1Id[4];
   unsigned short audioFormat;
   unsigned short numChannels;
   unsigned long sampleRate;
   unsigned long byteRate;
   unsigned short blockAlign;
   unsigned short bitsPerSample;
   char subchunk2Id[4];
   unsigned long subchunk2Size;
}HEADER;

typedef union{
   unsigned char raw_bytes[sizeof(HEADER)];
   HEADER struct_data;
} COMMON_HEADER;

COMMON_HEADER wav_header;

wav_hader.raw_bytes[15] = 0; // обнуляем 15-й байт в структуре, наплевав на ее поля
wav_header.struc_data.audioFormat = 12; // а теперь делаем бяку через поле

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

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


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

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

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Чт янв 26, 2017 18:53:03 
Друг Кота
Аватар пользователя

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

требуется значение полей структуры вывести на LCD 16х2
как я понимаю надо последовательно байт за байтом превращать в строку и выводить на экран
если знаете что-то попроще - поправте

_________________
Tell Me The Truth


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

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

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Чт янв 26, 2017 18:59:38 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
ну так и выводите поля структуры! нафига побайтно-то?
Код:
sprintf(str, "SampleRate = %lu", wav_header.SampleRate);

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

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пт янв 27, 2017 09:27:25 
Друг Кота
Аватар пользователя

Карма: 27
Рейтинг сообщений: 33
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Сообщений: 6296
Откуда: Ukraine
Рейтинг сообщения: 0
ARV писал(а):
ну так и выводите поля структуры! нафига побайтно-то?

согласен, но
поля структуры имеют разный тип
и если сделать так как вы советуете
Код:
sprintf(str, "SampleRate = %lu", wav_header.SampleRate);

то компилятор начинает ругатся что тип массива str не соответствует выводимому полю структуры
под кажое поле надо свою выводную строку создавать ?

_________________
Tell Me The Truth


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пт янв 27, 2017 09:42:54 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
FreshMan писал(а):
компилятор начинает ругатся что тип массива str не соответствует выводимому полю структуры
str - это массив символов, т.е. строка. тип выводимого поля должен соответствовать формату вывода, но и только! компилятор не будет ругаться.
главное - в str должно быть достаточно места, чтобы влезло полное представление соответствующего числа в виде символов, т.е. для unsigned long не менее 11 байтов.

FreshMan писал(а):
под кажое поле надо свою выводную строку создавать ?
я понятия не имею, как вы планируете выводить на ЖКИ 2х16 кучу полей из заголовка WAV-файла... и зачем это вообще делать... вы правы в одном: каждое поле придется выводить отдельным форматом, соответствующим этому полю, а вот строка-результат, которая будет хранить символьное представление полей, может быть одна и та же.

чтобы меньше ломать голову с выводом на ЖКИ, раз уж вы решили это делать при помощи стандартных функций вывода, я рекомендую воспользоваться моими рекомендациями и работать примерно так:
Код:
printf_P(PSTR("поле1=%d\nполе2=%d"), поле1, поле2);
не забывая вовремя ставить курсор в первую позицию первой строки.

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

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пт янв 27, 2017 09:43:09 
Друг Кота
Аватар пользователя

Карма: 86
Рейтинг сообщений: 1018
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4875
Откуда: Минск
Рейтинг сообщения: 0
Можно просто привести к тому типу, что в формате заявлен:
Код:
sprintf(str, "SampleRate = %lu", (unsigned long)wav_header.SampleRate);


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пт янв 27, 2017 09:52:31 
Друг Кота
Аватар пользователя

Карма: 27
Рейтинг сообщений: 33
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Сообщений: 6296
Откуда: Ukraine
Рейтинг сообщения: 0
согласет
вот только char str[];
а поля структуры имеют тип намного больше char

_________________
Tell Me The Truth


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пт янв 27, 2017 09:54:50 
Друг Кота
Аватар пользователя

Карма: 86
Рейтинг сообщений: 1018
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4875
Откуда: Минск
Рейтинг сообщения: 0
А какая разница? Какого бы типа ни было поле, приведя его к long, а потом отформатировав sprintf-ом, получите в любом случае строковое представление этого поля.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пт янв 27, 2017 10:08:36 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 1
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
FreshMan писал(а):
вот только char str[];
так вообще нельзя! str должен быть заведомо бОльшего размера, чем самая длинная строка, формируемая sprintf-ом!

т.е. для sprintf(str, "SampleRate = %lu", (unsigned long)wav_header.SampleRate); должно быть char str[24];

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

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пт янв 27, 2017 10:18:53 
Друг Кота
Аватар пользователя

Карма: 27
Рейтинг сообщений: 33
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Сообщений: 6296
Откуда: Ukraine
Рейтинг сообщения: 0
понемного начинает приходить понимание :)
ARV писал(а):
должно быть char str[24];

а почему компилятор выдает предуприждение когда я делаю безразмерный массив ?
где-то читал что он в таком случае должен сам определить его размер

_________________
Tell Me The Truth


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пт янв 27, 2017 10:31:41 
Ум, честь и совесть. И скромность.
Аватар пользователя

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

массив "пустого размера" - это обычный УКАЗАТЕЛЬ. память, на которую он будет указывать - это проблема программиста.

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

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пт янв 27, 2017 11:21:44 
Потрогал лапой паяльник
Аватар пользователя

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

Здесь не так радостно принимают людей как их деньги. © Общаясь с программируюшими на их любимые темы говорите сразу кодом. В противном случае, до наработки вами общей с ними терминологии, будете терять время на выяснение того, что же вы имели ввиду, и того что вы сказали им на самом деле. :) Иными словами: -"Какой код, и что сказал компилятор?"
FreshMan писал(а):
где-то читал что он в таком случае должен сам определить его размер

Если имелись ввиду конструкции типа:
Код:
char str[] = "фгчтрчгтр";

размер массива будет исчислен с учётом \0 терминатора. Если использовать его как целевой для sprintf, нужно быть уверенным, что его размера хватит, чтобы вместить результат с учётом терминатора. В противном случае переменные, имевшие несчастье быть объявленными за str будут перезаписаны "мусором" без их на то желания. ;)

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пн фев 27, 2017 17:40:05 
Родился

Зарегистрирован: Вс янв 29, 2017 20:16:32
Сообщений: 6
Рейтинг сообщения: 0
Нужно загрузить картинку с флешки, преобразовать контур и сохранить обратно. Лабораторка такая у сестры. В визуал студии с помощью библиотеки CImg мы научились преобразовывать контур :)
Подключаем флешку по этой инстструкции (используя модуль FatFs) https://nagits.wordpress.com/2010/10/18/avr_sd/
И вообщем такие вопросы:
1) Возможно ли подключить CImg к проекту Atmel Studio?
2) Как загрузить bmp картинку в микроконтроллер atmega32?
3) Если 1 или 2 никак не получится сделать (или не целесообразно), то как можно решить задачу по-другому?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Вт фев 28, 2017 08:57:10 
Поставщик валерьянки для Кота

Карма: 16
Рейтинг сообщений: 329
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Сообщений: 2222
Откуда: Tashkent
Рейтинг сообщения: 0
vitalekmail писал(а):
Нужно загрузить картинку с флешки,

1. При большом желании да. Надо учесть отличия компиляторов. При необходимости внести изменения в коды библиотеки.
2. Подключить к проекту для атмеги можно преобразованные файлы через bmp2c или bin2c. Если картинка на внешней флешке, то побайтовым считыванием картинки в ОЗУ контроллера. Затем делайте с картинкой что хотите если вообще памяти контроллера для хранения хватит. Но я бы взял для графики хотя бы атмега64 с внешней микросхемой ОЗУ.
3. CImg похоже для компьютеров без дефицита памяти и производительности. При необходимости можно подсмотреть реализацию нужного алгоритма и написать своё с учётом ресурсов системы.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пт мар 03, 2017 11:18:15 
Вымогатель припоя

Зарегистрирован: Вт ноя 02, 2010 17:46:37
Сообщений: 574
Рейтинг сообщения: 0
Подскажите, можно ли про инициализировать массив не по порядку, а выборочно указать элементы инициализации
примерно как в структуре
Цитата:
.sn = {255, 255, 0, 0},
.gw = {192, 168, 0, 0},

Только для двухмерного массива
Код:
flash const long int array[2][7]={
   .[0]={123,1,2,3,......},
   .[1]={123,1,2,3,......}
};

На такое компилятор ругается.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пт мар 03, 2017 11:54:23 
Держит паяльник хвостом
Аватар пользователя

Карма: 11
Рейтинг сообщений: 43
Зарегистрирован: Вс май 23, 2010 13:55:42
Сообщений: 908
Откуда: Украина, Александрия
Рейтинг сообщения: 0
pokk писал(а):
На такое компилятор ругается.

Код:
   flash const long int array[2][7] = {
         { 123, 1, 2, 3, },
         { 123, 1, 2, 3, }
   };

_________________
«И всё-таки она вертится!»


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пт мар 03, 2017 16:38:34 
Вымогатель припоя

Зарегистрирован: Вт ноя 02, 2010 17:46:37
Сообщений: 574
Рейтинг сообщения: 0
Apparatchik, это и так понятно. акцент был
Цитата:
можно ли про инициализировать массив не по порядку


Цитата:
flash const long int array[2][7] = {
{ 123, 1, 2, 3, }, // Эта первая строка
{ 123, 1, 2, 3, } // Это нулевая строка
};


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

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


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

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


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

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


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