| Форум РадиоКот 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-устройство. Прошу помощи в объединении этих двух проектов и оптимизации кода, ибо сам не справился... Вложение: Вложение: 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 Но студия вываливается с ошибками. Вот сам проект: Вложение:
|
|
| Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|


