http://img.radiokot.ru/files/113737/med ... l61kq3.GIF
Оптимизация кода и объединение двух проектов в один
- Сообщения: 14
- Зарегистрирован: Пн фев 29, 2016 13:19:10
Добрый день! Есть у меня одна задача для начинающего: сделать шестиканальный вольтметр с индикацией на HD44780 и передачей на ПК по USb. (схема прилагается - не плеваться, делал сам). Решил сразу писать на си (основы ассемблера знаю). Проблема в том что у меня получилось как бы два проекта: один чистый вольтметр на 6 каналов и индикацией (еле-еле справился), в второй передача данных по usb (нашел статью с разбором и исходником). В системе usb определяется как hid-устройство. Прошу помощи в объединении этих двух проектов и оптимизации кода, ибо сам не справился...
http://img.radiokot.ru/files/113737/med ... l61kq3.GIF
http://img.radiokot.ru/files/113737/med ... l61kq3.GIF
- Реклама
- Сообщения: 1525
- Зарегистрирован: Чт июн 10, 2010 20:11:19
А на каком языке вы пытаетесь писать? Для usb-hid используется avr-gcc, да еще устаревший, а для вольтметра - cvavr что ли, к тому же, с кривым форматированием.
Выберите один язык (диалект) и напишите на нем.
Таким образом, есть 3 варианта:
1. Ждать альтруистов
2. Идти в раздел "работа"
3. Разбираться. Вот в этом вам тут помогут, главное продемонстрируйте что готовы учиться.
Выберите один язык (диалект) и напишите на нем.
А мне кажется, что у _вас_ получилось не более 0.5 проекта: реализация usb-hid утащена с easyelectronics вообще без изменений, а в вольтметре больше половины занимают стандартные cvavr (или еще какие) библиотеки.Проблема в том что у меня получилось как бы два проекта
Таким образом, есть 3 варианта:
1. Ждать альтруистов
2. Идти в раздел "работа"
3. Разбираться. Вот в этом вам тут помогут, главное продемонстрируйте что готовы учиться.
- Сообщения: 14
- Зарегистрирован: Пн фев 29, 2016 13:19:10
Мне все-таки ближе 3 вариант. Вольтметр написан под cvavr, и писать буду на нем. По сути чтобы реализовать usb-hid мне достаточно вместо 3 байт для передачи состояния светодиода сделать 6 для передачи значения каждого канала при опросе от ПК? Или лучше сделать 6 буферов, в которые писать значения каждого измерения, а затем, при опросе ПК их туда отправлять?
- Сообщения: 1525
- Зарегистрирован: Чт июн 10, 2010 20:11:19
Хорошо. А собрать usb-hid на нем удалось? Кстати, надеюсь, cvavr выбран не ради автоконфигуратора? А то он ужасен...Tol19 писал(а):Мне все-таки ближе 3 вариант. Вольтметр написан под cvavr, и писать буду на нем.
Если я правильно помню (а смотрел я давно, так что запросто могу ошибаться), по стандарту передавать больше 8 байт за раз нельзя. АЦП в AVR-ках 10-битный, так что можно разделить 6 каналов на 2 посылки по 3 измерения. Например, 3 старших бита - номер канала, потом 3 бита пустых и 10 бит данных. Можно добавить oversampling и поднять точность до 13 бит, например, тогда пустого места в посылках не останется.Tol19 писал(а): По сути чтобы реализовать usb-hid мне достаточно вместо 3 байт для передачи состояния светодиода сделать 6 для передачи значения каждого канала при опросе от ПК? Или лучше сделать 6 буферов, в которые писать значения каждого измерения, а затем, при опросе ПК их туда отправлять?
Опрашивать АЦП, наверное, лучше в прерывании.
На чем будете писать программу на стороне ПК и что она будет уметь делать?
Если Вы про HID, то ошибаетесь. А на счет V-USB я ничего не знаю.COKPOWEHEU писал(а):Если я правильно помню (а смотрел я давно, так что запросто могу ошибаться), по стандарту передавать больше 8 байт за раз нельзя.
- Реклама
Ошибаетесь.COKPOWEHEU писал(а): Если я правильно помню (а смотрел я давно, так что запросто могу ошибаться), по стандарту передавать больше 8 байт за раз нельзя.
Предел для HID USB - 64 байта за 1 кадр (1 мс) в одну сторону. То есть 64 кбайт/сек.
- Сообщения: 14
- Зарегистрирован: Пн фев 29, 2016 13:19:10
USB-HID собрал, работает, с этим нет проблем. на easyelectronics для программы на ПК используют С++. Я попробую использовать C#. По сути, данное устройство является попыткой написать заново USB-осциллографа: http://cxem.net/izmer/izmer77.php. В том случае, исходник программы был написан на C#, я оставил только работу с библиотекой связи с USB, остальное переписал с нуля используя компонент zedgraph. По сути ПК принимает от устройства буфер из точек, и соединяет их линией. В новом устройстве чуть-чуть другая задача: рисовать осцилограмму на ПК одновременно с 6 каналов на разных графиках, и контроллировать заданный уровень напряжения на канале. Если он становится меньше, на ПК выходит предупреждение. Вот ка-то в краткости так...
- Сообщения: 1525
- Зарегистрирован: Чт июн 10, 2010 20:11:19
Спасибо что поправили.
Тогда можно слать все 6 каналов одним пакетом. Впрочем, 6 каналов по 10 бит это 60 бит или чуть менее 8 байт, так что и в 8-байтный пакет уложиться можно если сжимать.
Тогда можно слать все 6 каналов одним пакетом. Впрочем, 6 каналов по 10 бит это 60 бит или чуть менее 8 байт, так что и в 8-байтный пакет уложиться можно если сжимать.
- Сообщения: 14
- Зарегистрирован: Пн фев 29, 2016 13:19:10
Тогда посоветуйте, пожалуйста, в каком направлении дальше двигаться
- Сообщения: 1525
- Зарегистрирован: Чт июн 10, 2010 20:11:19
Обработка АЦП и запись результатов в буфер.
По запросу хоста собирать их в пакет и выдавать по usb.
Раз в определенное время обновлять информацию на ЖК. Можно добавить условие, что информация в буферах должна измениться, но это уже к оптимизации.
В чем проблема-то?
По запросу хоста собирать их в пакет и выдавать по usb.
Раз в определенное время обновлять информацию на ЖК. Можно добавить условие, что информация в буферах должна измениться, но это уже к оптимизации.
В чем проблема-то?
- Сообщения: 14
- Зарегистрирован: Пн фев 29, 2016 13:19:10
Проблема в том, что вольтметр собран под codevision, а вот usb-hid под avr studio. Помогите разобраться, как перенести вольтметр из codevision? Как прикрутить библиотеки к проекту?
- Сообщения: 1525
- Зарегистрирован: Чт июн 10, 2010 20:11:19
То есть все-таки не собрали usb-hid в cvavr.Tol19 писал(а):USB-HID собрал, работает, с этим нет проблем.
В чем именно вопрос? Как добавить файл исходного кода к проекту, как вообще писать на Си или даташитовские способы работы с АЦП?Помогите разобраться, как перенести вольтметр из codevision? Как прикрутить библиотеки к проекту?
- Сообщения: 14
- Зарегистрирован: Пн фев 29, 2016 13:19:10
Нет не получилось, так как вариант usb-hid под cvavr не сможет работать (вычитано на просторах сети), только в avrstudio. Поэтому я хочу в готовый код usb-hid дописать вольтметр и индикацию. И основная проблема в индикации, так как у меня не получается работать в avrstudio с библиотекой lcd.h от cvavr
а вы не используйте библиотеки от CVAVR, а используйте библиотеки под AVR-GCC, например, вот такTol19 писал(а):основная проблема в индикации, так как у меня не получается работать в avrstudio с библиотекой lcd.h от cvavr
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Сообщения: 14
- Зарегистрирован: Пн фев 29, 2016 13:19:10
Нашел один пример: http://radioparty.ru/prog-avr/program-c ... on-lib-lcd Но студия вываливается с ошибками. Вот сам проект:



