![](https://electronix.ru/forum/uploads/set_resources_23/84c1e40ea0e759e3f1505eb1788ddf3c_pattern.png)
![](https://electronix.ru/forum/uploads/set_resources_23/84c1e40ea0e759e3f1505eb1788ddf3c_default_photo.png)
uragan90
-
Постов
210 -
Зарегистрирован
-
Посещение
Сообщения, опубликованные uragan90
-
-
winipuh
Да ничего страшного!
Обзывайтесь :-)
Я новичёк ещё в сим деле, хоть и стар уже!!!
А вам Спасибо, за ваш труд!!!!
Но пишу я на чистом "си" где нет никаких классов!
И пишу пока как видите плохо, но я верю в то что когда нибуть стану писать значительно лучше
-
Понемемаете мне нужна функция тестовая которая в массив сложила жы синус, два канала, причём первый канал был бы в старшем, а второй в младшем байтах двух байтового слова!
И я мог бы обратится к этому массиву из других функций!
Тоесть взять индекс массива mass;
И в этом индексе массива были бы данные синуса для двух каналов.
Ещё раз повторяю, что это тестовая функция и она нужна лишь для теста других функций в программе!
В реале значения будут братся не из этой тестовой функции, а с реальных АЦП
-
Написал для теста в Dev-C++ код который бы должен был по идеи вывести значения в отдельный файл txt
Но не прокатывает
В файл пишется ерунда всякая, но не то что ожидалось...
#include <iostream> #include <fstream> #include <math.h> using namespace std; typedef union { unsigned short data; struct { unsigned char left; unsigned char right; } chan; } stereo_sample_t; struct sine_param { float amp_vol; float period; }; static unsigned char get_sine_sample(const struct sine_param *p, int i) { return 128u + (unsigned char)(p->amp_vol * sin(M_PI * p->period * i)); } static int sine_test(stereo_sample_t buf[], int num_samples) { struct sine_param left_ch = {65, 20}; struct sine_param right_ch = {45, 30}; int i; for(i = 0; i < num_samples; i++) { buf[i].chan.left = get_sine_sample(&left_ch, i); buf[i].chan.right = get_sine_sample(&right_ch, i); } } int main(void) { ofstream File1; File1.open("C:/MasCH1.txt"); stereo_sample_t Massine[8000] = {0}; sine_test(Massine, sizeof(Massine) / sizeof(Massine[0])); for(int i = 0; i < sizeof(Massine) / sizeof(Massine[0]); i++) { File1 << Massine[i].data << endl; } File1.close(); }
-
winipuh
Спасибо вам огромное!!!
-
Опубликовано · Изменено пользователем Herz
Избыточное цитирование · ПожаловатьсяСпасибо!!!
Ну может и перемудрил конечно!
M_PI не знал спасибо!
Автор! Поаккуратнее с цитированием! Для того, чтобы сказать "спасибо" не обязательно бездумно копировать весь предыдущий пост кнопкой "Reply".
От себя добавлю, что если Вы так же грамотно и внимательно пишете на С, как на русском, то удивляться совершенно нечему...
-
От этой ошибки удалось иавится!
Теперь ругается на обьявление
chn channel;
пишет что ранее обьявлен мог быть...
Да что за фигня то?
union
в кейле так и не удалось попробовать!
-
Пишет что не нравится ему что float с int мешаю или типа того!
но мне нужно синусойду в двух каналах по байту каждая запихать в слово двух байтовое
-
Здравствуйте уважаемые!
Написал такой вот код в keil 4.73
А он не компилируется не в какую, где может быть косяк???
#include <math.h> unsigned int Massine[8000]; typedef union{ int ch1_ch2; char ch[2]; }chn; void sinetest(void) { float ampvol_ch1 = 65; float period_ch1 = 20; //----------------------------------------- float ampvol_ch2 = 45; float period_ch2 = 30; //----------------------------------------- float pi = 3.14; int index = 8000; int i = 0; //----------------------------------------- chn channel; for(i=0; i<index; i++) { channel.ch[0] = 128 + (ampvol_ch1*sin(i*pi*period_ch1)); channel.ch[1] = 128 + (ampvol_ch2*sin(i*pi*period_ch2)); Massine[i] = channel.ch1_ch2; } }
Интересует правильность синтексиса!
А то я в майне вызываю эту функцию чтоб она заполнила массив, а код не компилируется!
Но ведь с виду ошибок не вижу
-
iosifk,
Спасибо огромное!!!
Я уже читал рание эти труды!
А тут вы напомнили и у меня родилась идея... Ща попробую написать на Veriloge :08:
-
В принципе можно. У меня на сайте найдите "Краткий Курс", глава о многопоточности...
Выглядеть будет так:
Кольцевой регистр 30 раз по 12 разрядов (или память) в котором хранятся пороги сравнения, еще один такой-же + к нему аккумулятор для инкремента значений, 1 схема сравнения, 12 RS триггеров и немного управления...
Кольцо переписываете по кругу, 1 регистр сравниваете и выход сравнения записываете в выходной триггер, соотв. номеру канала...
А схема управления по очереди взводит RS триггера.
Оооо!
Спасибо!!!
Надо попробовать, хоть какая то мысль интересная :-)
-
Да! Я в курсе "ерм" не суть важно по токовым режимам, можно задействовать несколько ног на один канал если можно :-)
Да и не в этом дело, можно ULN2003 поставить для уверенности, самое главное шим реализовать или как вы предложили сигма-дельта модулятор но он жрёт больше ресурсов чем шим!!!
Сумматор в нём сложнее устроен чем компаратор
Я просто не соображу можно ли сделать многоканальный шим на одном только модуле шима, раскидывая его по каналам с помощью например счётчика и демультиплексора?
Или нужно шимить все каналы своим модулем шима?
-
Это конечно всё здорово драйверы и прочее, но я уже заразился интересом реализации такого драйвера на плис попробую сам заделать.
Структуру драйвера глянул в даташите, осталось по структурной схеме драйвера сбацать свой :-)
-
Ооо! Спасибо!!!
Действительно то что нужно :-)
-
Здавствуйте Уважаемые!!!
Помогите выбрать правельный подход для реализации шим процессора на ПЛИС.
Я хочу связать avr и плис по spi для того чтоб управлять десятком "РГБ" светодиодов, но у меня не хватает ресурсов плис, а именно epm540 может есть какое нибудь экономичное решение данной проблемы???
Я делаю так:
В плис создал сдвиговой регистр по принципу 74hc595 150bit в него гружу код всех 30 каналов шима, по 5 на канал цвета, счётчик 12bit (шим 12 бит) и 30 компараторов которые из регистра выделяют шим на каждый канал цвета (всего 30 каналов).
Всё это кушает огромное кол-во LE.
Вопрос:
Каким образом снизить количество лэ для подобного дела???
-
Жильё предастовляется? :-)
-
Подскажите САПР, который умеет это делать автоматически (расставлять виасы вдоль свч и протыкать земляные полигоны с заданной плотностью).
Ручками куда приятнее и качественнее!
Плата свч - это искувство требуещее постоянного контроля мастера...
-
Ех жаль нет трамвая "Самара - Тверь" но если что удалённое появится то милости просим
icq: 424619469
-
-
Опубликовано · Изменено пользователем Herz
Избыточное цитирование · ПожаловатьсяНайдите старенький или не очень, но живой или не особо :-) ... зарядник от ноутбука..... и счастье!!!!!
-
рано или поздно вам такое упрощение аукнется, мало не покажется. тем более что у вас платы большие цифровые и скорее все многослойные.
Ну от чего же такой поспешный вывод делаете? Функция нужная, на крайняк просто не используй её!
Но я вижу ето примерно так:
У каждого УГО есть возможность выбрать параметор (Mode), я через mode делаю разные логические элементы типа отечественный стандарт лог.элемента И-НЕ и зарубежный.
Почему бы через mode не делать так же и с такими "мульти"выводами?
Рисуешь элемент стандартный где каждый вывод как сейчас приклеен к паду, а в mode можешь представить его иначе но ето представление не сможет что либо изменить с присвоениями кроме визуального изображения на схеме, тем более ЕСКД не противоречит...
-
Опубликовано · Изменено пользователем uragan90 · Пожаловаться
Вывести выводы инверторов на реальные пины плисы и на плате их соединить последовательно!
Для 31 инвертора потребуется 60 пина всего...
Но ето так :-)
Ради шутки юмара ))))
-
Спасибо!!!
Это силино бы упростило создание схем и не нагружало бы схему лишней информацией особенно если схема большая и очень цифровая :-)
-
Создаю уго цифровой микросхемы в которой присудствует шина адреса и данных.
И нет вроде проблем если накидать на форму кучу выводов с именами D0, D1, ... D15., A0...A7.
Каждый вывод прикрепится к своему паду на плате в таком случае.
Вопрос:
А нельзя ли каким либо образом или техникой сделать так чтоб на УГО микросхемы был лишь один вывод для данных называемый D[15..0] и при подключении к нему шины каждый из проводников в шине подключался к своему паду на плате, но на схеме выглядел как "мультивывод" с подключеной шиной D[15..0]???
-
Попробуйте генеретор начального кода использовать, у stm есть такой, есть и сторонние...
Поищите в сети!
Злой код
в ARM, 32bit
Опубликовано · Пожаловаться
toweroff
Во дворе весь день стучат
Двое стриженых внучат.
Дед им вынес настоящий
С круглой шляпкой молоток:
- Вот, ребята, сбейте ящик
Из распиленных досок.
Яша стукнул по доске,
А попало по руке.
Больно пальцу - не беда,
Так бывает иногда.
Белой тряпочкой завязан
Средний палец у него.
Но и к деду ведь не сразу
Приходило мастерство.
Повнимательнее будь,
К мастерству не лёгок путь!
Взял Никита молоток
И ударил ловко.
Покосилась только вбок
У гвоздя головка.
Покосилась - не беда.
Так бывает иногда.
- Не беда, что у ребят,
Как заметил кто-то,
Ящик вышел кривоват, -
Первая работа!
Главное по спокойнее!
Вы не дали не одного умного совета даже и на грамм, но умника стриите на целый киллограм!
ВИНИПУХУ огромное спассибо за науку!!!!!!