Что мешает сделать подержку USB непосредственно в Atmega328, хотя бы и программно с помощью библиотек?

Если взять любую ардуину, которая построена на Atmega328, то там помимо самой атмеги, есть еще и какая-то микросхема для USB-UART.

В частности это может быть Atmega16u2, и получается что на плате сразу 2 микроконтроллера.

Но почему нельзя просто саму Atmega328p подключить к USB и сделать для не специальную прошивку, которая позволит пусть медленно, но обмениваться данными. Что мешает прочитать сигнал с D+/D- или записать его туда, непонятно.
1 год назад от Алексей Иванов

2 Ответы

0 голосов
USB интерфейс очень сложный для софтверной эмуляции, ядро будет почти полностью загружено обслуживанием протокола (и то, самых примитивных низкоскоростных из профилей USB, типа USB HID) , на другие основные задачи ресурсов будет крайне недостаточно.
поэтому аппаратный модуль USB ( как и все аппаратные модули) разгружает ядро для выполнения основного функционала программы.
и потом, для передачи данный D+ D - нужен всё же настоящий дифференциальный приёмо-передатчик, а не псевдо-эмуляция на обычных логических пинах.
1 год назад от RemonaBlunds
0 голосов
И зачем? Нужно это редко, а атмега - штука тупенькая, это большая нагрузка. Проще использовать внешний контроллер и работать через какой-нибуть юарт, или типа того. Что и делается.
1 год назад от сергей семёнов

Связанные вопросы