Комментарии 35
Первый опыт всегда дорог, особенно когда получилось так, как ты хотел. Так держать
+8
мой выбор остановился на плате AVR-USB-MEGA16 с микроконтроллером ATmega32 на борту.
Так какой же там все-таки контроллер, mega16 или mega32? И на схеме написано 16, а дальше в тексте — 32.
+1
У меня ATmega32. Схему брал из комплекта, возможно какая-то ошибка, либо плата поставляется в нескольких вариантах, но насколько я понял, по схеме подключения они не отличаются. Поправьте меня если я не прав.
+1
Да, они ничем не отличаются, кроме объема Flash, SRAM и EEPROM. А статья хорошая, желаю вам не останавливаться на достигнутом.
+2
Спасибо. Мне очень понравилось этим заниматься. Думаю это станет одним из моих любимых занятий :)
+2
Еще отличается таблицей векторов прерываний, то есть полностью по машинным кодам программ кристаллы несовместимы (так что для некоторых прошивок firmware потребуется перекомпиляция при переходе с ATmega16 на ATmega32 или обратно).
0
реклама простоплеера детектед!!!
А вообще огромное спасибо ) читал с удовольствием.
А вообще огромное спасибо ) читал с удовольствием.
0
Почему многие путают графический эквалайзер с индикатором уровня?
+4
Спасибо автору. Пост очень полезен, ибо давно планирую уже «спаять что-нибудь эдакое».
+1
Вот этот адовый говно говно код:
можно переписать примерно так:
«Web-погромисты», блин!
if (leftVolumeLevelPercent > 12) hundler.PORTA |= (1 << 0); else unchecked { hundler.PORTA &= ~(-1 << 0); }
if (leftVolumeLevelPercent > 24) hundler.PORTA |= (1 << 1); else unchecked { hundler.PORTA &= ~(-1 << 1); }
if (leftVolumeLevelPercent > 36) hundler.PORTA |= (1 << 2); else unchecked { hundler.PORTA &= ~(-1 << 2); }
if (leftVolumeLevelPercent > 48) hundler.PORTA |= (1 << 3); else unchecked { hundler.PORTA &= ~(-1 << 3); }
if (leftVolumeLevelPercent > 60) hundler.PORTA |= (1 << 4); else unchecked { hundler.PORTA &= ~(-1 << 4); }
if (leftVolumeLevelPercent > 72) hundler.PORTA |= (1 << 5); else unchecked { hundler.PORTA &= ~(-1 << 5); }
if (leftVolumeLevelPercent > 84) hundler.PORTA |= (1 << 6); else unchecked { hundler.PORTA &= ~(-1 << 6); }
if (leftVolumeLevelPercent > 96) hundler.PORTA |= (1 << 7); else unchecked { hundler.PORTA &= ~(-1 << 7); }
можно переписать примерно так:
for (int i = 0; i < 8; ++i)
if (leftVolumeLevelPercent > 12 * (i + 1)) hundler.PORTA |= (1 << i); else unchecked { hundler.PORTA &= ~(-1 << i); }
«Web-погромисты», блин!
0
А Вы пробовали? Не выйдет.
0
Шо, неужели хваленый мелкомягкий Си с квадратиком не умеет побитовые сдвиги от переменной?
+2
Вот так попробуйте:
short int PortState = 0;
for (int i = 1; i <= 8; ++i)
{
if (leftVolumeLevelPercent > 12 * i)
{
PortState <<= 1;
PortState |= 0x01;
}
}
hundler.PORTA = PortState;
+4
Вот так хорошо :) Спасибо. Заменю в статье, только byte PortState = 0; наверное.
0
Что-то мне кажется это всегда будет сдвигать на один.
Кстати как вариант можно двигать тоже в цикле.
Что-то типа
Кстати как вариант можно двигать тоже в цикле.
Что-то типа
for (int i = 1; i <= 8; ++i)
{
for (int j = 1; j <= i; ++j) {
if (leftVolumeLevelPercent > 12 * (i + 1)) {
hundler.PORTA |= (1 << 1);
}
else {
unchecked {
hundler.PORTA &= ~(-1 << 1);
}
}
}
}
0
Если на обычной макетке собрать, как здесь usbdev.org.ru/?p=usbsetled наверное дешевле будет)
0
НЛО прилетело и опубликовало эту надпись здесь
В этой статье, кстати, и описывается процесс сборки подобного устройства. Ничего сложного. Я тоже сейчас пытаюсь собрать еще одну такую, только сам, но у меня проблемы с поиском «ингредиентов». На нашем радио рынке нет МК ATmega вообще, а заказывать где-то не очень хочется. Программировать PIC'и нет никакого желания.
0
И софт используется точно такой же, как я описал, т.е. библиотека V-USB.
0
И кстати да, никакой это не «эквалайзер» же!
0
Я когда маленький был (год эдак 2001, кхм), стырил у папы удлинитель USB, отрезал один конец, зачистил все провода, взял старый вентилятор для корпуса, отрезал молекс, зачистил провода, а затем методом проб и ошибок нашел питание и землю в кабеле :) Получился вентилятор, за создание которого меня наругали очень сильно :( Но все равно я был горд собой, хоть и не понимал, что запитать что-нибудь от USB и разработать USB-устройство — вещи абсолютно разные.
+1
НЛО прилетело и опубликовало эту надпись здесь
Нужна статья как собрать такое самому?
0
НЛО прилетело и опубликовало эту надпись здесь
we.easyelectronics.ru/electro-and-pc/usb-dlya-avr-chast-1-vvodnaya.html
we.easyelectronics.ru/electro-and-pc/usb-dlya-avr-chast-2-hid-class-na-v-usb.html
Ну и вот тут
we.easyelectronics.ru/blog/electro-and-pc/
Есть и про эзернет, и про FTDI и всякие извраты вроде LabView
we.easyelectronics.ru/electro-and-pc/usb-dlya-avr-chast-2-hid-class-na-v-usb.html
Ну и вот тут
we.easyelectronics.ru/blog/electro-and-pc/
Есть и про эзернет, и про FTDI и всякие извраты вроде LabView
0
Кошка мяукнула очень в ритм.
+1
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Разработка своего первого USB устройства. Маленький шаг вперед