Например TDA7294

Форум РадиоКот :: Просмотр темы - Оптимизация кода и объединение двух проектов в один
Форум РадиоКот
https://radiokot.ru/forum/

Оптимизация кода и объединение двух проектов в один
https://radiokot.ru/forum/viewtopic.php?f=57&t=137743
Страница 1 из 1

Автор:  Tol19 [ Вс ноя 06, 2016 16:48:24 ]
Заголовок сообщения:  Оптимизация кода и объединение двух проектов в один

Добрый день! Есть у меня одна задача для начинающего: сделать шестиканальный вольтметр с индикацией на HD44780 и передачей на ПК по USb. (схема прилагается - не плеваться, делал сам). Решил сразу писать на си (основы ассемблера знаю). Проблема в том что у меня получилось как бы два проекта: один чистый вольтметр на 6 каналов и индикацией (еле-еле справился), в второй передача данных по usb (нашел статью с разбором и исходником). В системе usb определяется как hid-устройство. Прошу помощи в объединении этих двух проектов и оптимизации кода, ибо сам не справился...

Вложение:
Hid устройство usb.rar [152.3 KiB]
Скачиваний: 176

Вложение:
Вольтметр.rar [68.58 KiB]
Скачиваний: 167

http://img.radiokot.ru/files/113737/med ... l61kq3.GIF

Автор:  COKPOWEHEU [ Вс ноя 06, 2016 17:19:27 ]
Заголовок сообщения:  Re: Оптимизация кода и объединение двух проектов в один

А на каком языке вы пытаетесь писать? Для usb-hid используется avr-gcc, да еще устаревший, а для вольтметра - cvavr что ли, к тому же, с кривым форматированием.
Выберите один язык (диалект) и напишите на нем.
Цитата:
Проблема в том что у меня получилось как бы два проекта
А мне кажется, что у _вас_ получилось не более 0.5 проекта: реализация usb-hid утащена с easyelectronics вообще без изменений, а в вольтметре больше половины занимают стандартные cvavr (или еще какие) библиотеки.
Таким образом, есть 3 варианта:
1. Ждать альтруистов
2. Идти в раздел "работа"
3. Разбираться. Вот в этом вам тут помогут, главное продемонстрируйте что готовы учиться.

Автор:  Tol19 [ Вс ноя 06, 2016 17:30:45 ]
Заголовок сообщения:  Re: Оптимизация кода и объединение двух проектов в один

Мне все-таки ближе 3 вариант. Вольтметр написан под cvavr, и писать буду на нем. По сути чтобы реализовать usb-hid мне достаточно вместо 3 байт для передачи состояния светодиода сделать 6 для передачи значения каждого канала при опросе от ПК? Или лучше сделать 6 буферов, в которые писать значения каждого измерения, а затем, при опросе ПК их туда отправлять?

Автор:  COKPOWEHEU [ Вс ноя 06, 2016 17:48:58 ]
Заголовок сообщения:  Re: Оптимизация кода и объединение двух проектов в один

Tol19 писал(а):
Мне все-таки ближе 3 вариант. Вольтметр написан под cvavr, и писать буду на нем.

Хорошо. А собрать usb-hid на нем удалось? Кстати, надеюсь, cvavr выбран не ради автоконфигуратора? А то он ужасен...
Tol19 писал(а):
По сути чтобы реализовать usb-hid мне достаточно вместо 3 байт для передачи состояния светодиода сделать 6 для передачи значения каждого канала при опросе от ПК? Или лучше сделать 6 буферов, в которые писать значения каждого измерения, а затем, при опросе ПК их туда отправлять?

Если я правильно помню (а смотрел я давно, так что запросто могу ошибаться), по стандарту передавать больше 8 байт за раз нельзя. АЦП в AVR-ках 10-битный, так что можно разделить 6 каналов на 2 посылки по 3 измерения. Например, 3 старших бита - номер канала, потом 3 бита пустых и 10 бит данных. Можно добавить oversampling и поднять точность до 13 бит, например, тогда пустого места в посылках не останется.
Опрашивать АЦП, наверное, лучше в прерывании.
На чем будете писать программу на стороне ПК и что она будет уметь делать?

Автор:  Z_h_e [ Вс ноя 06, 2016 17:54:26 ]
Заголовок сообщения:  Re: Оптимизация кода и объединение двух проектов в один

COKPOWEHEU писал(а):
Если я правильно помню (а смотрел я давно, так что запросто могу ошибаться), по стандарту передавать больше 8 байт за раз нельзя.
Если Вы про HID, то ошибаетесь. А на счет V-USB я ничего не знаю.

Автор:  КРАМ [ Вс ноя 06, 2016 18:09:45 ]
Заголовок сообщения:  Re: Оптимизация кода и объединение двух проектов в один

COKPOWEHEU писал(а):
Если я правильно помню (а смотрел я давно, так что запросто могу ошибаться), по стандарту передавать больше 8 байт за раз нельзя.

Ошибаетесь.
Предел для HID USB - 64 байта за 1 кадр (1 мс) в одну сторону. То есть 64 кбайт/сек.

Автор:  Tol19 [ Вс ноя 06, 2016 18:38:38 ]
Заголовок сообщения:  Re: Оптимизация кода и объединение двух проектов в один

USB-HID собрал, работает, с этим нет проблем. на easyelectronics для программы на ПК используют С++. Я попробую использовать C#. По сути, данное устройство является попыткой написать заново USB-осциллографа: http://cxem.net/izmer/izmer77.php. В том случае, исходник программы был написан на C#, я оставил только работу с библиотекой связи с USB, остальное переписал с нуля используя компонент zedgraph. По сути ПК принимает от устройства буфер из точек, и соединяет их линией. В новом устройстве чуть-чуть другая задача: рисовать осцилограмму на ПК одновременно с 6 каналов на разных графиках, и контроллировать заданный уровень напряжения на канале. Если он становится меньше, на ПК выходит предупреждение. Вот ка-то в краткости так...

Автор:  COKPOWEHEU [ Вс ноя 06, 2016 19:09:48 ]
Заголовок сообщения:  Re: Оптимизация кода и объединение двух проектов в один

Спасибо что поправили.
Тогда можно слать все 6 каналов одним пакетом. Впрочем, 6 каналов по 10 бит это 60 бит или чуть менее 8 байт, так что и в 8-байтный пакет уложиться можно если сжимать.

Автор:  Tol19 [ Вс ноя 06, 2016 20:20:34 ]
Заголовок сообщения:  Re: Оптимизация кода и объединение двух проектов в один

Тогда посоветуйте, пожалуйста, в каком направлении дальше двигаться

Автор:  COKPOWEHEU [ Вс ноя 06, 2016 21:14:47 ]
Заголовок сообщения:  Re: Оптимизация кода и объединение двух проектов в один

Обработка АЦП и запись результатов в буфер.
По запросу хоста собирать их в пакет и выдавать по usb.
Раз в определенное время обновлять информацию на ЖК. Можно добавить условие, что информация в буферах должна измениться, но это уже к оптимизации.
В чем проблема-то?

Автор:  Tol19 [ Вт ноя 08, 2016 20:06:09 ]
Заголовок сообщения:  Re: Оптимизация кода и объединение двух проектов в один

Проблема в том, что вольтметр собран под codevision, а вот usb-hid под avr studio. Помогите разобраться, как перенести вольтметр из codevision? Как прикрутить библиотеки к проекту?

Автор:  COKPOWEHEU [ Ср ноя 09, 2016 00:09:16 ]
Заголовок сообщения:  Re: Оптимизация кода и объединение двух проектов в один

Tol19 писал(а):
USB-HID собрал, работает, с этим нет проблем.
То есть все-таки не собрали usb-hid в cvavr.
Цитата:
Помогите разобраться, как перенести вольтметр из codevision? Как прикрутить библиотеки к проекту?
В чем именно вопрос? Как добавить файл исходного кода к проекту, как вообще писать на Си или даташитовские способы работы с АЦП?

Автор:  Tol19 [ Ср ноя 09, 2016 20:08:15 ]
Заголовок сообщения:  Re: Оптимизация кода и объединение двух проектов в один

Нет не получилось, так как вариант usb-hid под cvavr не сможет работать (вычитано на просторах сети), только в avrstudio. Поэтому я хочу в готовый код usb-hid дописать вольтметр и индикацию. И основная проблема в индикации, так как у меня не получается работать в avrstudio с библиотекой lcd.h от cvavr

Автор:  ARV [ Ср ноя 09, 2016 20:12:01 ]
Заголовок сообщения:  Re: Оптимизация кода и объединение двух проектов в один

Tol19 писал(а):
основная проблема в индикации, так как у меня не получается работать в avrstudio с библиотекой lcd.h от cvavr
а вы не используйте библиотеки от CVAVR, а используйте библиотеки под AVR-GCC, например, вот так

Автор:  Tol19 [ Ср ноя 09, 2016 20:37:14 ]
Заголовок сообщения:  Re: Оптимизация кода и объединение двух проектов в один

Нашел один пример: http://radioparty.ru/prog-avr/program-c ... on-lib-lcd Но студия вываливается с ошибками. Вот сам проект:
Вложение:
GccApplication3.rar [16.53 KiB]
Скачиваний: 157

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/