USB коннектор на AVR

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
slavik.ksu
Первый раз сказал Мяу!
Сообщения: 38
Зарегистрирован: Пн авг 01, 2011 21:59:21

USB коннектор на AVR

Сообщение slavik.ksu »

Здравствуйте уважаемые форумчане!
Похожей темы не нашел, поэтому решил создать новую :)
Работодатель дал задание, выкладываю первую часть задания, чтоб не путаться:
1. Процессор имеет каналы D+ и D- (вход) каналы В+ и B- (выход)
2. На каналы D+ и D- подаётся сигнал с частотой 1,5 Мгц. Этот сигнал должен проходить на каналы В+ и B- с задержкой не более 1 мкс. На выходе, между каналами, не должно быть задержки. (появление сигнала строго одновременно)
Напряжение питания 3,3 вольта.
Рекомендуемый кварц: см. в тех. задании. :)


Думаю каналы D+ и D- надо поставить на "внешнее прерывания" на ножки INT0 и INT1 и по прерыванию копировать значения например в порт В. правильно ли я мыслю?
На счет кварца:
Во первых надо посчитать сколько тактов займет обработчик прерывания:для входа в обработчик нужно не менее 4 тактов, плюс копирование с ножки INT0 в РегисторОН думаю 1 такт, плюс из РОН в порт В 1такт, ну и плюс 4 такта на выход из прерывания. и того 10 тактов. (думаю здесь точно нельзя подсчитать, но почемуто уверен на обработчик прерывания уйдет не более 20 тактов)
10 тактов за 1мкс = 1такт должен выполняться за 0,1мкс => кварц должен быть не менее 10МГц.
этот метод я придумал сам на логическом соображении, может есть какой другой способ подсчитать частоту кварца?
Реклама
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: USB коннектор на AVR

Сообщение Engineer_Keen »

В принципе расчет более менее верный, только вот непойму, нафига тут контроллер? Для решения этой задачи достаточно соеденить D+ с B+ и D- с B- :))) А если нужно делать что-то еще, то и расчет уже другой.
Реклама
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: USB коннектор на AVR

Сообщение Мурик »

slavik.ksu писал(а):умаю каналы D+ и D- надо поставить на "внешнее прерывания" на ножки INT0 и INT1
Вы забываете что USB это двунаправленная шина.
Поэтому линии В+ и B- тоже должны генерировать прерывание для трансляции данных из В в D.
Аватара пользователя
Kavka
Мудрый кот
Сообщения: 1810
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

Re: USB коннектор на AVR

Сообщение Kavka »

Да, и ещё надо определять смену направления передачи D->B или B->D.

Что-то я смысла практического не вижу в таком устройстве. Лаба?
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Реклама
Эиком - электронные компоненты и радиодетали
slavik.ksu
Первый раз сказал Мяу!
Сообщения: 38
Зарегистрирован: Пн авг 01, 2011 21:59:21

Re: USB коннектор на AVR

Сообщение slavik.ksu »

Выкладываю полностью задание:
Тема: "эмулятор кратковременного пропадания сигнала"
1. Процессор имеет каналы D+ и D- (вход) каналы В+ и B- (выход) и канал С (вход)
2. На каналы D+ и D- подаётся сигнал с частотой 1,5 Мгц. Этот сигнал
должен проходить на каналы В+ и B- с задержкой не более 1 мкс. На выходе,
между каналами, не должно быть задержки. (появление сигнала строго одновременно)

3. К каналу С подключена кнопка. При однократном нажатии на неё (устранить дребезг)
сигнал с каналов D+ и D- не должен передаваться на выходные
каналы В+ и B- на длительность 1 / 1,5Мгц сек. (+- 1/12000000).
При этом на выходных каналах должны присутствовать прежние уровни.
Допускается подключение светодиода для индикации нажатии кнопки.

Напряжение питания 3,3 вольта.
Рекомендуемый кварц: см. в тех. задании.

Жирным выделил оставшуюся часть задания.
Вроде написал я програмку для Atmega8515, частота кваца 10МГц.
Правда на ассемблере( а желательно на Си )
Каналы D соответствуют проту D, а выходы В - проту В. Вход С с кнопкой, это на ножке PortD 4!
Вопросы:
1) "устранить дребезг"
Я слышал что можно поставить задержку после нажатия на 20мс? и все, будет работать?

Но я сам пошел другим путем, сам такое придумал, еще нигде не встечал, поэтому не знаю правильно ли так делать?:
sbic PinD,4 ; проверяем нажатие кнопки
rjmp Start
sbis PinD,4 ; проверяем отжали ли кнопку
rjmp PC-1
Можно ли так "устранить дребезг"?
2) теперь про обработчик внешнего прерывания
я запустил прерывание по"нарастающему фронту", то есть получаестся когда на вход D подастся сигнал лог.1 только в этом случае будет записано зачение из порта D в В. Програмно я написал это так:
Vnesh0:
in signal, PortD ;
out PortB,signal ;
reti
Получается во всех остальных моментах на выходе должны быть записаны 0 в проту В ? как бы это сделать?
Прилагаю в файле програмку мою програмку
Вложения
USB_konnektor - копия.rar
(5.04 КБ) 147 скачиваний
Реклама
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»